控制轉(zhuǎn)移類指令課件_第1頁
控制轉(zhuǎn)移類指令課件_第2頁
控制轉(zhuǎn)移類指令課件_第3頁
控制轉(zhuǎn)移類指令課件_第4頁
控制轉(zhuǎn)移類指令課件_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

8088/8086CPU指令系統(tǒng)尋址方式解決了操作數(shù)存放的形式,本節(jié)講述8088/8086CPU基本指令的助記符表示形式及功能結(jié)合不同的尋址方式,將133條基本指令組合為上千種指令功能8088/8086CPU基本指令類數(shù)據(jù)傳送類指令算術(shù)運算類指令邏輯運算類指令串操作類指令控制轉(zhuǎn)移類指令處理器控制類指令程序轉(zhuǎn)移指令用來控制程序的走向,其實質(zhì)是設(shè)法改變當(dāng)前的CS和IP值,以使CPU轉(zhuǎn)移到一個新的地址處執(zhí)行程序??刂妻D(zhuǎn)移類指令控制轉(zhuǎn)移類指令JMP——無條件轉(zhuǎn)移指令

段內(nèi)直接短轉(zhuǎn)移

JMPSHORTLABEL

;IP目的←IP當(dāng)前

+rel8(8bit符號數(shù))

rel8

在-128~+127之間

段內(nèi)直接近轉(zhuǎn)移

JMPNEARLABEL

;IP目的←IP當(dāng)前

+rel16

(16bit符號數(shù))

rel16

在-32768~+32767之間段內(nèi)直接短轉(zhuǎn)移——rel8

←IP源←IP當(dāng)前←IP目的錯誤的rel8正確的rel8LABELJMPSHORLABELIP目的←IP當(dāng)前

+rel8IP目的←IP源

+rel8+2注:rel8

80H

←06H段內(nèi)直接近轉(zhuǎn)移——rel16

←IP源←IP當(dāng)前←IP目的錯誤的rel16正確的rel16LABELJMPNEARLABELIP目的←IP當(dāng)前

+rel16IP目的←IP源

+rel16+3←00H←05H控制轉(zhuǎn)移類指令JMP——無條件轉(zhuǎn)移指令

段內(nèi)間接轉(zhuǎn)移

寄存器中的值為段內(nèi)IP目的地址

JMPBX

存儲器中的值為段內(nèi)IP目的地址

JMPWORD[BX]JMPWORD[2000H]

注:段內(nèi)轉(zhuǎn)移方式——CS不變、IP變控制轉(zhuǎn)移類指令JMP——無條件轉(zhuǎn)移指令

段間直接遠(yuǎn)轉(zhuǎn)移

JMPFARLABEL

;LABEL為CS目的:IP目的

段間間接遠(yuǎn)轉(zhuǎn)移

JMPDWORD[BX]

;CS目的:IP目的在地址[BX]中

注:段間轉(zhuǎn)移方式——CS變、IP變當(dāng)前CS=2100HJMP0C020065轉(zhuǎn)移目標(biāo)的偏移地址轉(zhuǎn)移目標(biāo)的段地址×1621000H代碼段1×1665000H新CS=6500H代碼段2轉(zhuǎn)移至此當(dāng)前IP=1500H新IP=020CH…段內(nèi)間接轉(zhuǎn)移與段間間接遠(yuǎn)轉(zhuǎn)移例

若(BX)=2000HJMPWORD[BX]CS目的

=CS源

IP目的=3C2AHJMPDWORD[BX]CS目的

=3367HIP目的=3C2AH2000H控制轉(zhuǎn)移類指令CALL、RET

——過程調(diào)用與過程返回指令

過程調(diào)用指令—CALLLABEL

段內(nèi)近調(diào)用過程CS不變,IP變;保護(hù)現(xiàn)場即將IP當(dāng)前值入棧段間遠(yuǎn)調(diào)用過程CS、IP均變;保護(hù)現(xiàn)場即將CS當(dāng)前、IP當(dāng)前值入棧過程返回指令—RET

定義近過程時

RET指令恢復(fù)現(xiàn)場即將IP當(dāng)前值出棧定義遠(yuǎn)過程時

RET指令恢復(fù)現(xiàn)場即將IP當(dāng)前、CS當(dāng)前值出??刂妻D(zhuǎn)移類指令

(IP當(dāng)前)→SS:SP

保護(hù)現(xiàn)場IP值入棧

段內(nèi)近調(diào)用過程——CALLLABEL

段內(nèi)近調(diào)用返回——RET(IP當(dāng)前)←

SS:SP

恢復(fù)現(xiàn)場IP值出棧

段間遠(yuǎn)調(diào)用過程——CALLLABEL(CS當(dāng)前)←

SS:SP恢復(fù)現(xiàn)場CS值出棧(CS當(dāng)前)→SS:SP

保護(hù)現(xiàn)場CS值入棧(IP當(dāng)前)→SS:SP

保護(hù)現(xiàn)場IP值入棧

段間遠(yuǎn)調(diào)用返回——RET(IP當(dāng)前)←

SS:SP

恢復(fù)現(xiàn)場IP值出??刂妻D(zhuǎn)移類指令CALL指令中的直接調(diào)用與間接調(diào)用段內(nèi)近過程調(diào)用直接IP目的間接IP目的段間遠(yuǎn)過程調(diào)用直接CS目的:IP目的間接CS目的:IP目的CALLMAIN

CALLBX

CALLDWORD[BX]

CALLMAIN

控制轉(zhuǎn)移類指令CALL、JMP指令比較

CALL指令

先保護(hù)現(xiàn)場CS當(dāng)前:IP當(dāng)前后獲得調(diào)用過程入口CS目的:IP目的

JMP指令

不保護(hù)現(xiàn)場CS當(dāng)前:IP當(dāng)前只獲得跳轉(zhuǎn)程序入口CS目的:IP目的控制轉(zhuǎn)移類指令JXX——有條件轉(zhuǎn)移指令

指令格式

JL、JGE、......JNZ等

指令特點

僅有段內(nèi)短轉(zhuǎn)移,IP目的

=IP當(dāng)前

+rel8rel8

值在頁內(nèi),即-128~+127間

前導(dǎo)指令

CMP、TEST、DECCX等

注:執(zhí)行JXX指令前的指令必須影響標(biāo)志位控制轉(zhuǎn)移類指令有條件轉(zhuǎn)移指令的英文符號

Zero——目的操作數(shù)減源操作數(shù)為0(ZF=0)

Equal——目的操作數(shù)等于源操作數(shù)(ZF=0)

Above——目的操作數(shù)高于源操作數(shù)(CF=0)

Below——目的操作數(shù)低于源操作數(shù)(CF=1)

Greater——目的操作數(shù)大于源操作數(shù)(OF⊕SF=0)

Less——目的操作數(shù)小于源操作數(shù)(OF⊕SF=1)

Carry——兩無符號運算后有進(jìn)位(CF=1)

Overflow——兩有符號運算后有溢出(OF=1)

Sign——兩有符號運算后有符號(SF=1)

Parity——奇偶位為偶(PF=1)

Not——不是控制轉(zhuǎn)移類指令JXX指令與狀態(tài)標(biāo)志位——ZF、CF與ZF有關(guān)的條件轉(zhuǎn)移指令

JE/JZ——兩數(shù)相等/兩數(shù)相減不為零(ZF=0)

JNE/JNZ——兩數(shù)有等/兩數(shù)相減為零(ZF=1)與CF有關(guān)的條件轉(zhuǎn)移指令

JAE/JNB——高于或等于/不低于(CF=0)

JNC——無進(jìn)位/無借位(CF=0)

JB/JNAE——低于/不高于也不等于(CF=1)

JC——有進(jìn)位/有借位(CF=1)例:JC/JNC指令;統(tǒng)計BX中1的個數(shù)(方法一) xoral,al ;AL=0,CF=0again: testbx,0ffffh;等價于cmpbx,0 jenext;ZF=1,即(BX)=0,轉(zhuǎn)移 shlbx,1 jncagain;CF=0.轉(zhuǎn)移 incal;CF=1,加1 jmpagainnext: ... ;AL保存1的個數(shù)例:JZ/JNZ指令 repz

cmpsb ;重復(fù)比較兩個字符串 jnzunmat ;ZF=0(不等),轉(zhuǎn)移 mov

al,0 ;順序執(zhí)行(相等) jmp

outputunmat: mov

al,0ffhoutput: mov

result,al repzcmpsb ;重復(fù)比較兩個字符串 jzmat ;ZF=1(相等),轉(zhuǎn)移 mov

al,0ffh ;順序執(zhí)行(不等) jmp

outputmat: mov

al,0output: mov

result,al控制轉(zhuǎn)移類指令JXX指令與狀態(tài)標(biāo)志位——SF、PF、OF與SF有關(guān)的條件轉(zhuǎn)移指令

JS——(SF=1)時跳轉(zhuǎn)

JNS——(SF=0)時跳轉(zhuǎn)與PF有關(guān)的條件轉(zhuǎn)移指令

JO/JPE——(PF=1)時跳轉(zhuǎn)

JNP/JPO——(PF=0)時跳轉(zhuǎn)與OF有關(guān)的條件轉(zhuǎn)移指令

JO——(OF=1)時跳轉(zhuǎn)

JNO——(OF=0)時跳轉(zhuǎn)例:JP/JNP指令;設(shè)字符的ASCII碼在AL寄存器中;將字符加上奇校驗位;在字符ASCII碼中為“1”的個數(shù)已為奇數(shù)時;則令其最高位為“0”;否則令最高位為“1”

andal,7fh

;最高位置“0”,同時判斷“1”的個數(shù)

jnpnext

;個數(shù)已為奇數(shù),則轉(zhuǎn)向next

oral,80h ;否則,最高位置“1”next: ...控制轉(zhuǎn)移類指令高于與大于、低于與小于

兩無符號數(shù)比較稱——高于、低于與標(biāo)志位CF有關(guān)

JA/JNBE、JAE/JNB、JB/JNAE、JBE/JNA

Above、Below、Not、Equal

兩有符號數(shù)比較稱——大于、小于與標(biāo)志位OF,SF有關(guān)

JG/JNLE、JGE/JNL、JL/JNGE、JLE/JNG

Greater、Less、Not、Equal控制轉(zhuǎn)移類指令JXX指令與狀態(tài)標(biāo)志位——CF,ZFJA/JNBE——目操作數(shù)>源操作數(shù)則轉(zhuǎn)移(CF=0且ZF=0)

JAE/JNB——目操作數(shù)≥源操作數(shù)則轉(zhuǎn)移(CF=0、ZF=0或ZF=1)

JB/JNAE——目操作數(shù)<源操作數(shù)則轉(zhuǎn)移(CF=1且ZF=0)

JBE/JNA——目操作數(shù)≤源操作數(shù)則轉(zhuǎn)移(CF=1、ZF=0或ZF=1)注:兩個無符號數(shù)的比較,>稱高于、<稱低于控制轉(zhuǎn)移類指令JXX指令與狀態(tài)標(biāo)志位——OF,SF,ZFJG/JNLE——目操作數(shù)>源操作數(shù)則轉(zhuǎn)移(OF⊕SF=0且ZF=0)

JGE/JNL——目操作數(shù)≥源操作數(shù)則轉(zhuǎn)移(OF⊕SF=0、ZF=0或ZF=1)

JL/JNGE——目操作數(shù)<源操作數(shù)則轉(zhuǎn)移(OF⊕SF=1且ZF=0)

JLE/JNG——目操作數(shù)≤源操作數(shù)則轉(zhuǎn)移(OF⊕SF=1、ZF=0或ZF=1)注:兩個有符號數(shù)的比較>稱大于、<稱小于例:比較無符號數(shù) cmpax,bx ;比較ax和bx jnbnext ;若ax≥bx,轉(zhuǎn)移 xchgax,bx ;若ax<bx,交換next: ...例:比較有符號數(shù) cmpax,bx ;比較ax和bx jnlnext ;若ax≥bx,轉(zhuǎn)移 xchgax,bx ;若ax<bx,交換next: ...控制轉(zhuǎn)移類指令LOOP——循環(huán)控制指令

指令特點以計數(shù)器CX,標(biāo)志位ZF為條件,控制循環(huán)體

指令格式

LOOPLABEL

若(CX)≠0,執(zhí)行循環(huán)體LABEL

LOOPZLABEL或LOOPELABEL

若(CX)≠0或ZF=1,執(zhí)行循環(huán)體LABEL

LOOPNZLABEL或LOOPNELABEL

若(CX)≠0或ZF=0、執(zhí)行循環(huán)體LABEL

JCXZ短標(biāo)號

若(CX)=0則轉(zhuǎn)移至目標(biāo)地址控制轉(zhuǎn)移類指令JNZ、LOOP指令比較AGA:MOVAX,BX

...

DECCXJNZAGAEXIT:......AGA:MOVAX,BX

...

LOOPAGAEXIT:......例:統(tǒng)計空格個數(shù)movcx,count;設(shè)置循環(huán)次數(shù)movsi,offsetstringxorbx,bx;bx清0,用于統(tǒng)計空格數(shù)moval,20hagain:cmpal,es:[si]jnznext;ZF=0,非空格,轉(zhuǎn)移incbx;ZF=1,是空格,個數(shù)加1next:incsiloopagain;字符個數(shù)減1,不為0繼續(xù)循環(huán)deccxjnzagain控制轉(zhuǎn)移類指令I(lǐng)NT——中斷控制指令

中斷概念特事特辦,立即處理

中斷類型

內(nèi)部中斷軟中斷,由執(zhí)行中斷指令I(lǐng)NT獲得中斷服務(wù)外部中斷硬中斷,由外部電平觸發(fā)獲得中斷服務(wù)控制轉(zhuǎn)移類指令CALL指令與INT指令比較

執(zhí)行CALLLABEL指令調(diào)用過程名為LABEL的子程序

執(zhí)行INTn指令調(diào)用中斷類型(號)為n的中斷服務(wù)程序控制轉(zhuǎn)移類指令保護(hù)現(xiàn)場與恢復(fù)現(xiàn)場

保護(hù)現(xiàn)場(斷點)

CALL近調(diào)用保護(hù)IP,遠(yuǎn)調(diào)用保護(hù)CS、IPINT保護(hù)FLAG、CS、IP

恢復(fù)現(xiàn)場(斷點)

RET根據(jù)定義過程恢復(fù)IP或IP、CSIRET恢復(fù)IP、CS、FLAG

注:由指令完成入棧、出棧操作控制轉(zhuǎn)移類指令I(lǐng)NTn指令執(zhí)行過程(F)→SS:SP

將標(biāo)志寄存器F的值入棧保存

TF→0

中服程序正常運行,非單步運行

IF→0

中服程序中關(guān)可屏蔽中斷INTR(CS當(dāng)前)→SS:SP

保護(hù)現(xiàn)場CS值入棧

[n*4+2]→(CS目的)獲得中服程序的入口CS值(IP當(dāng)前)→SS:SP

保護(hù)現(xiàn)場IP值入棧

[n*4]→(IP目的)獲得中服程序的入口IP值從CS目的:IP目的處執(zhí)行中服程序控制轉(zhuǎn)移類指令I(lǐng)RET指令執(zhí)行過程(IP當(dāng)前)←

SS:SP

恢復(fù)現(xiàn)場IP值出棧(CS當(dāng)前)←

SS:SP恢復(fù)現(xiàn)場CS值出棧(FLAG)←

SS:SP恢復(fù)標(biāo)志寄存器的值出棧控制轉(zhuǎn)移類指令I(lǐng)NTO——溢出中斷指令

指令功能若溢出標(biāo)志OF=1,產(chǎn)生4號中斷(中斷向量地址為10H),否則順序執(zhí)行ADDAX,BXINTOSUBAX,BXINTO控制轉(zhuǎn)移類指令中斷號、中斷向量、中斷向量表

中斷號(中斷類型碼)

PC機定義了256個中斷號從0~255或00H~0FFH

中斷向量

中斷服務(wù)程序的入口地址,即CS目的:IP目的值

中斷向量表存放所有中斷號對應(yīng)中斷服務(wù)程序的入口地址CS目的:IP目的值的存儲區(qū)控制轉(zhuǎn)移類指令I(lǐng)ntel對8088/8086CPU的保留中斷向量表區(qū)00000H0007FHFFFFFH128B中斷向量表區(qū)可存放32個中斷向量控制轉(zhuǎn)移類指令中斷向量的存放中斷服務(wù)程序中斷向量表8FC0H:2A30HIP目的CS目的

每個中斷服務(wù)程序的入口地址CS目的:IP目的

占用4個存儲單元。IP目的值放在低地址的

2個存儲單元。CS目的值放在高地址的

2個存儲單元。

從CS目的:

IP目的處執(zhí)行中斷服務(wù)程序。30H2AHC0H8FH控制轉(zhuǎn)移類指令中斷號與中斷向量表的關(guān)系

根據(jù)中斷號n求中斷服務(wù)程序的入口表地址

[IP目的]=n*4或[IP目的]=n←2[CS目的]=n*4+2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論