高级语言接口与16位MS-DOS编程详解
1. 高级语言与汇编语言的交互
在高级语言编程中,汇编语言常被用于优化特定部分或针对特定硬件定制程序。与高级语言交互主要有两种方式:一是在高级语言代码中嵌入内联汇编代码;二是将汇编语言程序与高级语言代码进行链接。
1.1 参数传递与调用约定
当从高级语言调用汇编语言程序时,参数通常按照C调用约定以逆序压入栈中。例如,在某个程序中,距离EBP最远的是 numSectors ,它是第一个被压入栈的参数。 StartSector 是一个32位双字,在栈中占据 [bp+6] 到 [bp+09] 的位置。若程序为小内存模型编译, buffer 会作为16位近指针传递。
1.2 大随机整数示例
为展示从Borland C++调用外部函数的实用示例,可以调用 LongRandom 函数,它是一个汇编语言函数,能返回一个32位无符号伪随机整数。这很有用,因为Borland C++库中的标准 rand() 函数只能返回0到 RAND_MAX (32,767)之间的整数,而 LongRandom 函数能返回0到4,294,967,295之间的整数。
下面是调用 LongRandom 函数的C++主程序代码:
// main
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



