匯編語言中cmp指令用法筆記與總結
本文實例講述了匯編語言中cmp指令用法。分享給大家供大家參考,具體如下:
cmp是比較指令,cmp的功能是相當于減法指令,只是不保存結果.cmp指令執(zhí)行后,將對標志寄存器產(chǎn)生影響.其他相關指令通過識別這些被影響的標志寄存器來得知比較結果.
cmp指令格式: cmp 操作對象1,操作對象2
功能: 計算操作對象1 - 操作對象2 但不保存結果,僅僅根據(jù)計算結果對標志寄存器進行設置.比如cmp ax,ax 是做ax - ax 的運算,結果為0,但并不在ax中保存,僅影響flag的相關各位.
指令執(zhí)行后: zf = 1,pf = 1,sf = 0,cf = 0,of = 0;
下面的指令:
mov ax,8 mov bx,3 mov ax,bx
執(zhí)行后: (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 將產(chǎn)生錯位,所以 : 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
編程: 統(tǒng)計data段中數(shù)值小于8的字節(jié)的個數(shù),用ax保存統(tǒng)計結果
mov ax,data mov ds,ax mov ax,0 ;初始化累加器 mov bx,0 ;ds:bx指向第一個字節(jié) mov cx,8 s : cmp byte ptr [bx] , 8 ;和8進行比較 jnb next ;如果不小于8轉到next,繼續(xù)循環(huán) inc ax ;如果小于8就將計數(shù)值加1 next:inc bx loop s
程序執(zhí)行后: ax = 2
還有疑問的可以去查看一下指令手冊,講解的比較細致
希望本文所述對大家匯編語言程序設計有所幫助。
相關文章
ARM匯編判斷之如何用匯編判斷數(shù)組中正負數(shù)個數(shù)
這篇文章主要介紹了ARM匯編判斷之如何用匯編判斷數(shù)組中正負數(shù)個數(shù),在匯編語言中程序的基本框架是不變的,這里我們可以直接把正向遍歷的程序給貼過來,然后我們思考怎么運用判斷后綴把數(shù)組中正數(shù)和負數(shù)分開,進行判斷個數(shù)和分別求和,需要的朋友可以參考下2022-04-04用匯編語言實現(xiàn)從1加到100的方法(1+2+...+100)
這篇文章主要介紹了用匯編語言實現(xiàn)從1加到100的方法(1+2+...+100),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01