试题详情
- 简答题说明C程序调用外部汇编模块的具体方法,并总结参数传递和汇编模块返回值的接口约定。分析C程序调用汇编模块前后的堆栈变化情况。
-
(1)C程序调用外部汇编模块的具体方法:调用程序和被调用的汇编过程必须使用相同的存储模型;汇编子程序的过程名和变量名都应说明为public且过程名和变量名前加下划线;在C中应将在本程序中用到的汇编子程序的过程名和变量名说明为外部过程和变量,并且不能在名字前加下划线。
(2)参数传递和汇编模块返回值的接口约定:通过堆栈传递参数(从右到左);传值时直接写出实际参数,传址时在extern说明语句中将参数类型说明成指针类型,并在调用时给出参数地址。返回值通过寄存器传递,16位返回值用AX,32位返回值用DX:AX,返回值大于32位则放到静态变量存储区(near调用时该数据的首地址存放在AX中,far调用时该数据的首地址存放在DX:AX中)。
(3)调用时将参数从右向左依次压入堆栈,再将返回地址压入堆栈;返回后将内容依次弹出即可。 关注下方微信公众号,在线模考后查看
热门试题
- 数据库管理系统能实现对数据库中数据的查询
- 试分析下面的程序段完成什么功能? MO
- 设SP初值为2000H,执行指令R
- STRING DB&lsquo
- 在编写汇编浯言程序时,常常对存储单元赋产
- 编程。将AX寄存器中的16位数分成4组,
- 当使用BP作编程地址时,此时使用的是()
- 软件是为了()、()和维护计算机而编制的
- 在下列语句中,AGAIN称为()。&e
- 编程序。将键盘输入的小写字母变为大写字母
- 汇编好的目标程序要经过连接和定义之后才能
- 将DX的内容除以2,正确的指令是()。
- BIOS中断显示字符串的指令是()。
- 可屏蔽中断就是它的请求是否被CPU响应要
- 什么是16位段和32位段?
- 求以下各十六进制数与62A8H之和,并
- 已知字母A的ASCII码为十进制数65,
- 标号是机器指令语句存放地址的符号表示,也
- ()是定义字节变量的。
- 下列指令中,()指令影响8086标志寄存