邏輯移位(不管是左移位還是右移位) 都是空缺處補0 例如: mov ax , 1100_0111_0110_1000Bmov cl , 3shl ax , cl ; 結果 ax = 0011_1011_0100_0000 mov ax , 1100_0111_0110_1000Bmov cl , 3shr ax , cl ; 結果 ax = 0001_1000_1110_1101 算術移位要保證符號位的不改變(邏輯左移位補0, 邏輯右移位看符號位) 例如: mov ax , 1100_0111_0110_1000Bmov cl , 3sal ax , cl ; 結果 ax = 0011_1011_0100_0000 mov ax , 1100_0111_0110_1000Bmov cl , 3sar ax , cl ; 結果 ax = 1111_1000_1110_1101 mov ax , 0100_0111_0110_1000Bmov cl , 3sar ax , cl ; 結果 ax = 0000_1000_1110_1101 可以總結如下: 算術左移同邏輯左移 算術右移移入的位用符號位填
邏輯移位(不管是左移位還是右移位) 都是空缺處補0 例如: mov ax , 1100_0111_0110_1000Bmov cl , 3shl ax , cl ; 結果 ax = 0011_1011_0100_0000 mov ax , 1100_0111_0110_1000Bmov cl , 3shr ax , cl ; 結果 ax = 0001_1000_1110_1101 算術移位要保證符號位的不改變(邏輯左移位補0, 邏輯右移位看符號位) 例如: mov ax , 1100_0111_0110_1000Bmov cl , 3sal ax , cl ; 結果 ax = 0011_1011_0100_0000 mov ax , 1100_0111_0110_1000Bmov cl , 3sar ax , cl ; 結果 ax = 1111_1000_1110_1101 mov ax , 0100_0111_0110_1000Bmov cl , 3sar ax , cl ; 結果 ax = 0000_1000_1110_1101 可以總結如下: 算術左移同邏輯左移 算術右移移入的位用符號位填