彙編cmp比較指令詳解

2021-08-28 00:27:26 字數 903 閱讀 3089

剛剛看到了cmp指令,一開始有點暈。後來上網找了些資料,終於看明白了,為了方便初學者,我就簡單寫下我的思路吧。高手繞過,謝謝!

cmp(compare)指令進行比較兩個運算元的大小

例:cmp oprd1,oprd2

為第乙個操作減去第二個運算元,但不影響第兩個運算元的值,它影響flag的cf,zf,of,af,pf.

我們怎麼判斷大小呢?

若執行指令後:zf=1,則說明兩個數相等,因為zero為1說明結果為0.

當無符號時:

若cf=1,則說明了有進製或借位,cmp是進行的減操作,故可以看出為借位,所以,此時oprd1cf=0,則說明了無借位,但此時要注意zf是否為0,若為0,則說明結果不為0,故此時oprd1>oprd2.

當有符號時:

若sf=0,of=0 則說明了此時的值為正數,沒有溢位,可以直觀的看出,oprd1>oprd2;

若sf=1,of=0 則說明了此時的值為負數,沒有溢位,則為oprd1若sf=0,of=1 則說明了此時的值為正數,有溢位,可以看出oprd1若sf=1,of=1則說明了此時的值為負數,有溢位,可以看出oprd1>oprd2;

最後兩個可以作出這種判斷的原因是,溢位的本質問題:

兩數同為正,相加,值為負,則說明溢位

兩數同為負,相加,值為正,則說明溢位

故有,正正得負則溢位,負負得正則溢位

很簡單的一條指令,初學者看看,我感覺我寫的還挺詳細的,哈哈……

補充: 兩數相減,同號,則不溢位;兩數為異號,結果與減數符號相同,則溢位。

彙編cmp比較指令詳解

剛剛看到了cmp指令,一開始有點暈。後來上網找了些資料,終於看明白了,為了方便初學者,我就簡單寫下我的思路吧。高手繞過,謝謝!cmp compare 指令進行比較兩個運算元的大小 例 cmp oprd1,oprd2 為第乙個操作減去第二個運算元,但不影響第兩個運算元的值 它影響flag的cf,zf,...

彙編cmp比較指令詳解

剛剛看到了cmp指令,一開始有點暈。後來上網找了些資料,終於看明白了,為了方便初學者,我就簡單寫下我的思路吧。高手繞過,謝謝!cmp compare 指令進行比較兩個運算元的大小 例 cmp oprd1,oprd2 為第乙個操作減去第二個運算元,但不影響第兩個運算元的值,它影響flag的cf,zf,...

彙編cmp比較指令詳解

cmp compare 指令進行比較兩個運算元的大小 例 cmp oprd1,oprd2 為第乙個操作減去第二個運算元,但不影響第兩個運算元的值 它影響flag的cf,zf,of,af,pf 我們怎麼判斷大小呢?若執行指令後 zf 1 這個簡單,則說明兩個數相等,因為zero為1說明結果為0 當無符...