经典汇编语言教程:5.3 习题

5.3 习题

5.1、书写正确的MOV指令,需要符合哪些规定?在32位CPU中,增加了什么指令来克服不同数据类型之间的数据传送?
5.2、简述指令MOV BX, 1234H、MOV BX, [1234]和MOV BX, offset [1234H]的功能和它们之间区别。
5.3、简述指令MOV BX, Data和MOV BX, offset Data之间的区别。
5.4、选择指令实现下列要求,OPN1 ← OPN2的含义:把操作数OPN2的值传送给OPN1
1)、EBX ← EDX
3)、SI ← BX
5)、AL ← BH
7)、AX ← 13AH
9)、SI ← 1000H
2)、BX ← CL
4)、DS ← AX
6)、AL ← 12H
8)、CX ← 0CDH                        (假设0CDH为无符号数)
10)、EBX ← 1200A2H
5.5、PUSHA指令能把哪些寄存器压栈?它们进栈的顺序是什么?可用什么指令把这些寄存器依次弹出堆栈?
5.7、PUSHAD指令完成什么操作?它与什么操作的作用相反?
5.8、在16位/32位CPU中,标志位寄存器的内容进栈和出栈的指令是什么?
5.9、写出下列指令序列中每条指令的执行结果,请在Debug环境下验证之,并注意各标志位的变化情况。
MOV   BX, 23ABH
ADD   BL, 0ACH
MOV   AX, 23F5H
ADD   BH, AL
SBB    BX, AX
ADC   AX, 12H
SUB   BH, -9
5.10、假定DS=1123H,SS=1400H,BX=0200H,BP=1050H,DI=0400H,SI=0500H,LIST的偏移量为250H,试确定下面各指令访问内存单元的地址。
1)、MOVAL, [1234H]2)、MOVAX, [BX]
3)、MOV[DI], AL4)、MOV[2000H], AL
5)、MOVAL, [BP+DI]6)、MOVCX, [DI]
7)、MOVEDX, [BP]8)、MOVLIST[SI], EDX
9)、MOVCL, LIST[BX+SI]10)、MOVCH, [BX+SI]
11)、MOVEAX, [BP+200H]12)、MOVAL, [BP+SI+200H]
13)、MOVAL, [SI-0100H]14)、MOVBX, [BX+4]
5.11、用一条指令实现把BX和SI之和传送给CX。
5.12、试比较下列三组指令的功能。
1)、LDS SI, [DI]2)、MOV SI, [DI] 3)、MOV SI, [DI+2]
MOV SI, [DI+2] MOV SI, [DI]
5.13、标志位CF有着重要的作用,请简述之,并至少写出三种把CF置0的方法。
5.14、写一个计算DL三次方的指令序列,假设幂不超过16位二进制。
5.15、写出一个指令序列实现:用CL中数据除BL中的数据,然后商乘2,最后的结果存入DX中。
5.16、按下列要求编写指令序列。
1)、清除DH中的最低三位而不改变其它位,结果存入BH中;
2)、把DI中的最高5位置1而不改变其它位;
3)、把AX中的0~3位置1,7~9位取反,13~15位置0;
4)、检查BX中的第2、5和9位中是否有一位为1;
5)、检查CX中的第1、6和11位中是否同时为1;
6)、检查AX中的第0、2、9和13位中是否有一位为0;
7)、检查DX中的第1、4、11和14位中是否同时为0;
5.17、简述指令AND和TEST、NOT和NEG之间的区别。
5.18、选择适当的指令实现下列功能。
1)、右移DI三位,并把零移入最高位;
2)、把AL左移一位,使0移入最低一位;
3)、AL循环左移三位;
4)、EDX带进位位循环右移四位;
5)、DX右移六位,且移位前后的正负性质不变。
5.19、判断下列指令的正确性,若某指令是错误的,请说明其错误原因。
1)、MOVBL, CX2)、MOVDS, SS
3)、MOV[BX], [DI]4)、MOVAL, [BX][SI]
5)、MOVES, AL6)、MOVDS, DX
7)、MOVCS, AX8)、MOVBX, CS
9)、MOVDS, 1230H10)、MOVSX DS, AL
11)、XCHGBX, 312)、POPCS
13)、MOVIP, SI14)、PUSHCS
15)、PUSHBL16)、MOV[SP], BX
17)、MOVAX, BX+318)、MOVAX, [BX+3]
19)、MOVBX, [BX]20)、MOVBH, [BL]
21)、XCHGES, AX 22)、LEAAX, [BX+SI]
23)、MUL10H24)、IMULDX, 10H
25)、DIV1026)、IDIVDX, 10H
27)、SHLAX, CX28)、SHRBX, CH
29)、ROLBX, 2030)、RCRAX, CL
31)、CMPAX,1234H32)、CMP12H, CL
33)、JCXZnext34)、JEBXZnext (假设标号next已存在)
5.20、方向标志DF的作用是什么?用于设置或消除该标志位的指令是什么?
5.21、串指令用DI和SI寻址哪些内存段中的内存数据?
5.22、段间转移和段内转移之间的区别是什么?
5.23、SCASB指令的作用是什么?叙述指令REPE  SCASB指令所完成的功能。
5.24、指令REPNE  SCASB结束执行的条件是什么?
5.25、REP前缀的作用是什么?能用指令REP LODSB读取DS:SI所指内存中的每个字符来进行处理吗?若不能,请说明原因。
5.26、编写指令序列,在字符串LIST中查寻字符'B',若找到,则转向Found,否则,转向NotFound,假设该字符串含有300个字符。
5.27、编写指令序列,把Source存储区域中的12个字节传送到Dest存储区域内。
5.28、设计一个短指令序列,将32位数AX:BX中的8位BCD与CX:DX中的8位BCD相加,并把所得结果存入CX:DX中。
5.29、有符号数比较后,用什么样的条件转移指令实现转移?无符号数比较后,用什么样的条件转移指令实现转移?

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号