说明C程序调用外部汇编模块的具体方法,并总结参数传递和汇编模块返回值的接口约定。分析C程序调用汇编模块前后的堆栈变化情况

题目
问答题
说明C程序调用外部汇编模块的具体方法,并总结参数传递和汇编模块返回值的接口约定。分析C程序调用汇编模块前后的堆栈变化情况。
参考答案和解析
正确答案: (1)C程序调用外部汇编模块的具体方法:调用程序和被调用的汇编过程必须使用相同的存储模型;汇编子程序的过程名和变量名都应说明为public且过程名和变量名前加下划线;在C中应将在本程序中用到的汇编子程序的过程名和变量名说明为外部过程和变量,并且不能在名字前加下划线。
(2)参数传递和汇编模块返回值的接口约定:通过堆栈传递参数(从右到左);传值时直接写出实际参数,传址时在extern说明语句中将参数类型说明成指针类型,并在调用时给出参数地址。返回值通过寄存器传递,16位返回值用AX,32位返回值用DX:AX,返回值大于32位则放到静态变量存储区(near调用时该数据的首地址存放在AX中,far调用时该数据的首地址存放在DX:AX中)。
(3)调用时将参数从右向左依次压入堆栈,再将返回地址压入堆栈;返回后将内容依次弹出即可。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在实际应用中,一个较大的程序可以由几个模块组成,这些模块分别汇编成目标代码文件以后,再用链接程序把它们链接成一个可执行程序。这些模块连接时只有一个模块可以指出程序的启动地址,该模块称为______。


正确答案:主模块
主模块 解析:在实际应用中,往往把一个独立汇编的源程序称为。一个模块,一个较大的程序可以由几个模块组成,每个模块具有不同的功能。这些模块连接时只有一个模块可以指出程序的启动地址,该模块称为主模块。

第2题:

在汇编语言程序设计中,若调用不在本模块中的过程,则对该过程必须用伪操作命令( )进行说明。

A.PUBLIC

B.COMMON

C.EXTERN

D.ASSUME


正确答案:C

第3题:

在汇编程序设计中,如希望本模块中的某个过程被其他模块中的过程调用,则需在本模块中对此过程用伪操作命令( )说明。

A.COMMON

B.PUBLIC

C.EXTERN

D.FAR


正确答案:B
解析:PUBLIC 可以是①伪指令——段定义(组合类型)。该段与其他模块中说明为 PUBLIC类型的同名同‘类别’段组合起来,形成一个物理段(小于等于64K),公用一个段基址,②伪指令——定义全局符号。表示该模块中定义的哪些符号常量、变量、标号以及过程名(几个模块公用的过程一般都是FAR过程)等可以被其他模块所引用。

第4题:

在汇编语言设计中,若希望本模块中的某个过程被其他模块中的过程调用,则需要在本模块中对此过程用伪操作命令( )说明。

A.FAR

B.PUBLIC

C.COMMON

D.EXTERN


正确答案:A

第5题:

在汇编言程序设计中,若调用不在本模块中佝过程,则对该过程必须用伪操作命令( )进行说明。

A.PUBLIC

B.COMMON

C.EXFERN

D.ASSUME


正确答案:C

第6题:

在汇编语言程序设计中,若调用不在本模块中的过程,则对该过程必须用伪操作命令 ( )说明。

A.PUBLIC

B.COMMON

C.EXTERN

D.ASSUME


正确答案:C

第7题:

_____

A.汇编程序

B.目标程序

C.连接程序

D.模块化

A.

B.

C.

D.


正确答案:C
解析:编译程序将高级语言编写的程序翻译成目标程序后保存在另一个文件中,该目标程序经连接处理后可脱离源程序和编译程序而直接在机器上反复运行。解释程序是将翻译和运行结合在一起进行,翻译一段源程序后,紧接着就执行它,不保存翻译的结果。

第8题:

关于内存变量的调用,下列说法中正确的是( )。

A.私有变量只能被本层模块程序调用

B.私有变量能被本层模块和下层模块程序调用

C.局部变量不能被本层模块程序调用

D.局部变量能被本层模块和下层模块程序调用


正确答案:B
解析:在程序中直接使用(没有通过PUBLIC和LOCAL命令事先声明)而由系统自动隐含建立的变量都是私有变量。私有变量的作用域是建立它的模块及其下属的各层模块。局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。当建立它的模块程序运行结束时,局部变量自动释放,局部变量用 LOCAL命令建立。

第9题:

关于内存变量的调用,下列说法正确的是

A)局部变量能被本层模块和下层模块程序调用

B)私有变量能被本层模块和下层模块程序调用

C)局部变量不能被本层模块程序调用

D)私有变量只能被本层模块程序调用


正确答案:B
【答案】:B
【知识点】:全局变量、私有变量和局部变量分别能在哪些模块中使用
【解析】:在Visual FoxPro中,全局变量是指在任何模块中都可使用的变量;私有变量的作用域是建立它的模块及其下属的各层模块;局部变量只能在建立它的模块中使用,不能在上层或下层使用。

第10题:

某ARM汇编语言程序要调用子程序,子程序名为MySubrutine,则调用该子程序的指令为(15)___________________,子程序返回调用程序的指令为(16)___________________。


正确答案:BL MySubrutineMOV PC,LR

更多相关问题