8086邏輯運算和移位

2021-07-24 08:28:06 字數 1326 閱讀 9991

一、邏輯運算指令and/or/not/xor/test(與,或,非,異或,測試)

①與,或,非,異或

這邊大家都知道,這裡不在重複,舉幾個例子:

and ax,1000h        ;ax中的16位數和1000h相與,結果送到ax中。

or ax,00f0h         ;ax中的值與00f0相或,結果在ax中

not al                   ;al中的內容求反碼,結果在al中

xor al,0fh            ;al和0fh相異或,結果在al中

②測試test

測試指令執行and指令操作,把of,和cf標誌清0,修改sf,zf和pf標誌,test指令不會送操作結果,而僅僅影響標誌

test al,01           ;如al的最低位為1,則zf=0,否則zf=1

注意:

①在程式設計中,用and指令對指定位清0

②or指令對指定位置置1

③not指令常用來將某個資料取反碼,再加上1便得到補碼

④xor常用來取反某位,0變為1,1變為0

⑤test指令用來檢測指定位是1還是0

二、移位指令sal/sar/shl/shr/rol/ror/rcl/rcr

1)非迴圈移位指令sal/sar/shl/shr

算術移位指令sal,sar     (a:算術)

邏輯移位指令shl,shr     (h:邏輯)

注意:邏輯移位指令執行時,實際上是把運算元看成無符號數進行移位,所以,右移時最高位添0,;算術移位指令執行時,則將運算元看成有符號數進行移位,所以,右移時保持最高位的值不變,這裡的最高位就是符號位。

所有移位指令執行時,都會影響標誌位cf,of,pf,sf,zf.

所有移出的位都會在符號位裡面。

2)迴圈移位指令rol/ror/rcl/rcr

迴圈分小迴圈和大迴圈,

小迴圈就是不帶進製的迴圈:rol/ror

大迴圈就是帶進製的迴圈:rcl/rcr

迴圈移位指令影響cf和of標誌。

按照移入的位設定進製標誌cf

進行1次移位後,如果移位前的運算元最高位與移位後運算元的最高位不同(有變化),則of=1;否則of=0。

邏輯運算與移位運算

原始碼 正數的補碼與原碼相同例 7 原始碼 00000111 補碼 00000111 用8位二進位制表示乙個數 負數的補碼 符號位為1,其餘位為該數絕對值的原碼按位取反 然後整個數加1。7 原始碼 10000111 其絕對值為00000111 取反加一 11111001 為 7補碼 已知乙個數的補碼...

邏輯運算指令和移位指令

and xortest shlsal rolrcl ornot shrsar rorrcr and,or xor 和 test都是雙位元組操作指令,運算元的定址方式的規定與算術運算指令相同.not是單位元組操作指令,不允許使用立即數.邏輯運算均是按位進行操作,真值表如下 and 位與 or 位或 x...

移位,邏輯運算實現加法,乘法和除法

1 用邏輯運算實現加法 兩個正整數相加,如果使用移位操作符和邏輯運算 與 運算,適用於對應位相同的加法,如x 3 0011 y 3 0011 則x y 0011 x y 2 異或運算,適用於對應位不同的加法,如x 3 0011 y 3 則x y 0 故 對於二進位制加法 類似每一位的異或運算結果,只...