例如:
mov ax,8
mov bx,3
cmp ax,bx
實現後:AX = 8,ZF = 0,PF = 1,SF = 0,CF = 0,of = 0。
執行cmp指令後,可以通過相關標誌位的值查看比較結果。
cmp ax、bx和bx的邏輯意義是比較ax和bx中的值。如果執行後:
ZF=1然後AX=BX。
ZF=0然後斧頭!=BX
SF=1,ax
SF=0,AX & gt=BX
SF=0且ZF=0,則ax》0;布朗克斯(Bronx)
SF=1或ZF=1,然後AX
當CPU執行cmp指令時,它還包含兩種含義:無符號運算和有符號數運算。
CMP ah BH
如果ah=bh,ah-bh=0,那麽ZF=1。
如果ah≠bh,那麽ah-bh≠0,所以ZF=0。
所以我們可以根據cmp指令執行後ZF的值來判斷這兩個數據是否相等。如果啊
對於有符號數運算,在ah中
Ah=1,bh=2,那麽AH-BH = 0FH,0FH是-1的補數,因為結果是負數,所以SF=1。
ah=0FEH,bx = OFFH;那麽ax-bx =-2-(-1)= OFFH,SF=1,因為結果是負的。
擴展數據:
匯編語言常用的指令集如下:
數據傳輸指令集
MOV
功能:將源操作數發送到目標操作數。
語法:MOV目標操作數,源操作數
格式:MOV r1,r2
MOV·r·m
MOV河
MOV河數據
XCHG
功能:交換兩個操作數的數據。
語法:XCHG
格式:XCHG r1,r2 XCHG m,r XCHG r,m r,m。
用力,爸爸
功能:將操作數推入或推出堆棧
語法:推送操作數彈出操作數
格式:推送數據彈出
POPF普什夫,POPA普沙
功能:堆棧指令組
格式:普什夫·POPF·普沙PUSHA
LEA、LDS、LES
功能:獲取要註冊的地址
語法:lea r、mlds r、mles r、m。
XLAT(XLATB)
功能:查表指令
語法:XLAT XLAT m
算術運算指令
模數轉換器加法
功能:加法指令
語法:add op1,op2 ADC op1,op2
格式:addr1,R2地址,m地址,r地址,數據。
撞擊痕跡:C、P、A、Z、S、o。
SBB潛艇
功能:減法指令
語法:subop1,op 2 sbop 1,op2。
格式:subr1,R2 subr,m subm,r subr,data subm,data。
撞擊痕跡:C、P、A、Z、S、o。
公司,12月
功能:將OP的值增加或減少壹。
語法:INC OP DEC OP
格式:INC r/m DEC r/m
撞擊痕跡:P、A、Z、S、o。
底片
功能:反轉OP的符號(取二進制補碼)
語法:否定OP
格式:負r/m
撞擊痕跡:C、P、A、Z、S、o。
穆爾,伊穆爾
功能:乘法指令
語法:MUL OP IMUL OP
格式:多路/多路/多路/多路
沖擊標記:C、P、A、Z、S、O(只有IMUL會影響S標記)。
IDIV分區
功能:除法指令
語法:DIV OP IDIV OP
格式:IDIV r/m分區
CWD CBW
功能:有符號數擴展指令
語法:CBW·CWD
AAA、AAS、AAM、AAD
功能:無壓BCD碼操作調整指令
語法:aaaaaaaamaad
撞擊痕跡:A、C(AAA、AAS)S、Z、P(AAM、AAD)
百度百科-CMP指令