組合語言的邏輯運算也是我們通常所說的:非、與、或、異或等
(1)否操作指令
指令格式如下:
not oprd
操作後的結果:oprd各位取反,運算元可以是通用暫存器,可以是儲存單元,但是不能是立即數對標誌位沒有影響。
(2)邏輯與操作(and)
指令格式如下:
and oprd1,oprd2
操作的結果如下:
按位進行「與」操作,執行指令後,cf = 0,of = 0,標誌位pf,zf,sf反映運算結果,標誌位af未定義。某個運算元自己與自己相「與」,則值不變,但是可以是進製標誌cf清0
該指令的主要作用是使運算元中的某些為保持不變,其它為清零
保持不變的位和"1"與,清零的位和「0」與
(3)邏輯或操作(or)
指令格式如下:
or oprd1,oprd2
操作的結果如下:
運算元按位進行「或」操作,指令執行後:cf=0,of=0,標誌pf/zf/sf反映運算結果,標誌位af未定義
該指令的作用主要是:保證某些位不變,某些為設定位1,保持不變的為和「0」做或運算,設定為1的位和「1」做或運算。
(4)異或運算指令
指令格式如下:
xor oprd1,oprd2,
異或執行的規則如下:
xor 0,0 = 0
xor 0,1 = 1
xor 1,0 = 1
xor 1,1 = 0
通過上面的分析可以看到,如果某一位與「0」進行異或操作則會保持不變,如果與「1」進行異或操作則剛好取反,所以進行xor操作的作用搞好是這樣的,保持某些位不變,某些為取反。
對標誌暫存器的影響:cf=0,of=0標誌位pf,zf,sf反映運算結果,標誌為af未定義。
如果乙個運算元xor a,a,則a會被置0,cf=of=0,zf=1,pf=1,sf=0
這個操作也是經常被使用的。
(5)測試指令
test oprd1,oprd2
這條指令和and操作的指令執行相同,但是不會把執行的結果放在oprd1中,該條指令的作用是判斷運算元oprd1中是否由某些位為1,然後根據zf的結果進行相關的操作,主要是可以和跳轉指令一起執行進行條件的跳轉。
對於一些操作可能需要取反後才可以進行正確的判斷,根據上下文來進行分析。
根據移位運算和邏輯運算我們實現如下的乙個功能
怎麼樣把雙字同時進行右移四位
ax = 9876h,bx=5432h,則axbx為雙字98765432h,則移位後的結果是87654320h
mov cl,4
mov dl,bh (dl=54h)
shl bx,cl (bx=4320h)
shl ax,cl (ax=8760h)
shr dl,cl (dl=05h)
or al,dl (al = 65)
最後操作的結果87654320h,完成了相關的移位和合併等操作
彙編邏輯運算指令
1.否操作指令not not oprd 把oprd取反,再回送給oprd 對標誌位沒有影響 2.與操作指令and 與 and oprd1,oprd2 oprd1和oprd2執行與操作,結果送到oprd1 執行後,cf of 0,標誌pf,zf,sf反映運算結果,af未定義 某個運算元自身與,值不變,...
組合語言 彙編指令
功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...
組合語言 算術運算類指令
知識回顧 幾個重要標誌位的含意 cf 進製標誌 1 算術操作最高位產生了進製或借位 0 最高位無進製或借位 pf 奇偶標誌 1 資料最低8位中1的個數為偶數 0 資料最低8位中1的個數為奇數 af 輔助進製標誌 1 d3 d4位產生了進製或借位 0 d3 d4位無進製或借位 zf 零標誌 1 操作結...