目录
当前位置: 首页 > 文档资料 > 汇编语言教程 >

5.3 习题

优质
小牛编辑
127浏览
2023-12-01

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)、MOVSXDS, 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, AX22)、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指令的作用是什么?叙述指令REPESCASB指令所完成的功能。

5.24、指令REPNE SCASB结束执行的条件是什么?

5.25、REP前缀的作用是什么?能用指令REPLODSB读取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、有符号数比较后,用什么样的条件转移指令实现转移?无符号数比较后,用什么样的条件转移指令实现转移?