組合語言指令學習之邏輯運算

2021-06-03 23:31:21 字數 1462 閱讀 4532

組合語言的邏輯運算也是我們通常所說的:非、與、或、異或等

(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 操作結...