剛剛看到了cmp指令,一開(kāi)始有點(diǎn)暈。后來(lái)上網(wǎng)找了些資料,終于看明白了,為了方便初學(xué)者,我就簡(jiǎn)單寫(xiě)下我的思路吧。高手繞過(guò),謝謝! cmp(compare)指令進(jìn)行比較兩個(gè)操作數(shù)的大小 例:cmp oprd1,oprd2 為第一個(gè)操作減去第二個(gè)操作數(shù), 但不影響第兩個(gè)操作數(shù)的值 它影響flag的CF,ZF,OF,AF,PF 我們?cè)趺磁袛啻笮∧兀?/p> 若執(zhí)行指令后 ZF=1 這個(gè)簡(jiǎn)單,則說(shuō)明兩個(gè)數(shù)相等,因?yàn)閦ero為1說(shuō)明結(jié)果為0 當(dāng)無(wú)符號(hào)時(shí): 若 CF=1 則說(shuō)明了有進(jìn)位或借位,cmp是進(jìn)行的減操作,故可以看出為借位,所以,此時(shí)oprd1<oprd2 CF=0 則說(shuō)明了無(wú)借位,但此時(shí)要注意ZF是否為0,若為0,則說(shuō)明結(jié)果不為0,故此時(shí)oprd1>oprd2 當(dāng)有符號(hào)時(shí): 若SF=0,OF=0 則說(shuō)明了此時(shí)的值為正數(shù),沒(méi)有溢出,可以直觀的看出,oprd1>oprd2 若SF=1,OF=0 則說(shuō)明了此時(shí)的值為負(fù)數(shù),沒(méi)有溢出,則為oprd1<oprd2 若SF=0,OF=1 則說(shuō)明了此時(shí)的值為正數(shù),有溢出,可以看出oprd1<oprd2 若SF=1,OF=1則說(shuō)明了此時(shí)的值為負(fù)數(shù),有溢出,可以看出oprd1>oprd2 最后兩個(gè)可以作出這種判斷的原因是,溢出的本質(zhì)問(wèn)題: 兩數(shù)同為正,相加,值為負(fù),則說(shuō)明溢出 兩數(shù)同為負(fù),相加,值為正,則說(shuō)明溢出 故有,正正得負(fù)則溢出,負(fù)負(fù)得正則溢出 很簡(jiǎn)單的一條指令,初學(xué)者看看,我感覺(jué)我寫(xiě)的還挺詳細(xì)的,哈哈……
補(bǔ)充: 兩數(shù)相減,同號(hào),則不溢出 兩數(shù)為異號(hào),結(jié)果與減數(shù)符號(hào)相同,則溢出。剛剛看到了cmp指令,一開(kāi)始有點(diǎn)暈。后來(lái)上網(wǎng)找了些資料,終于看明白了,為了方便初學(xué)者,我就簡(jiǎn)單寫(xiě)下我的思路吧。高手繞過(guò),謝謝! cmp(compare)指令進(jìn)行比較兩個(gè)操作數(shù)的大小 例:cmp oprd1,oprd2 為第一個(gè)操作減去第二個(gè)操作數(shù), 但不影響第兩個(gè)操作數(shù)的值 它影響flag的CF,ZF,OF,AF,PF 我們?cè)趺磁袛啻笮∧兀?/p> 若執(zhí)行指令后 ZF=1 這個(gè)簡(jiǎn)單,則說(shuō)明兩個(gè)數(shù)相等,因?yàn)閦ero為1說(shuō)明結(jié)果為0 當(dāng)無(wú)符號(hào)時(shí): 若 CF=1 則說(shuō)明了有進(jìn)位或借位,cmp是進(jìn)行的減操作,故可以看出為借位,所以,此時(shí)oprd1<oprd2 CF=0 則說(shuō)明了無(wú)借位,但此時(shí)要注意ZF是否為0,若為0,則說(shuō)明結(jié)果不為0,故此時(shí)oprd1>oprd2 當(dāng)有符號(hào)時(shí): 若SF=0,OF=0 則說(shuō)明了此時(shí)的值為正數(shù),沒(méi)有溢出,可以直觀的看出,oprd1>oprd2 若SF=1,OF=0 則說(shuō)明了此時(shí)的值為負(fù)數(shù),沒(méi)有溢出,則為oprd1<oprd2 若SF=0,OF=1 則說(shuō)明了此時(shí)的值為正數(shù),有溢出,可以看出oprd1<oprd2 若SF=1,OF=1則說(shuō)明了此時(shí)的值為負(fù)數(shù),有溢出,可以看出oprd1>oprd2 最后兩個(gè)可以作出這種判斷的原因是,溢出的本質(zhì)問(wèn)題: 兩數(shù)同為正,相加,值為負(fù),則說(shuō)明溢出 兩數(shù)同為負(fù),相加,值為正,則說(shuō)明溢出 故有,正正得負(fù)則溢出,負(fù)負(fù)得正則溢出 很簡(jiǎn)單的一條指令,初學(xué)者看看,我感覺(jué)我寫(xiě)的還挺詳細(xì)的,哈哈……
補(bǔ)充: 兩數(shù)相減,同號(hào),則不溢出 兩數(shù)為異號(hào),結(jié)果與減數(shù)符號(hào)相同,則溢出。 |
|
來(lái)自: Rainboy913 > 《win32 匯編》