8086逻辑运算和移位
一、邏輯運算指令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。
總結
以上是生活随笔為你收集整理的8086逻辑运算和移位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中的线程函数
- 下一篇: 数据的多段存储