1. 程式人生 > >AT&T 彙編移位運算

AT&T 彙編移位運算

 1.移位乘法

      sal destination

      sal %c1, destination

      sal shifter, destination

      第一種格式destination的值向左移1位,這等同於使值乘以2.  線第二種格式把destination的值向左移動CL暫存器中指定的位數。 最後一個版本把destination的值向左移動shifer值指定的位數

.section .data
value1:
   .int 25
.section .text
.globl _start
_start:
    nop
    movl $10,%ebx
    sall %ebx
    movb $2,%cl
    sall %cl,%ebx
    sall $2,%ebx
    sall value1
    sall $2,value1
    movl $1,%eax
    movl $0,%ebx
    int $0x80

values1=200    edx暫存器的值為320

2.移位除法

注意整數的符號。通過移位進行除法操作涉及把二進位制體向右移位。但處,當把能數值向右移位時,必須夢對於無符號整數,向右移位產生的空位可以被填充為零、而且不會有任何問題,不本的是,對於帶符號整數,使用零填充高位部分會對負數產生有害的影響。為了解決這個問題,有兩個向右移位指令。SHR指令清空移位造成的空位,所以它只能用於對無符號整數進行移位操作。SAR指令根據整數的符號位,要麼清空,要麼設定移位造成的空位。