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

Posted _DiMinisH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.更长字节数乘除

以上是关于8086指令系统 逻辑运算和移位运算指令的主要内容,如果未能解决你的问题,请参考以下文章

8086指令系统 算数运算指令

汇编语言通用数据处理指令——位操作类指令

汇编语言通用数据处理指令——位操作类指令

8086算术运算类指令

51单片机的指令系统

实用汇编指令