8086匯編 cmp 指令
cmp 是比較指令,功能相當於減法指令,只是不保存結果。
cmp 指令執行后,將對標志寄存器產生影響。
格式:cmp 操作對象1,操作對象2
功能:計算操作對象1–操作對象2
原理:通過做減法運算影響標志寄存器,標志寄存器的相關位的取值,體現比較的結果。
cmp 指令說明
一、應用使用
其他相關指令通過識別這些被影響的標志寄存器位來得知比較結果。
應用方法:用標志寄存器值,確定比較結果。
二、無符號數比較與標志位取值
思路:通過cmp 指令執行后相關標志位的值,可以看出比較的結果
指令:cmp ax,bx
三、有符號數比較與標志位取值
問題:用cmp來進行有符號數比較時,CPU用哪些標志位對比較結果進行記錄
僅憑結果正負(SF)無法得出結論,需要配合是否溢出(OF)得到結論。
示例指令:cmp ah,bh
條件轉移指令
;或者其他影響標志寄存器的指令
cmp oper1, oper2
jxxx 標號
一、根據單個標志位轉移的指令
二、根據無符號數比較結果進行轉移的指令
三、根據有符號數比較結果進行轉移的指令
四、轉移指令全寫
j-Jump e-Equal n-Not b-Below a-Above L-less g-Greater s-Sign C-carry p-Parity o-Overflow z-Zero
條件准轉移指令使用
jxxx系列指令和cmp指令配合,構造條 件轉移指令
- 不必再考慮cmp指令對相關標志位的影響和jxxx指令對相關標志位的檢測
- 可以直接考慮cmp和jxxx指令配合使用時表現出來的邏輯含義。
- jxxx系列指令和cmp指令配合實現高級語言中if語句的功能
例1:如果(ah)=(bh),則(ah)=(ah)+(ah),否則(ah)=(ah)+(bh)
例2:如果(ax)=0,則(ax)=(ax)+1