逆向随笔 - 位运算

一、算术移位运算


       算术左移 (shift arithmetic left)  

       SAL reg/mem, CL/Imm

       每位左移, 低位补 0, 高位进 CF

       例如: 0100 0101  CF=0  算术左移3位

       1 ->     1000 1010  CF = 0

       2 ->     0001 0100  CF = 1

       3 ->     0010 1000  CF = 0

‭ 

       算术右移 (shift arithmetic right)  

       SAR reg/mem, CL/Imm

       每位右移, 高位补符号位,  低位进 CF

       例如: 1100 0101  CF=0  算术右移3位

       1 ->     1110 0010  CF=1

       2 ->     1111 0001  CF=0

       3 ->     1111 1000  CF=1

 


二、逻辑移位运算


       逻辑左移(shift logical Left

       SHL reg/mem, CL/Imm

       每位左移, 低位补 0, 高位进 CF

       例如: 0100 0101  CF=0  算术左移3位

       1 ->     1000 1010  CF = 0

       2 ->     0001 0100  CF = 1

       3 ->     0010 1000  CF = 0

       

       逻辑右移 (shift logical right)  

       SHR reg/mem, CL/Imm

       每位右移, 高位补0,  低位进 CF

       例如: 1100 0101  CF=0  逻辑右移3位

       1 ->     0110 0010  CF=1

       2 ->     0011 0001  CF=0

       3 ->     0001 1000  CF=1




三、循环移位运算


       循环左移rotate left

       ROL reg/mem, CL/Imm

       每位左移, 高位填充到低位, 高位进 CF

       例如: 0100 0101  CF=0  循环左移3位

       1 ->     1000 1010  CF = 0

       2 ->     0001 0101  CF = 1

       3 ->     0010 1010  CF = 0

       

       循环右移 (rotate right)  

       ROR reg/mem, CL/Imm

       每位右移, 低位填充到高位, 低位进 CF

       例如: 1100 0101  CF=0  循环右移3位

       1 ->     1110 0010  CF=1

       2 ->     0111 0001  CF=0

       3 ->     1011 1000  CF=1


 

四、带进位循环移位运算


       带进位循环左移rotate through carry left

       RCL reg/mem, CL/Imm

       每位左移, CF填充到低位, 高位进 CF

       例如: 0100 0101  CF=0  带进位循环左移3位

       1 ->      1000 1010  CF = 0

       2 ->      0001 0100  CF = 1

       3 ->      0010 1001  CF = 0

       

       带进位循环右移 (rotate through carry right)  

       RCR reg/mem, CL/Imm

       每位右移, CF填充到高位, 低位进 CF

       例如: 1100 0101  CF=0  带进位循环右移3位

       1 ->      0110 0010  CF=1

       2 ->      1011 0001  CF=0

       3 ->      0101 1000  CF=1



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值