高级语言接口与16位MS - DOS编程
1. 高级语言与汇编语言的交互
在高级语言编程中,有时需要借助汇编语言来优化特定部分或针对特定硬件进行定制。有两种主要方法可以实现高级语言与汇编语言的交互:
- 内联汇编代码 :将汇编代码嵌入高级语言代码中。
- 链接汇编语言程序 :将汇编语言程序与高级语言代码进行链接。
1.1 参数传递与栈帧
在遵循C调用约定时,参数会以逆序压入栈中。以 ReadSector 过程为例,栈帧中离 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之间的整数。
超级会员免费看
订阅专栏 解锁全文
3

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



