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

书读的越多而不加思考,你就会觉得你知道得很多;而当你读书而思考得越多的时候,你就会越清楚地看到,你知道得很少。

导读:本篇文章讲解 8086指令系统(三) 逻辑运算和移位运算指令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

逻辑运算和位移运算指令

指令 作用
AND OPRD1, OPRD2 OPRD1 & OPRD2 -> OPRD1
OR OPRD1, OPRD2 OPRD1 | OPRD2 -> OPRD1
NOT OPRD ~OPRD -> OPRD
NOT SEGMENT : [偏移地址] 将指定段中偏移地址位置的两个单元的内容取反
XOR OPRD1, OPRD2 OPRD1 ^ OPRD2 -> OPRD1
TEST OPRD1, OPRD2 OPRD1 & OPRD2
SAL OPRD, 1/CL CL中指明移位数, OPRD是无符号操作数, 它的 最高位移到 CF, 最低位补0
SAR OPRD, 1/CL CL中指明移位数, OPRD是无符号操作数, 它的 最低位移到 CF, 最高位补0
SHL OPRD, 1/CL CL中指明移位数, OPRD是有符号操作数, 它的 最高位移到 CF, 最低位补符号位
SHR OPRD, 1/CL CL中指明移位数, OPRD是有符号操作数, 它的 最低位移到 CF, 最高位补符号位
ROL OPRD, 1/CL CL中指明移位数, OPRD的 最高位移到 CF 中 和 最低位
RCL OPRD, 1/CL CL中指明移位数, OPRD的 最高位移到 CF 中, CF中的数据移到 最低位
ROR OPRD, 1/CL CL中指明移位数, OPRD的 最低位移到 CF 中 和 最高位
RCR OPRD, 1/CL CL中指明移位数, 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.更长字节数乘除

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122851.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!