組合語言學習筆記(十一)標誌寄存器

來源:互聯網
上載者:User
flag寄存器(傳送指令不會影響標誌寄存器)
flag的1、3、5、12、13、14、15位在8086cpu中沒有使用,不具有任何含義。而其餘的都有特殊含義

ZF:0標誌位
如果結果為0,則ZF=1
如果結果非0,則ZF=0
PF:奇偶標誌位
如果1的個數為偶數,則PF=1,否則為0
SF:符號標誌位
結果為負數,SF=1,否則為0
CF:進位標誌位
OF:溢出標誌位

adc:帶進位的加法指令,利用了CF位上記錄的進位值
sbb:帶借位減法指令,利用了CF位上記錄的借位值
cmp:是比較指令,功能相當於減法指令,不儲存結果。只關心哥哥標誌寄存器發生的相應變化

檢測比較結果的條件轉移指令:
檢測那些標誌位:被cmp影響的那些標誌位
je    相等則轉移    只檢測ZF的值
jne    不相等        
jb    低於        
jnb    不低於        
ja    高於        
jna    不高於        
j jump e equal n not b below a above
以上都是cmp進行無符號比較
執行個體:如果(ah)=(bh)則(ah)=(ah)+(ah),否則(ah)=(ah)+(bh)
結果:
cmp ah,bh
je s
add ah,bh
jmp short ok
s:add ah,ah
ok:ret

DF和串傳送指令
DF:方向標誌位
DF=0:每次操作後si,di遞增;否則遞減
movsb:將ds:si指向的記憶體單元中的位元組送入es:di中,然後根據標誌寄存器DF位的值,將si和di遞增或者遞減
movsw:以字的單位傳送
一般都和rep指令配合使用
rep movsb:
rep的作用是根據cx的值,重複執行後面的字串送指令

8086提供了兩條指令對DF繼續努力設定
cld:設定DF=0    clear
std:設定DF=1    set

pushf和popf
將標誌寄存器的值壓入棧
從棧中彈出值放入標誌寄存器














聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.