位运算

作者: Jessica_nasa | 来源:发表于2020-12-29 10:01 被阅读0次

    算术移位指令 【影响CF标志位】

    SAL    (Shift Arithmetic Left)    算术左移

    MOV        AL,0x81             1000 0001 = 0x81

    SAL          AL,    1               0000 0010    CF = 1   (CF=最高位移出来放到CF位,低位补0)

    【最高位向左移,移出来的最高位放到CF位,空出的最低位补0】          

    SAR    (Shift Arithmetic Right)    算术右移

    MOV    AL,    0x81           1000 0001 = 0x81

    SAR    AL,    1                  1100 0000     CF = 1    (CF=最低位移出来放到CF位,高位补符号位)

    【最低位向右移,移出来的放到CF位,空出的最高位补符号位是什么补什么】

    逻辑移位指令 【影响CF标志位】

    SHL    (Shift Left)    逻辑左移

     MOV        AL,0x81             1000 0001 = 0x81

     SHL          AL,    1               0000 0010  CF = 1    (CF=最高位移出来放到CF位,低位补0)

    【最高位向左移,移出来的最高位放到CF位,空出的最低位补0】

    SHR    (Shift Right)    逻辑右移

    MOV    AL,    0x81           1000 0001 = 0x81

    SHR    AL,    1                  0100 0000     CF = 1    (CF=最低位移出来放到CF位,高位都补0)

    【最低位向右移,移出来的放到CF位,空出的高位补0,没符号之说】

    循环移位 【影响CF标志位】

    ROL(Rotate Left)循环左移

    MOV    AL,    0x81           1000 0001 = 0x81

    ROL    AL,    1                 0000 0011    CF = 1(CF=最高位移出来的位是啥就是啥)

    【最高位向左移动,移出来的最高位放到,空出来的最低位】

    ROR(Rotate Right)循环右移

    MOV    AL,    0x81           1000 0001 = 0x81

    ROR    AL,    1                 1100 0000    CF = 1(CF=最低位移出来的位是啥就是啥)

    【最低位向右移动,移出来的最低位放到,空出来的最高位】

    带进位循环移位 【影响CF标志位】重点:把CF位加到被操作数的最高位成员,然后再循环移动

    RCL(Rotate Through Carry Left)带进位循环左移

    CF = 0

    MOV    AL,    0x81           1000 0001 = 0x81

    RCL    AL,    1                 0000 0010    CF = 1    (CF位补到最低位)

    RCR(Rotate Through Carry Right)带进位循环左移

    CF = 0

    MOV    AL,    0x81           1000 0001 = 0x81

    RCR    AL,    1                 0100 0000    CF = 1 (最低位补到CF位)


    相关文章

      网友评论

          本文标题:位运算

          本文链接:https://www.haomeiwen.com/subject/kyttoktx.html