一、邏輯運算指令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 故 對於二進位制加法 類似每一位的異或運算結果,只...