- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章-模块化程序设计.doc
第5章 模块化程序设计
5.1 简答题
(1)指令“CALL EBX”采用了指令的什么寻址方式?
寄存器间接寻址
(2)为什么MASM要求使用proc定义子程序?
(这个问题不好回答,是不是作者写错了?我猜测可能的原因: 在汇编语言中,函数、子程序等都称为过程,所以使用proc定义子程序 )
(3)为什么特别强调为子程序加上必要的注释?
便于程序员调用时使用,而不必关注子程序的内部实现。
(4)参数传递的“传值”和“传址”有什么区别?
传值是传递参数的拷贝,传址是传递参数的地址
(5)子程序采用堆栈传递参数,为什么要特别注意堆栈平衡问题?
保证正确返回;释放传递参数占用的堆栈空间,避免多次调用可能导致的堆栈溢出
(6)INCLUDE语句和INCLUDELIB有什么区别?
INCLUDE语句包含的是文本文件、是源程序文件的一部分;INCLUDELIB语句包含的是子程序库文件
(7)什么是子程序库?
子程序库就是子程序模块的集合,其中存放着各子程序的名称、目标代码以及有关定位信息,便于子程序的管理和调用
(8)调用宏时没有为形参提供实参会怎样?
缺少的实参,形参会做“空”处理。
(9)宏定义体中的标号为什么要用local为指令声明?
为了避免宏展开后出现标示符不唯一的情况,定义为局部。
(10)条件汇编不成立的语句会出现在可执行文件中吗?
不会。
5.2 判断题
(1)过程定义proc是一条处理器指令。
错,proc是伪指令
(2)CALL指令的执行并不影响堆栈指针ESP。
错,要改变,因为返回地址要压入堆栈
(3)call指令本身不能包含子程序的参数。
对。
(4) call指令用在调用程序中,如果被调用程序中也有call指令,说明出现了嵌套。
对。
(5)子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。
错,不能保护传递出口参数的寄存器
(6)利用INCLUDE包含的源文件实际上只是源程序的一部分。
对
(7)宏调用与子程序调用一样都要使用CALL指令实现。
错,宏调用是通过宏展开实现的调用,不用CALL指令
(8)宏定义与子程序一样一般书写与主程序之后。
错,宏需要先定义后调用,一般在源程序开头部分。
(9)重复汇编类似于宏汇编,需要先定义后调用。
错。
(10)条件汇编并不像条件转移指令那样使用标志作为条件
对。
5.3 填空题
(1)指令“RET i16”的功能相当于“RET”指令和“ADD ESP, __________”组合。
i16
(2)例5-1程序中的ret指令,如果用pop ebp和jmp ebp指令替换,则ebp内容是( )
0000000分
(3)子程序的参数传递主要有3种,它们是( )、( )和( )。
寄存器传递,共享变量传递,堆栈传递
(4)数值10在计算机内部用二进制“1010”编码表示,用十六进制表达是:____。如果将该编码加37H,则为_____,它是字符______的ASCII码值。
A,41H,A
(5)利用堆栈传递子程序参数的方法是固定的,例如寻址堆栈段数据的寄存器是_____。
EBP
(6)MASM汇编语言中,声明一个共用的变量应使用___伪指令;而使用外部变量要使用___伪指令声明。
PUBLIC,EXTERN
(7)过程定义开始是“TEST PROC”语句,则过程定义结束的语句是________。宏定义开始是“DISP MACRO”语句,则宏定义结束的语句是________。
TEST ENDP,ENDM
(8)一个宏定义开始语句“WriteChar MACRO CHAR:REQ”,则宏名是( ),参数有 ( ) 个,并且使用“:REQ”说明该参数( )。
WriteChar, 1 , 不可缺少
(9)实现“byte 20 dup(20h)”语句的功能也可以使用重复汇编,第1个语句是( ),第2个语句是“ byte 20h”,第3个语句是( )。
REPEAT 20, ENDM
(10)条件汇编语言语句“IF NUM LT 100”中的LT 表示( ),该语句需要配合( )语句结束条件汇编
小于, ENDIF
习题5.4
如下子程序完成对ECX个元素的数组(由EBX指向其首地址)的求和,通过EDX和EAX返回结果,但是程序有错误,请改正。
Crazy proc
Push eax
Xor eax,eax
Xor edx,edx
Again:
Add eax,[ebx]
Adc edx,0
Add ebx,4
Loop again
Ret
ENDP Crazy
答:
Crazy proc
Xor eax,eax
Xor edx,edx
Again:
Add eax,[ebx]
Adc edx,0
Add ebx
文档评论(0)