測試某些示志位的情況來設定位元組的指令這是一大類指令,格式為:setxx reg8/mem8
它的功能是:若條件xx成立,則位元組暫存器reg8或節儲存器單元被設定為1,否則被設定為0.條件xx 見下表:
setz/sete zf=1 等於零/相等
setnz/setne zf=0 不等於零/不相等
sets sf=1 符號為負
setns sf=0 符號為正
setp/setpe pf=1 1的個數為偶
setnp/setpo pf=0 1的個數為奇
seto of=1 溢位
setno of=0 無溢位
setc/setb/setnae cf=1 進製/低於/不高於等於
setnc/setnb/setae cf=0 無進製/不低於/高於等於
setbe/setna cf=1或zf=1 低於等於/不高於
setnbe/seta cf=0且zf=0 不低於等於/高於
setl/setnge sf不等於nf 小於/不大於等於
setnl/setge sf=of 不小於/大於等於
setle/setng zf不等於of或zf=1 小於等於/不大於
setnle/setg sf=of且zf=0 不小於等於/大於
例1 如下程式段測試暫存器eax中的8位16進製制數是否有一位為0.bh=0表示沒有一位為0.
mov bh,0
mov cx,0
next:test al,0fh
setz bl
ror eax,4
loop next
例2 如下程式段統計ds:si所指向的位元組資料緩衝區中正數和負數的個數,假定緩衝區以0結尾.
xor dx,dx
next:lodsb
cmp al,0
jz short over
setg bl
setl bh
add dl,bl
add dh,bh
jmp next
over:...
CMP指令和標誌位
彙編中的cmp指令是一條比較指令,對比兩個運算元的大小,但是計算機並不理解大小,它只是對兩個運算元進行了一次減法操作,然後對一些標誌位進行了一些邏輯運算來判斷哪個數大,涉及的標誌位有如下一些 cf 是否有進製或者借位 zf 0標誌位,就是結果是否為0 of 溢位標誌位,是否計算機結果溢位了 sf 符...
8086標誌位作用及其相關指令
先插入386的32位標誌暫存器一張 8086只看低16位即可 1 進製標誌cf carry flag 進製標誌cf主要用來反映運算是否產生進製或借位。如果運算結果的最高位產生了乙個進製或借位,那麼,其值為1,否則其值為0。使用該標誌位的情況有 多字 位元組 數的加減運算,無符號數的大小比較運算,移位...
彙編指令對標誌位的影響
mov lea xchg push pop in out 傳送類指令不影響標誌位 add adc sub sbb cmp 加減法指令影響全部標誌位 inc dec 增一減一指令不影響cf neg 求補指令影響除cf外的5個標誌位,對cf位置1 mul imul 乘法指令只影響of位和cf位,對其他位...