8086CPU指令系统——逻辑运算和位移指令

当需要对字节或字数据中的各个二进制位进行操作时,可以考虑采用二进制位操作类指令。
在这里插入图片描述

一、逻辑运算类指令AND、OR、NOT、XOR、TEST

逻辑运算方法
在这里插入图片描述
1、逻辑与指令AND
指令格式:AND dst, src
执行操作:dst<——dst∧src;∧为按位做逻辑“与”运算
标志位:CF、OF复位,而SF、PF、ZF有操作结果决定
指令功能:两个操作数的对应位都为 1 时,结果为 1,否则为 0(有0为0)。运算结果送回到目的操作数。

2、逻辑或指令OR
指令格式:OR dst, src
执行操作:dst<——dst∨src;∨为按位做逻辑“或”运算
标志位:CF、OF复位,而SF、PF、ZF有操作结果决定
指令功能:两个操作数的对应位都为 0 时,结果为 0,否则为 1(有1为1)。运算结果送回到目的操作数。

3、逻辑非指令NOT
指令格式:NOT dst
执行操作:dst<——~dst
标志位:不影响
指令功能:将指定寄存器或存储单元的内容按位取反。运算结果送回到目的操作数。

4、逻辑或指令XOR
指令格式:XOR dst, src
执行操作:dst<——dst⊕ src;
标志位:CF、OF复位,而SF、PF、ZF有操作结果决定
指令功能:两个操作数的对应位不相同为 1,相同为 0。运算结果送回到目的操作数。

5、逻辑或指令TEST
指令格式:TEST dst, src
执行操作:dst∧src;
标志位:CF、OF复位,而SF、PF、ZF有操作结果决定
指令功能:两个操作数的对应位都为 1 时,结果为 1,否则为 0(有0为0)。运算结果不会送回到目的操作数。

实际应用:

AND指令用于对一个数据的指定位清零			(与上0,有0为0)
OR指令用于对一个数据的指定位置1			(或上1,有1为1)
NOT指令用于取反码,再加一,得补码			(取反)
XOR指令用于对寄存器清零					(异或本身,一样置0)
TEST指令用于测试一个数据的指定位是1还是0	(与上0,有0为0)

二、非循环移位指令SHL、SHR、SAL、SAR

如果只移一位,指令中用1指出移位的位数,如果超过1位,必须用CL预先指明移位的位数。

1、(非循环)逻辑左移指令SHL(Shift logical Left)
指令格式:SHL dst, CL(SHL dts, 1)
标志位:SF、ZF、PF根据以为结果置位
指令功能:将操作数左移,由 CL 指定移位位数,最高位移入进位标志 CF,移动后空出的最低位补 0。

2、(非循环)逻辑右移指令SHR(Shift logical Right)
指令格式:SHR dst, CL(SHR dts, 1)
标志位:SF、ZF、PF根据以为结果置位
指令功能:将操作数右移,由 CL 指定移位位数,最低位移入进位标志 CF,移动后空出的最高位补 0。

3、(非循环)算数左移指令SAL(Shift Arithmetic Left)
指令格式:SAL dst, CL(SAL dts, 1)
标志位:SF、ZF、PF根据以为结果置位
指令功能:将操作数左移,由 CL 指定移位位数,最高位移入进位标志 CF,移动后空出的最低位补 0。

4、(非循环)算术右移指令SAR(Shift Arithmetic Right)
指令格式:SAR dst, CL(SAR dts, 1)
标志位:SF、ZF、PF根据以为结果置位,当只移一位时影响OF。
指令功能:将操作数右移,由 CL 指定移位位数,最低位移入进位标志 CF,移动后符号位不变(即最高位自动用最高位补充)。

逻辑移位指令处理无符号数,算术移位指令处理有符号数。
示意图:
在这里插入图片描述

三、循环移位指令ROL、ROR、RCL、RCR

如果只移一位,指令中用1指出移位的位数,如果超过1位,必须用CL预先指明移位的位数。

1、循环左移指令ROL(Rotate Left)
指令格式:ROL dst, CL (ROL dst, 1)
标志位:该指令只影响CF、OF标志
指令功能:将操作数左移,由 CL 指定移位位数,最高位移入进位标志 CF,同时最高位移入最低位,形成环路。

2、循环右移指令ROL(Rotate Right)
指令格式:ROR dst, CL (ROR dst, 1)
标志位:该指令只影响CF、OF标志
指令功能:将操作数右移,由 CL 指定移位位数,最低位移入进位标志 CF,同时最低位移入最高位,形成环路。

3、带进位循环左移指令RCL(Rotate Left through Carry)
指令格式:RCL dst, CL (RCL dst, 1)
标志位:该指令只影响CF、OF标志
指令功能:将操作数左移,由 CL 指定移位位数,最高位移入进位标志 CF,CF 移入最低位,形成环路。

4、循环左移指令RCR(Rotate Right through Carry)
指令格式:RCR dst, CL (RCR dst, 1)
标志位:该指令只影响CF、OF标志
指令功能:将操作数右移,由 CL 指定移位位数,最低位移入进位标志 CF,CF 移入最高位,形成环路。

示意图:
在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值