第3章指令系统精品.ppt

* * 练习1. 判断下列指令的正误,并说明原因。 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 * * 对。 错,BL不能作为间址寄存器。 错,操作数不能使用段寄存器。 对。 错,MUL指令单操作数不能为立即数。 对。 错,DIV指令不能使用立即数。 错,没有此格式的除法指令。 错,循环次数只能为1或CL。 * * 练习1. 判断下列指令的正误,并说明原因。 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 * * 错,移位次数只能是1或CL。 错,16位循环指令次数只能为1或CL。 对。 对。 错,立即数不能作为目的操作数。 对。 错,无此指令助记符。 * * 练习2: 试用不同的方法将DX:AX中的双字转换成其相反数。 思路: 双字数据的减法:用0减去DX:AX的值; 位操作:对DX:AX表示的32位数据所有位取反,末位加1; 当(AX)=0时,需要将DX各位取反末位加1,AX保持不变; 相关指令: NOT指令:各位取反; NEG指令:各位取反,末位加1; SUB指令:0-OPRD 注意:指令序列中应考虑特例情况 NEG AX时,(AX)=0,则CF=0;但实际应使DX取反加1; NEG AX时,(AX)≠0,则CF=1;但实际DX只取反即可; * * 练习2:(解答) 试用不同的方法将DX:AX中的双字转换成其相反数。 解法1: NOT DX NEG AX CMC ADC DX , 0 解法2: NOT AX NOT DX ADD AX , 1 ADC DX , 1 解法1: NOT DX NEG AX CMC ADC DX , 0 解法2: NOT AX NOT DX ADD AX , 1 ADC DX , 1 解法4: NEG DX NEG AX SBB DX , 0 解法3: MOV CX , DX MOV BX , AX XOR DX , DX XOR AX , AX SUB AX , BX SBB DX , CX * * 练习3: 试将DX:AX中的双字数据逻辑左移4位。 逻辑左移1位,可通过SHL和RCL配合完成; 左移4位,循环以上指令4次也可完成; 思路 分别将DX、AX逻辑左移; 使用AX原数据的高4位,设置DX的低4位; DX的低4位当前为全0; 解答: MOV CL , 4 SHL DX , CL MOV BL , AH SHL AX , CL SHR BL , CL OR DL , BL * * 练习4: 试将CL的第5位置为AL的第0位。 思路 将两个对应位使用OR指令设置; 被设置位C5:清零; 设置位A0:其他位清零; 指令序列 AND CL , 1101 1111B MOV CH , CL AND AL , 0000 0001B MOV CL , 5 SHL AL , CL OR CH , AL MOV CL , CH * * 本章小结 掌握标识符的写法,能够识别并写出正确的标识符; 理解寻址方式的含义,掌握16位系统使用的7种寻址方式; 特别是存储器寻址的5种方式,EA和PA形成; 熟练掌握16位系统的常用汇编指令,并能应用; 指令格式:操作码、操作数的个数和形式; 指令功能,包括指令对各状态标志位的影响; 指令应用特点,指令序列之间的关系; * * 传送类指令 指令格式 功能 MOV DST , SRC 将源操作数的值传送至目的操作数 PUSH SRC 将源操作数入栈 POP DST 将堆栈栈顶元素出栈至目的操作数 XCHG OPRD1 , OPRD2 将两操作数的值相互交换 LEA DST , SRC 将源操作数的有效地址送目的寄存器

文档评论(0)

1亿VIP精品文档

相关文档