本文實例講述了匯編語言中cmp指令用法。分享給大家供大家參考,具體如下:
cmp是比較指令,cmp的功能是相當于減法指令,只是不保存結果.cmp指令執行后,將對標志寄存器產生影響.其他相關指令通過識別這些被影響的標志寄存器來得知比較結果.
cmp指令格式: cmp 操作對象1,操作對象2
功能: 計算操作對象1 - 操作對象2 但不保存結果,僅僅根據計算結果對標志寄存器進行設置.比如cmp ax,ax 是做ax - ax 的運算,結果為0,但并不在ax中保存,僅影響flag的相關各位.
指令執行后: zf = 1,pf = 1,sf = 0,cf = 0,of = 0;
下面的指令:
執行后: (ax)= 8,zf = 0,pf = 1,sf = 0, cf = 0, of = 0
如果 ax = bx 則 ax - bx = 0 ,所以 : zf = 1
如果 ax != bx 則ax - bx != 0,所以 : zf = 0
如果ax < bx 則ax - bx 將產生錯位,所以 : cf = 1
如果 ax >= bx 則 ax - bx 將不必借位,所以 : cf = 0
如果ax > bx 則 ax - bx 既不必借位,結果又不為0, 所以 : cf = 0 并且 zf = 0
如果 ax <= bx 則ax - bx 既可能借位,結果可能為0,所以 : cf = 1 或 zf =1
檢測比較結果的條件轉移指令
je 等于則轉移 zf=1
jne 不等于則轉移 zf=0
jb 低于則轉移 cf=1
jnb 不低于則轉移 cf=0
ja 高于則轉移 cf=0且zf=0
jna 不高于則轉移 cf=1或zf=1
e : equal
ne : not equal
b: below
nb : not below
a : above
na : not above
編程: 統計data段中數值小于8的字節的個數,用ax保存統計結果
程序執行后: ax = 2
還有疑問的可以去查看一下指令手冊,講解的比較細致
希望本文所述對大家匯編語言程序設計有所幫助。