1. 2. 3. 4. 5. 6. 7. 8.
六.应用题 解答:
第5章 汇编语言程序设计
一.选择
1. 循环指令LOOP终止循环的条件是( )。
A.ECX=0 B. ECX=0,且ZF=0 C.ECX≠0,且ZF=0 D. ECX≠0,或ZF=1
2. 循环指令LOOPNZ终止循环的条件是( )。
A.ECX=0,或ZF=1 B. ECX=0,且ZF=0 C.ECX≠0,且ZF=0 D. ECX≠0,或ZF=1
3. LOOP指令执行时,隐含计数器是( )。
A. ESP B.EBX C. ECX D.EDI
4. 当A>B时转移的条件转移指令为(A、B为无符号数)( )。
A. JA B. JAE C. JG D. JGE
5. 当A>=B时转移的条件转移指令为(A、B为 有符号数)( )。
6. 条件转移指令JC Label的测试条件是( )。
A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1 A. JA B. JAE C. JG D. JGE
7. 若主程序通过堆栈向子程序传递了3个参数,子程序返回主程序时,在子程序中清除堆栈
中3个参数正确的RET指令是( )。
A. RET 3*1 B. RET 3*2 C. RET 3*3 D. RET 3*4
8. 主程序通过堆栈向子程序传递了3个参数,子程序调用结束后,在主程序中清除堆栈中3 个参数正确的指令是( )。
9. 条件转移指令JZ Label的测试条件是( )。
A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1 A. ADD ESP, 3*2 B. ADD ESP, 3*4 C. ADD EBP, 3*2 D. ADD EBP, 3*4
10. 利用堆栈传递子程序参数的方法是固定的,若主程序通过堆栈向子程序传递了3个参数, 则在子程序中, 主程序中最后一个被压入栈中的参数可以用( )的形式来访问。
A. [EBP-4] B. [EBP-8] C. [EBP+4] D. [EBP+8]
11. 通过堆栈传递参数,在子程序中使用EBP间址取得参数的原因是( )。
A. EBP没有被占用 B. EBP间址速度较快 C. EBP间址默认的段是堆栈段 D. EBP是基址指针
12. 通过寄存器传递参数比通过堆栈传递参数的优点是( )。
A. 能传递更多得参数 B. 存取效率高 C. 能确保正确调用 D. 没有副作用
13. 利用堆栈传递子程序参数的方法是固定的,在子程序中, 修改参数( )可以改变子程 序的返回地址。
A. [EBP-4] B. [EBP-8] C. [EBP+4] D. [EBP+8]
14. . 在用LOOP Label 指令构成的循环中,若ECX的初值为-10,则循环体将被执行( ) 次。
A. 10 B. 0 C. 100 D. >100
15. 在用LOOP Label 指令构成的循环中,若ECX的初值为10,在LOOP Label 指令前有一条“
SUB ECX,2” 指令,则循环体将被执行( )次。
A. 10 B. 5 C. 4 D. >10000
解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. C 12. 13. 14. 15. D
二.判断
1. 指令指针或者还包括代码段寄存器值的改变将引起程序流程的改变。
2. JMP指令对应高级语言的GOTO语句,所以不能使用。
3. 因为条件转移指令Jcc要利用标志作为条件,所以也影响标志。
4. JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。
5. CALL指令用在调用程序中,如果被调用程序中也有CALL指令,说明出现了嵌套。
6. 子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。
7. 利用寄存器在主子程序间传递参数,其实质就是利用全局变量来传递参数。
8. 子程序采用堆栈传递参数时,只能在主程序中修改ESP方可保持堆栈的平衡。
9. 汇编语言中不允许递归调用子程序。
10. 与高级语言中的自定义函数不同,汇编语言中的子程序不能将计算的结果返给主程序。
11. 汇编语言中,子程序嵌套调用就是递归调用。
12. 指令CALL或RET的执行,不改变程序执行的流程。
13. 在软件中只使用一次的功能编写成子程序完全没有必要。
14. 在执行CALL指令时,硬件自动将断点地址压入堆栈中。
15. 在高级语言中,若多重循环出现\交叉”的错误,编译系统通常会给出提示来。若汇编语
言程序中也出现\交叉”错误时,汇编程序也会给出提示来。 解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
三.填空
1. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、__________和______ ____。
2. 假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是20A1H,线性地址32F
7H处存放3280H,执行指令“JMP EBX” 后EIP=__________,执行指令“JMP TABLE[EBX]” 后EIP=__________。
3. “CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=__________,此时ZF=_
_________。
4. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、__________和直接寻 址,通常__________方式使用的最多。
5. 循环结构程序一般有三个部分组成,它们是__________,循环体和__________部分。