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 | 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 | ||||
5.10、假定DS=1123H,SS=1400H,BX=0200H,BP=1050H,DI=0400H,SI=0500H,LIST的偏移量为250H,试确定下面各指令访问内存单元的地址。 | ||||
1)、MOV | AL, [1234H] | 2)、MOV | AX, [BX] | |
3)、MOV | [DI], AL | 4)、MOV | [2000H], AL | |
5)、MOV | AL, [BP+DI] | 6)、MOV | CX, [DI] | |
7)、MOV | EDX, [BP] | 8)、MOV | LIST[SI], EDX | |
9)、MOV | CL, LIST[BX+SI] | 10)、MOV | CH, [BX+SI] | |
11)、MOV | EAX, [BP+200H] | 12)、MOV | AL, [BP+SI+200H] | |
13)、MOV | AL, [SI-0100H] | 14)、MOV | BX, [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中; | ||||
5.17、简述指令AND和TEST、NOT和NEG之间的区别。 | ||||
5.18、选择适当的指令实现下列功能。 | ||||
1)、右移DI三位,并把零移入最高位; | ||||
5.19、判断下列指令的正确性,若某指令是错误的,请说明其错误原因。 | ||||
1)、MOV | BL, CX | 2)、MOV | DS, SS | |
3)、MOV | [BX], [DI] | 4)、MOV | AL, [BX][SI] | |
5)、MOV | ES, AL | 6)、MOV | DS, DX | |
7)、MOV | CS, AX | 8)、MOV | BX, CS | |
9)、MOV | DS, 1230H | 10)、MOVSX | DS, AL | |
11)、XCHG | BX, 3 | 12)、POP | CS | |
13)、MOV | IP, SI | 14)、PUSH | CS | |
15)、PUSH | BL | 16)、MOV | [SP], BX | |
17)、MOV | AX, BX+3 | 18)、MOV | AX, [BX+3] | |
19)、MOV | BX, [BX] | 20)、MOV | BH, [BL] | |
21)、XCHG | ES, AX | 22)、LEA | AX, [BX+SI] | |
23)、MUL | 10H | 24)、IMUL | DX, 10H | |
25)、DIV | 10 | 26)、IDIV | DX, 10H | |
27)、SHL | AX, CX | 28)、SHR | BX, CH | |
29)、ROL | BX, 20 | 30)、RCR | AX, CL | |
31)、CMP | AX,1234H | 32)、CMP | 12H, CL | |
33)、JCXZ | next | 34)、JEBXZ | next (假设标号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、有符号数比较后,用什么样的条件转移指令实现转移?无符号数比较后,用什么样的条件转移指令实现转移? |