8086指令系统 逻辑运算和移位运算指令
Posted _DiMinisH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8086指令系统 逻辑运算和移位运算指令相关的知识,希望对你有一定的参考价值。
逻辑运算和位移运算指令
指令 | 作用 |
---|---|
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, 最高位补符号位
以上四个位移指令的源操作数只能是 立即数1
或 CL
中的数, 如果左移多为, 将次数存入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指令系统 逻辑运算和移位运算指令的主要内容,如果未能解决你的问题,请参考以下文章