没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
.
精选范本
第 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
Pusheax
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,4
Loop again
Ret
Crazy ENDP
习题 5.5
请按如下说明编写子程序:
子程序功能:把用 ASCII 码表示的两位十进制数转换为压缩 BCD 码。
入口参数:DH=十位数的 ASCII 码,DL=个位数的 ASCII 码
出口参数:AL=对应的 BCD 码
答:
asc2bcd proc
shl dh,4
and dl,0fh
or dh,dl
mov al,dh
ret
asc2bcd endp
习题 5.6
乘法的非压缩 BCD 码调整指令 AAM 执行的操作是:AH<-AL/10 的商,AL<-AL/10 的余数。
利用 AAM 可以实现将 AL 中的 100 内数据转换为 ASCII 码,程序如下:
Xor ah,ah
Aam
Add ax,3030h
利用这段程序,编写一个显示 AL 中数值(0~99)的子程序。
答:
suba proc
aam
add ax,3030h
xchgah,al
call dispc
剩余11页未读,继续阅读
资源评论
平头哥在等你
- 粉丝: 2
- 资源: 7461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
- C语言-leetcode题解之第166题分数到小数.zip
- C语言-leetcode题解之第165题比较版本号.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功