服装行业网站开发,网页实时翻译器,wordpress 下载站模板,百姓装潢口碑怎么样位移运算指令#xff1a;SHL逻辑移位#xff0c;SAR算术移位#xff0c; ROR循环右移 1. SHL 逻辑移位
Shift Left, SHL代表向左移位#xff0c;SHR代表向右移位
指令格式#xff1a;shl op1, op2
目的操作数 op1#xff1a;寄存器/内存地址源操作数 op2#xff1a;寄… 位移运算指令SHL逻辑移位SAR算术移位 ROR循环右移 1. SHL 逻辑移位
Shift Left, SHL代表向左移位SHR代表向右移位
指令格式shl op1, op2
目的操作数 op1寄存器/内存地址源操作数 op2寄存器通常是低8位寄存器CL/立即数表示移位的位数在32位系统中立即数通常限制为1-32之间的值
指令释义向左移动指定位数高位丢弃低位补0二进制按位移动
任何因移位产生的新的位都会自动填充位0零扩展 实例理解
1. 指令 shl eax, 0x10向左移动16位
假设eax的值是0x0000ffff位移运算前的二进制表示0000 0000 0000 0000 1111 1111 1111 1111位移运算后的二进制表示1111 1111 1111 1111 0000 0000 0000 0000
2. 指令 shl [ebx], cl
将内存地址[ebx]中的值向左移动CL寄存器中的指定位数 2. SAR 算术移位
Shift Arithmetic RightSAR算术右移SAL算术左移
指令格式sar op1, op2
目的操作数 op1寄存器/内存地址源操作数 op2寄存器/立即数
指令释义用于对寄存器或内存中的值进行算术右移操作算术右移是一种特殊的位移操作它在移位时会保留符号位最高位因此适用于有符号整数的移位操作。
SAR操作会对值进行符号扩展所有新的位会以最高有效位1来填充SAL与SHL指令操作相同都是对值进行零扩展新的位用0来填充 实例理解
1. sar al, 3
假设位移运算前为1000 0000那么位移运算后为1111 0000sar进行符号扩展复制最高有效位1 3. ROR 循环右移
Rotate Right循环右移
指令格式ror op1, op2
目的操作数 op1寄存器/内存地址源操作数 op2寄存器/立即数
指令释义将目标操作数向右循环移位常用于生成字符串哈希通过逐字符处理一个字符串右旋转打乱当前值的位顺序 实例理解
1. ror edx, 0x0c向右循环位移12次
假设位移运算前edx的值为0x87654321位移运算前二进制表示1000 0111 0110 0101 0100 0011 0010 0001位移运算后二进制表示0011 0010 0001 1000 0111 0110 0101 0100位移运算后的十六进制表示为 0x32187654 位移运算的指令格式
目的操作数 operand1寄存器或内存地址源操作数 operand2寄存器通常是低8位寄存器CL或立即数表示移位的位数在32位系统中立即数通常限制为1-32之间的值目前看的例子中源操作数用立即数更常见 前序文章
x86汇编语言入门基础三汇编指令篇1 逻辑位运算-CSDN博客
x86汇编语言入门基础三汇编指令篇2 算术运算-CSDN博客