收藏 分销(赏)

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

上传人:w****g 文档编号:2646274 上传时间:2024-06-03 格式:DOC 页数:9 大小:100.54KB 下载积分:6 金币
下载 相关 举报
逻辑运算指令是另一组重要的指令.doc_第1页
第1页 / 共9页
逻辑运算指令是另一组重要的指令.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
个人收集整理 勿做商业用途 逻辑运算指令是另一组重要的指令,它包括:逻辑与(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,其它位的值为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,该立即数即为:5AH或01011010B,然后用指令”ORBL, 5AH"来实现此功能。 其计算过程如右图所示. 3、逻辑非操作指令NOT(LogicalNOT Instruction 指令的格式:NOT Reg/Mem 其功能是把操作数中的每位变反,即:1←0,0←1。指令的执行不影响任何标志位。 例5.8 已知(AL)=46H,执行指令“NOT AL”后,AL的值是什么? 解:执行该指令后,(AL)=0B9H。其计算过程如下所示。 4、逻辑异或操作指令XOR(ExclusiveOR Instruction) 指令的格式:XOR Reg/Mem, Reg/Mem/Imm 受影响的标志位:CF(0)、OF(0)、PF、SF和ZF(AF无定义) 指令的功能是把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑”异或操作”,操作结果存入目标操作数中. 例5。9 已知(AH)=46H,要求把其的第0、2、5和7位的二进制值变反。 解:构造一个立即数,使其第0、2、5和7位的值为1,其它位的值为0,该立即数即为:0A5H或10100101B,然后再用指令”XOR AH, 0A5H"来实现此功能。 其计算过程如右图所示。 5、逻辑操作指令的小结 下面是学习和掌握逻辑类指令的控件,可模拟执行AND、OR、NOT和XOR等指令. 31 … 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 … … VM RF NT IOPL OF DF IF TF SF ZF AF PF CF 图2。2 16位/32位标志寄存器的示意图 上面9个标志位可分为二组:运算结果标志位(有背景色的标志位)和状态控制标志位。前者受算术运算和逻辑运算结果的影响,后者受一些控制指令执行的影响。 更详细的内容请点击:标志位的说明。 有些指令的执行会改变标志位(如:算术运算指令等),不同的指令会影响不同的标志位,有些指令的执行不改变任何标志位(如:MOV指令等),有些指令的执行会受标志位的影响(如:条件转移指令等),也有指令的执行不受其影响. 程序员要想熟练运用这些标志位,就必须掌握每个标志位的含义、每条指令的执行条件和执行结果对标志位的作用。 注意:虽然知道每个标志位在标志寄存器内的具体位置是有好处的,但通常情况下,没有这个必要。在使用第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、选择指令实现下列要求,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)、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中; 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)、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指令的作用是什么?叙述指令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、有符号数比较后,用什么样的条件转移指令实现转移?无符号数比较后,用什么样的条件转移指令实现转移?
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服