ASM16 23-24 位操作类指令
位操作类指令
- 位操作类指令以二进制位为基本单位进行数据的操作;这是一类常用的指令,都应该特别掌握
- 注意这些指令对标志位的影响
- 逻辑运算指令
AND
OR
XOR
NOT
TEST
- 移位指令
SHL
SHR
SAR
- 循环移位指令
ROL
ROR
RCL
RCR
- 逻辑运算指令
逻辑运算指令
1 | mov ax,-1 |
运行结果
移位指令
SHL
(逻辑左移(无符号))SHR
(逻辑右移(无符号))SAL
(算术左移(有符号))(同SHL
)SAR
(算术右移(有符号))
1 | mov ax,0fh |
运行结果(若最高位为0则算术右移后也补0)
1 | mov ax,0ffffh |
若最高位为1则算术右移后也补1
循环移位指令(rotate)
将操作数从另一端溢移出的位返回到另一端形成循环,分成不带进位和带进位,分别具有左移或右移操作
循环移位指令对标志的影响
按照指令功能设置进位标志CF
不影响SF、ZF、PF、AF
如果进行一位移动,则按照操作数的最高符号位是否改变,相应设置溢出标志OF:如果移位前的操作数最高位与移位后的操作数最高位不同(有变化),则OF=1;否则OF=0。当移位次数大于1时,OF不确定
当移位次数超过1时要将移位次数存到cl(shl
等同理)
1 | mov cl,8 |
运行结果
1 | ;带进位循环移位 32位 |
运行结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!