逻辑运算指令是另一组重要的指令

上传人:宝路 文档编号:23605460 上传时间:2017-12-02 格式:DOC 页数:9 大小:112.51KB
返回 下载 相关 举报
逻辑运算指令是另一组重要的指令_第1页
第1页 / 共9页
逻辑运算指令是另一组重要的指令_第2页
第2页 / 共9页
逻辑运算指令是另一组重要的指令_第3页
第3页 / 共9页
逻辑运算指令是另一组重要的指令_第4页
第4页 / 共9页
逻辑运算指令是另一组重要的指令_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《逻辑运算指令是另一组重要的指令》由会员分享,可在线阅读,更多相关《逻辑运算指令是另一组重要的指令(9页珍藏版)》请在金锄头文库上搜索。

1、1逻辑运算指令是另一组重要的指令,它包括:逻辑与(AND)、逻辑或(OR )、逻辑非 (NOT)和异或指令(XOR),逻辑运算指令也是经常使用的指令。1、逻辑与操作指令 AND(LogicalAND Instruction)指令的格式:AND Reg/Mem, Reg/Mem/Imm受影响的标志位:CF(0)、OF(0)、PF 、 SF 和 ZF(AF 无定义)指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑“与操作 ”,操作结果存入目标操作数中。例5.6 已知 (BH)=67H,要求把其的第0 、1和5 位置为0。解:可以构造一个立即数,其第0、1 和 5位的值为0,其

2、它位的值为 1,该立即数即为:0DCH 或11011100B,然后用指令ANDBH, 0DCH来实现此功能。其计算过程如右图所示。2、逻辑或操作指令 OR(LogicalOR Instruction)指令的格式:OR Reg/Mem, Reg/Mem/Imm受影响的标志位:CF(0)、OF(0)、PF 、 SF 和 ZF(AF 无定义)指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑或操作,操作结果存入目标操作数中。例5.7 已知 (BL)=46H,要求把其的第1、 3、4和6位置为1 。解:构造一个立即数,使其第1、3 、4和6位的值为1,其它位的值为 0,该立即数即2

3、为:5AH 或01011010B,然后用指令ORBL, 5AH来实现此功能。其计算过程如右图所示。3、逻辑非操作指令 NOT(LogicalNOT Instruction指令的格式:NOT Reg/Mem其功能是把操作数中的每位变反,即:10 ,01。指令的执行不影响任何标志位。例5.8 已知 (AL)=46H,执行指令“ NOT AL”后,AL 的值是什么?解:执行该指令后,(AL)=0B9H。其计算过程如下所示。4、逻辑异或操作指令 XOR(ExclusiveOR Instruction)指令的格式:XOR Reg/Mem, Reg/Mem/Imm受影响的标志位:CF(0)、OF(0)、P

4、F 、 SF 和 ZF(AF 无定义)指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑异或操作,操作结果存入目标操作数中。例5.9 已知 (AH)=46H,要求把其的第0 、2、5 和7位的二进制值变反。解:构造一个立即数,使其第0、2 、5和7位的值为1,其它位的值为 0,该立即数即为:0A5H 或10100101B,然后再用指令3XOR AH, 0A5H来实现此功能。其计算过程如右图所示。5、逻辑操作指令的小结下面是学习和掌握逻辑类指令的控件,可模拟执行AND、OR、NOT 和 XOR 等指令。311716151413121110987654321 0VMRFNTIO

5、PLOFDFIFTFSFZFAFPFCF图2.2 16位 /32位标志寄存器的示意图上面9个标志位可分为二组:运算结果标志位(有背景色的标志位) 和状态控制标志位。前者受算术运算和逻辑运算结果的影响,后者受一些控制指令执行的影响。更详细的内容请点击:标志位的说明。有些指令的执行会改变标志位(如:算术运算指令等),不同的指令会影响不同的标志位,有些指令的执行不改变任何标志位(如:MOV 指令等),有些指令的执行会受标志位的影响( 如:条件转移指令等),也有指令的执行不受其影响。程序员要想熟练运用这些标志位,就必须掌握每个标志位的含义、每条指令的执行条件和执行结果对标志位的作用。4注意:虽然知道每

6、个标志位在标志寄存器内的具体位置是有好处的,但通常情况下,没有这个必要。在使用第5.2.9节中的“条件转移指令”时,系统会自动引用相应标志位的值来决定是否需要“转移”的,所以,不必过分强调标志位在标志寄存器内的具体位置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、选择指令实现下

7、列要求,OPN 1 OPN2的含义:把操作数 OPN2的值传送给 OPN1。1)、EBX EDX3)、SI BX5)、AL BH7)、AX 13AH9)、SI 1000H2)、BX CL4)、DS AX6)、AL 12H8)、CX 0CDH (假设0CDH 为无符号数 )10)、EBX 1200A2H5.5、 PUSHA 指令能把哪些寄存器压栈?它们进栈的顺序是什么?可用什么指令把这些寄存器依次弹出堆栈?5.7、 PUSHAD 指令完成什么操作?它与什么操作的作用相反?55.8、在 16位/32 位 CPU 中,标志位寄存器的内容进栈和出栈的指令是什么?5.9、写出下列指令序列中每条指令的执行

8、结果,请在 Debug 环境下验证之,并注意各标志位的变化情况。MOV BX, 23ABHADD BL, 0ACHMOV AX, 23F5HADD BH, ALSBB BX, AXADC AX, 12HSUB BH, -95.10、假定DS=1123H,SS=1400H,BX=0200H,BP=1050H ,DI=0400H,SI=0500H,LIST 的偏移量为250H,试确定下面各指令访问内存单元的地址。1)、MOV AL, 1234H2)、MOVAX, BX3)、MOV DI, AL4)、MOV2000H, AL5)、MOV AL, BP+DI6)、MOVCX, DI67)、MOV ED

9、X, BP8)、MOVLISTSI, EDX9)、MOVCL, LISTBX+SI10)、MOVCH, BX+SI11)、MOVEAX, BP+200H12)、MOVAL, BP+SI+200H13)、MOVAL, SI-0100H14)、MOVBX, BX+45.11、用一条指令实现把 BX 和 SI 之和传送给 CX。5.12、试比较下列三组指令的功能。1)、LDS SI, DI2)、MOV SI, DI 3)、 MOV SI, DI+2MOV SI, DI+2 MOV SI, DI5.13、标志位 CF 有着重要的作用,请简述之,并至少写出三种把 CF置0的方法。5.14、写一个计算 D

10、L 三次方的指令序列,假设幂不超过 16位二进制。5.15、写出一个指令序列实现:用 CL 中数据除 BL 中的数据,然后商乘2,最后的结果存入 DX 中。5.16、按下列要求编写指令序列。1)、清除 DH 中的最低三位而不改变其它位,结果存入 BH 中;2)、把 DI 中的最高5位置 1而不改变其它位;73)、把 AX 中的03位置 1,79位取反,1315位置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位中是否同

11、时为0;5.17、简述指令 AND 和 TEST、NOT 和 NEG 之间的区别。5.18、选择适当的指令实现下列功能。1)、右移 DI 三位,并把零移入最高位;2)、把 AL 左移一位,使 0移入最低一位;3)、AL 循环左移三位;4)、EDX 带进位位循环右移四位;5)、DX 右移六位,且移位前后的正负性质不变。5.19、判断下列指令的正确性,若某指令是错误的,请说明其错误原因。1)、MOV BL, CX2)、MOVDS, SS3)、MOV BX, DI4)、MOVAL, BXSI5)、MOV ES, AL6)、MOVDS, DX7)、MOV CS, AX 8)、 BX, CS8MOV9)

12、、MOV DS, 1230H10)、MOVSX DS, AL11)、XCHGBX, 312)、POPCS13)、MOVIP, SI14)、PUSHCS15)、PUSHBL16)、MOVSP, BX17)、MOVAX, BX+318)、MOVAX, BX+319)、MOVBX, BX20)、MOVBH, BL21)、XCHGES, AX 22)、LEAAX, BX+SI23)、MUL10H24)、IMULDX, 10H25)、DIV 1026)、IDIVDX, 10H27)、SHLAX, CX28)、SHRBX, CH929)、ROLBX, 2030)、RCRAX, CL31)、CMPAX,12

13、34H32)、CMP12H, CL33)、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 中。105.29、有符号数比较后,用什么样的条件转移指令实现转移?无符号数比较后,用什么样的条件转移指令实现转移?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号