8086指令系统(三) 逻辑运算和移位运算指令

逻辑运算和位移运算指令

指令作用
AND OPRD1, OPRD2OPRD1 & OPRD2 -> OPRD1
OR OPRD1, OPRD2OPRD1 | OPRD2 -> OPRD1
NOT OPRD~OPRD -> OPRD
NOT SEGMENT : [偏移地址]将指定段中偏移地址位置的两个单元的内容取反
XOR OPRD1, OPRD2OPRD1 ^ OPRD2 -> OPRD1
TEST OPRD1, OPRD2OPRD1 & OPRD2
SAL OPRD, 1/CLCL中指明移位数, OPRD是无符号操作数, 它的 最高位移到 CF, 最低位补0
SAR OPRD, 1/CLCL中指明移位数, OPRD是无符号操作数, 它的 最低位移到 CF, 最高位补0
SHL OPRD, 1/CLCL中指明移位数, OPRD是有符号操作数, 它的 最高位移到 CF, 最低位补符号位
SHR OPRD, 1/CLCL中指明移位数, OPRD是有符号操作数, 它的 最低位移到 CF, 最高位补符号位
ROL OPRD, 1/CLCL中指明移位数, OPRD的 最高位移到 CF 中 和 最低位
RCL OPRD, 1/CLCL中指明移位数, OPRD的 最高位移到 CF 中, CF中的数据移到 最低位
ROR OPRD, 1/CLCL中指明移位数, OPRD的 最低位移到 CF 中 和 最高位
RCR OPRD, 1/CLCL中指明移位数, OPRD的 最低位移到 CF 中, CF中的数据移到 最高位
1. 逻辑 “与” 指令

AND O1,O2

功能:
  O1 & O2 的结果存入 O1

作用:
  (1). 屏蔽某些位
  将目标操作数要屏蔽的位在源操作数中对应的位设置为0, 其他位为1, 相与之后要屏蔽的位变为0, 其他位保留原来的数
  (2). 改变状态标志位
  自身与自身相与, 内容不变, CF = 0, AF = 0, 其他标志位也会受影响

2. 逻辑 “或” 指令

OR O1,O2

功能:
  O1 | O2 的结果存入 O1

作用:
  (1). 使目标操作数某些位不变, 其他位设置为1
  将目标操作数要设置的位在源操作数中对应的位设置为1, 其他位为0
  (2). 改变状态标志位
  自身与自身相或, 内容不变, CF = 0, AF = 0, 其他标志位也会受影响

3. 逻辑 “非” 指令

NOT OPRD

功能:
  OPRD按位取反 结果存入 OPRD

NOT 指令对标志位无影响

NOT SEGMENT : [REG]

功能:
  将指定段中偏移地址为REG的两个单元的内容取反

3. 逻辑 “异或” 指令

XOR OPRD1, OPRD2

功能:
  OPRD1 ^ OPRD2 结果存入 OPRD1

作用:
  XOR AX, AX 可以使AX清零

4. 逻辑测试指令

TEST OPRD1, OPRD2

功能:
  OPRD1 & OPRD2

作用:
  在不改变目标操作数的情况下, 检测操作数中某些位是0还是1

5. 算数左移

SAL OPRD, 1/CL

功能:
  OPRD是无符号操作数, 它的最高位移到 CF, 最低位补0

6. 逻辑左移

SHL OPRD, 1/CL

功能:
  OPRD是有符号操作数, 它的最高位移到 CF, 最低位补0

7. 算数右移

SAR OPRD, 1/CL

功能:
  OPRD是无符号操作数, 它的最低位移到 CF, 最高位补0

8. 逻辑右移

SHR OPRD, 1/CL

功能:
  OPRD是有符号操作数, 它的最低位移到 CF, 最高位补符号位

以上四个位移指令的源操作数只能是 立即数1CL中的数, 如果左移多为, 将次数存入CL寄存器中

8. 不带进位的循环位移

左移 ROL OPRD, 1/CL

功能:
  OPRD的 最高位移到 CF 中 和 最低位

  ROL指令影响标志位 CF 和 OF, 若循环移动次数为1, 且位移之后目标操作数最高位和CF不相等, 则OF = 1, 否则OF = 0; 若移位次数不为1, 则OF状态不定

右移 ROR OPRD, 1/CL

  ROR指令影响标志位 CF 和 OF, 若循环移动次数为1, 且位移之后新的最高位和次高位不相等, 则OF = 1, 否则OF = 0; 若移位次数不为1, 则OF状态不定

功能:
  OPRD的 最低位移到 CF 中 和 最高位

8. 带进位的循环移位

左移 RCL OPRD, 1/CL

功能:
  OPRD的 最高位移到 CF 中, CF中的数据移到 最低位

  RCL指令对标志位的影响与ROL相同

右移 RCR OPRD, 1/CL

功能:
  OPRD的 最低位移到 CF 中, CF中的数据移到 最高位

  RCR指令对标志位的影响与ROR相同

循环移位应用
1.最高位与最低位交换
2.更长字节数乘除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值