微机原理及应用A试题集及其答案83488(3)

2019-08-30 12:58

A.原码 B.补码 C.反码 D.BCD码 15. 下列字母中,ASCII码值最小的是( ) 。 A. K B. Y C. a D. i 16. 当执行完下列指令序列后,标志位CF和SF的值为( )。 MOV AL,0C4H ADD AL,9DH A. 0,0 B. 0,1 C. 1,0 D. 1,1 二.名词解释

1. Program flow control instructions 程序流程控制指令 2. OFFSET Operator:在汇编阶段取得变量的偏移地址。 3. Loop Counter循环计数器,一般为ECX

4. . Pseudo Code:伪代码,又称虚拟代码,是高层次描述算法的一种。 5. Single Dimension Array:一位数组

6. Conditional Loop Instructions:条件循环指令利,用条件转移指令决定是否进行循环。 7. Arithmetic instructions:算数指令

8. Jumps Based on Unsigned Comparisons:无条件转移比较 三.判断

1. VAR是数据段中定义的字变量,指令MOV AX,VAR+2是正确的。F

2. VAR1和VAR2是数据段中定义的字变量,指令MOV AX, VAR1-VAR2是正确的。F 3. VAR1和VAR2是数据段中定义的字变量,指令MOV AX, VAR1+VAR2是正确的。F 4. 执行乘法指令IMUL src时,运算结果不会产生溢出。

5. 执行乘法指令IMUL REG,src时,运算结果不会产生溢出。 6. 定义符号常量时,使用“=”与“EQU”没有区别。F

7. 地址操作符OFFSET可以获取任何寻址方式的内存变量的有效地址。F 8. 指令“SHL”与“SAL”的功能是等价的。T 9. 指令“SHR”与“SAR”的功能是等价的。T

10. 指令“LOOP Lable ”与“DEC ECX JNZ Lable”的功能是等价的。T 11. 32位机不能完成64位整数加法运算。F 12. 只有补码才能表示有符号数。F

13. 指令“LEA”可以获取任何寻址方式的内存变量的有效地址。T

14. 指令“LEA”可以实现求两个寄存器与一个立即数三个数之和的功能。T 15. 堆栈内部中的数据是无法修改的。F 四.填空

1. 顺序执行指令“XOR EAX, EAX”和“SUB EAX, 1”后,EAX=_0_,CF=_0_。 2. 数据段有语句“BUF DWORD 10h DUP( 3 DUP( 2,? ) ,3 ,4 ,5)”,则用“LENGTHOF BUF”会得到数值为_576_,用“SIZEOF BUF”会得到数值为_144_。

3. 已知AL=01100001B,执行指令“AND AL,5FH”后,AL=_41H_;如果AL的内容是某个ASCII码,则代表字符_!_。

4. 已知AL=01000001B,执行指令“OR AL,20H”后,AL=_71H_;如果AL的内容是某个ASCII码,则代表字符_q_。

5. 设字长为八位,-128补=_80_H, -1补=_ff_H。

6. 已知:寄存器AX=7836H,指令: TEST AX,9A5EH执行后, OF=_0_,SF=_0_。

7. 已知:寄存器AX=7836H,指令: CMP AX,9A5EH执行后, AX=_7836H_, OF=__。 8. 要测试AX的第五位是否为1,使用指令__;若要将AL的第五位置为1,使用指令____。

(说明:最低位为第0位。)

9. 已知:寄存器AX=9A5EH,指令: NEG AX执行后, OF=_0_,SF=_0 。

10. 已知:寄存器EAX=65536,EBX=32768,指令:DIV EBX执行后, EAX=2。则指令:DIV EBX执行前EDX的值应为 _,指令:DIV EBX执行后EDX=_______。 11. 已知:寄存器AL=-1,指令:MOVSX BX,AL执行后,BX= ________H;指令:MOVZX CX,AL执行后,CX= ________H。

12. 顺序执行指令序列“XOR EAX,EAX ,DEC EAX ,ADC EAX,0”后,CF=___,ZF=____。 13. 顺序执行指令序列“XOR EAX,EAX ,SUB EAX,1 ,ADC EAX,0”后,CF=___,ZF=____。 14. 已知:寄存器AL=10,BL=-10,指令:MUL BL执行后, AX=________H;而若将指令改为:IMUL BL 则执行后AX=________H;

15. 若要将AX的第五位和第九位置为0,使用指令____________________;若要将AX的第五位和第九位置反,使用指令____________________。(说明:最低位为第0位。) 五.简答题

1. 乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算?

加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF标志,可利用CF和OF进行区别。

2. 逻辑与运算为什么也称为逻辑乘?

逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。 3. 简述逻辑运算指令怎么实现复位、置位和求反功能?

4. 在处理一维数组时,通常可以采用哪些寻址方式?各自的特点是什么?

5. 通常在什么情况下需要使用MOVSX、MOVZX指令?

对无符号数,在前面加零实现零位扩展。对应指令MOVZX;对有符号数进行符号扩展,即用一个操作数的符号位(最高位)形成另一个操作数,对应指令MOVSX 6. 通常在什么情况下需要使用PTR类型操作符?举例说明。

如在指令“MOV EAX,DWORD PTR ARRAY”,EAX是双字,变量ARRAY被定义为字量,两者类型不同,MOV指令不允许不同类型的数据传送,利用PTR改变ARRAY的类型,将其传送给EAX.

7. ESP是通用寄存器,是否可以随意的修改ESP的值?

不可以,堆栈段的范围由堆栈执政寄存器ESP的初值确定,这个位置就是堆栈的底部(不再变化),因此不能随意改变ESP的值。

8. 大小写字母转换的规律是什么?给出转换的公式。 大小写字母转换利用它们的ASCII码相差20H。SUB BL 20H:实现小写字母转换为大写;ADD BL 20H:实现大写字母转换为小写

9. ESP是通用寄存器,是否可以随意的修改ESP的值? 六.应用题

第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为 有符号数)( )。 A. JA B. JAE C. JG D. JGE 6. 条件转移指令JC Label的测试条件是( )。 A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1

7. 若主程序通过堆栈向子程序传递了3个参数,子程序返回主程序时,在子程序中清除堆栈中3个参数正确的RET指令是( )。 A. RET 3*1 B. RET 3*2 C. RET 3*3 D. RET 3*4 8. 主程序通过堆栈向子程序传递了3个参数,子程序调用结束后,在主程序中清除堆栈中3个参数正确的指令是( )。 A. ADD ESP, 3*2 B. ADD ESP, 3*4 C. ADD EBP, 3*2 D. ADD EBP, 3*4 9. 条件转移指令JZ Label的测试条件是( )。 A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1 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. 指令指针或者还包括代码段寄存器值的改变将引起程序流程的改变。T 2. JMP指令对应高级语言的GOTO语句,所以不能使用。F

3. 因为条件转移指令Jcc要利用标志作为条件,所以也影响标志。F 4. JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。F 5. 控制循环是否结束只能在一次循环结束之后进行。T

6. 介绍LOOP指令时,常说它相当于DEC ECX和JNZ两条指令。但考虑对状态标志的影响,它们有差别。LOOP指令不影响标志,而DEC指令却会影响除CF之外的其他状态标志。T 7. CALL指令用在调用程序中,如果被调用程序中也有CALL指令,说明出现了嵌套。T 8. 子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。F

9. 利用寄存器在主子程序间传递参数,其实质就是利用全局变量来传递参数。F 10. 子程序采用堆栈传递参数时,只能在主程序中修改ESP方可保持堆栈的平衡。F 11. 汇编语言中不允许递归调用子程序。F

12. 与高级语言中的自定义函数不同,汇编语言中的子程序不能将计算的结果返给主程序F 13. 汇编语言中,子程序嵌套调用就是递归调用。F

14. 在LOOP指令构成的循环结构中,允许修改ECX的值。T 15. 指令CALL或RET的执行,不改变程序执行的流程。T

16. 在软件中只使用一次的功能编写成子程序完全没有必要。F 17. 在执行CALL指令时,硬件自动将断点地址压入堆栈中。F

18. 在高级语言中,若多重循环出现\交叉”的错误,编译系统通常会给出提示来。若汇编语言程序中也出现\交叉”错误时,汇编程序也会给出提示来。T 四.填空

1. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、__直接寻址 和_间接寻址。

2. 假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是20A1H,线性地址32F7H处存放3280H,执行指令“JMP EBX” 后EIP=_1256H__,执行指令“JMP TABLE*EBX+”后EIP=_20A1_。

3. “CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=_3721H__,此时ZF=_1__。

4. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、__________和直接寻址,通常__________方式使用的最多。

5. 循环结构程序一般有三个部分组成,它们是_循环初始_,循环体和 循环控制__部分。 6. 条件转移指令JE Label的测试标志位是__ZF__,条件转移指令JNO Label的测试标志位是_OF__。

7. .过程定义开始是“TEST PROC”语句,则过程定义结束的语句是__TEST ENDP__。宏定义开始是“DISP MACRO”语句,则宏定义结束的语句是_ENDM_。 8. 利用堆栈传递子程序参数的方法是固定的,在子程序中通常是利用寄存器__EBP__来访问栈中的参数,采用的寻址方式是__。

9. 调用程序和子程序之间的信息传送称为__参数__,而当传递的信息很大时通常通过__________来进行传递。

10. 在LOOP Label 指令构成的循环中,若ECX的初值为0,则循环体将被执行__232_次;若ECX的初值为—100,则循环体将被执行(232 -100)__次。

11. 只要堆栈空间允许,子程序嵌套调用的层次__无限制_,子程序也可调用本身,这称为__递归调用_。

12. 通常在子程序的开始部分要保护__入口参数___寄存器,但用做出口参数的通用寄存器则__不能保护和恢复__。

13. 通常在子程序中的参数分为两种类型,分别称为__入口参数__和 __出口参数__。

14. 通常在子程序中至少要有一条_返回__指令用于返回主程序,而汇编程序在汇编时并不检测__返回_指令是否存在。

15. 在主程序中,采用“JMP subName”指令可以__转到______子程序subName,但子程序结束后_____需返回__________。 五.简答题

1. 是什么特点决定了目标地址的相对寻址方式应用最多? 当同一个程序被操作系统安排到不同的存储区域执行时,指令间的位移没有改变,目标地址

采用相对寻址可方便操作系统的灵活调度。

2. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中sign与sinteger均为双字变量。 if ( sin teger = = 0) sign = = 0; else If ( siteger > 0) sign = 1; else sign = -1;

3. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中ch1与caps均为字节变量。 if (ch1> =’a’ && ch1< =’z’) caps= =0; if (ch1> =’A’ && ch1< =’Z’) caps= =1;

4. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中sum与i变量均为双字变量。 sum=0; for ( i=1;i< =100;i++) if ( i%2= =0) sum=sum+i;

5. 在N分支结构中,至少要使用N—1条 JMP指令,它的作用是什么?

6. 不使用CALL指令是否可以实现子程序的调用?若可以,举例说明。 7. 写出3条以上的可以改变程序执行流程的指令,并简述其用途。. 8.在子程序中,可否改变子程序的返回地址?若可以,则举例说明。 9. 为什么特别强调为子程序加上必要的注释?

完整的子程序注释可方便程序员调用该子程序,子程序注释包括子程序名、子程序功能、入口参数和出口参数、调用注意事项和其他说明等。 六.应用题

1. 能被4整除但不能被100整除,或者年被400整除的年份是闰年。编程写一个完整的程序,求出2012年~2099年中的所有闰年年份,并把它们存放在数组Lyear中。 include io32.inc .data

year dword ? prompt byte ' Enter the year :',0 msg byte ' is leap year .',0 msg1 byte ' is not leap year .',0 .code main proc ;主程序开始 mov eax,offset prompt call dispmsg call readsid ;读入一个年份


微机原理及应用A试题集及其答案83488(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四年级 第二讲 还原问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: