flag 寄存器
CF:進(jìn)位標(biāo)志位,產(chǎn)生進(jìn)位CF=1,否則為0
PF:奇偶位,如010101b,則該數(shù)的1有3個(gè),則PF=0,如果該數(shù)的1的個(gè)數(shù)為偶數(shù),則PF=1。0也是偶數(shù)
ZF:在相關(guān)指令執(zhí)行后(運(yùn)算和邏輯指令,傳送指令不影響ZF的值),其結(jié)果為0,則ZF=1,否則為0。
SF:符號(hào)標(biāo)志位,如果結(jié)果為負(fù),則SF=1,否則為0,SF是對(duì)有符號(hào)運(yùn)算的一種結(jié)果記錄
DF:方向標(biāo)志位,控制每次操作之后si、di的增減。df=0,遞增,否則遞減。串傳送指令movsb就是根據(jù)df的值,實(shí)現(xiàn)si和di的遞增或者遞減,movsw是傳遞一個(gè)字型數(shù)據(jù)。movsb和movsw通常與rep搭配使用,rep movsb就相當(dāng)于
s: movsb
loop s
rep的指令是根據(jù)cx的值重復(fù)執(zhí)行串傳送指令。
cld和std分別可以將df位置0和置1。
下面利用rep movsb指令將data段的第一個(gè)字符串移動(dòng)到它后面的空間
assume cs:code, ds:data
data segment
db 'Welcome to nasm!'
db 16 dup (0)
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0 ;定義了原始地址的段地址和偏移地址
mov ex, ax
mov di, 16 ;定義了目標(biāo)地址的段地址和偏移地址
mov cx, 16 ;循環(huán)16次
cld ;使df=0,si和di遞增
rep movsb ;默認(rèn)就是將原始地址ds:si傳遞到目標(biāo)地址es:di
code ends
end start
OF:溢出標(biāo)志位,發(fā)生溢出,OF=1,否則為0。CF是針對(duì)無符號(hào)的,OF是針對(duì)有符號(hào)的。
adc和sbb指令
在相加的兩個(gè)數(shù)字,都大于16位,則需要用adc來計(jì)算。
可以看到0198h和0183h相加時(shí),低位需要進(jìn)位,這時(shí)低位的加法就可以用adc指令
mov ax, 0198h
mov bx, 0183h
adc al, bl
add ah, bh
這樣ax中存放的就是031B了。adc是用來處理有進(jìn)位的加法的指令。
sbb是帶借位的減法指令,和adc一樣,是利用CF位記錄的借位值或進(jìn)位值。
cmp指令
cmp指令相當(dāng)于減法指令,但不保存結(jié)果,只會(huì)影響標(biāo)志寄存器的值,如
cmp ax, ax
則結(jié)果位0, pf=1, zf=1, sf=0, cf=0, of=0
cmp指令執(zhí)行后,可以通過sf和of兩個(gè)標(biāo)志位判斷其大小,之所以不能單純用sf判斷,是因?yàn)橛锌赡馨l(fā)生溢出現(xiàn)象。
檢測(cè)比較結(jié)果的條件轉(zhuǎn)移指令
jcxz就是一個(gè)條件轉(zhuǎn)移指令,不過它是檢測(cè)cx中的值是否為0,為0,就jmp,下面的指令是檢測(cè)標(biāo)志寄存器的相關(guān)位的值,如果該值滿足,則jmp。通常和cmp指令一同使用。這樣的效果就和c語言的if語句類似。
指令 | 含義 | 檢測(cè)的相關(guān)標(biāo)志位 |
---|---|---|
je | 等于則轉(zhuǎn)移 | zf=1 |
jne | 不等于則轉(zhuǎn)移 | zf=0 |
jb | 低于則轉(zhuǎn)移 | cf=1 |
jnb | 不低于則轉(zhuǎn)移 | cf=0 |
ja | 高于則轉(zhuǎn)移 | cf=0且zf=0 |
jna | 不高于則轉(zhuǎn)移 | cf=1或zf=1 |
e:equal
ne: not equal
b: below
nb: not below
a: above
na: not above文章來源:http://www.zghlxwxcb.cn/news/detail-435665.html
pushf和popf指令
pushf是將標(biāo)志寄存器的值壓棧,popf是從棧中彈出數(shù)據(jù),送入標(biāo)志寄存器中。文章來源地址http://www.zghlxwxcb.cn/news/detail-435665.html
到了這里,關(guān)于匯編語言學(xué)習(xí)筆記六的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!