第六節(jié)控制轉(zhuǎn)移_第1頁
第六節(jié)控制轉(zhuǎn)移_第2頁
第六節(jié)控制轉(zhuǎn)移_第3頁
第六節(jié)控制轉(zhuǎn)移_第4頁
第六節(jié)控制轉(zhuǎn)移_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、q 程序是指令的集合程序是指令的集合 指令代碼在內(nèi)存中順序存放指令代碼在內(nèi)存中順序存放在在8086系列中,指令的地址由系列中,指令的地址由CS和和IP兩個寄存器決定。兩個寄存器決定。 CS和和IP兩兩寄存器的內(nèi)容決定了程序的流程寄存器的內(nèi)容決定了程序的流程 ,CPU取來一條指令后,自動將取來一條指令后,自動將IP的值加上該指令的字節(jié)數(shù),的值加上該指令的字節(jié)數(shù), 使使IP順序指向下一條指令,順序指向下一條指令, CPU取來緊接著的指令執(zhí)行。取來緊接著的指令執(zhí)行。 (此時此時IP的變化由的變化由CPU內(nèi)部的硬件自動完成內(nèi)部的硬件自動完成)控制轉(zhuǎn)移指令改變控制轉(zhuǎn)移指令改變CS和和IP的值,使程序產(chǎn)的

2、值,使程序產(chǎn) 生分支、調(diào)用結(jié)構(gòu)。生分支、調(diào)用結(jié)構(gòu)。 例:比較例:比較(AX)、(BX)的大小,將大數(shù)存于的大小,將大數(shù)存于( max )單元。單元。 CMP AX, BX great XCHG AX, BX great: MOV max, AX 關(guān)于轉(zhuǎn)移指令和調(diào)用指令的尋址,關(guān)于轉(zhuǎn)移指令和調(diào)用指令的尋址,結(jié)合轉(zhuǎn)移指令來介紹結(jié)合轉(zhuǎn)移指令來介紹 JMP SHORT NEXT 指令本身占有兩個字節(jié)指令本身占有兩個字節(jié) 操作碼占一個字節(jié);操作碼占一個字節(jié);8位位移量占有一個字節(jié)位位移量占有一個字節(jié)=1050=1050H-1000HH-1000H源程序源程序 :條件轉(zhuǎn)移指令:條件轉(zhuǎn)移指令:JMP SHO

3、RT JMP SHORT nextnext. next:next:MOV AL,03HMOV AL,03HOPOP5050H H.OPOP0303H H.3000:10003000:1000H H3000:10503000:1050H H( (IP)IP)當(dāng)前當(dāng)前D D8 8=50=50H H( (IP)=(IP)IP)=(IP)當(dāng)前當(dāng)前+ +D8D8內(nèi)存內(nèi)存執(zhí)行操作:(執(zhí)行操作:(IP)(IP)當(dāng)前當(dāng)前+D8 源程序 : 源程序 :next :next :. -128-128.條件轉(zhuǎn)移指令:條件轉(zhuǎn)移指令:JMP SHORT JMP SHORT nextnext.+127+127. next:

4、next: MOV AL,03HMOV AL,03HJMP SHORT OPRJMP NEAR PTR OPR 指令本身占有三個字節(jié),指令本身占有三個字節(jié),位移量為位移量為D16,占有兩個字節(jié),范圍:占有兩個字節(jié),范圍:-32768+32767H。可可以轉(zhuǎn)移到段內(nèi)的任一位置。以轉(zhuǎn)移到段內(nèi)的任一位置。例:例: C1 SEGMENT JMP FAR PTR next_prog C1 ENDS C2 SEGMINT next_prog: C2 ENDS40001212+) 41212DSSI0010004A 4121241213412144121510004A00IPCS段間間接轉(zhuǎn)移操作示意圖段間間

5、接轉(zhuǎn)移操作示意圖1111111111101100JMP DWORD PTR SI的機器碼DS:SI 以單個狀態(tài)標(biāo)志作為轉(zhuǎn)移條件助記符以單個狀態(tài)標(biāo)志作為轉(zhuǎn)移條件助記符 轉(zhuǎn)移條件轉(zhuǎn)移條件 以以CX的值為的值為0作為轉(zhuǎn)移條件作為轉(zhuǎn)移條件以兩個無符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件以兩個無符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件以兩個帶符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件以兩個帶符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件1 所有條件轉(zhuǎn)移指令只能用段內(nèi)直接尋址方式,所有條件轉(zhuǎn)移指令只能用段內(nèi)直接尋址方式, 都是相對轉(zhuǎn)移,范圍(都是相對轉(zhuǎn)移,范圍(-128+127)。)。當(dāng)需往一個較遠地方進行條件轉(zhuǎn)移時,當(dāng)需往一個較遠地方進行條件轉(zhuǎn)移時,先選用條

6、件轉(zhuǎn)移轉(zhuǎn)到附近一個單元,先選用條件轉(zhuǎn)移轉(zhuǎn)到附近一個單元,然后,再用無條件轉(zhuǎn)移轉(zhuǎn)到較遠的目的地。然后,再用無條件轉(zhuǎn)移轉(zhuǎn)到較遠的目的地。2 條件轉(zhuǎn)移指令中,相當(dāng)一部分指令是在比較完二個數(shù)大小后,條件轉(zhuǎn)移指令中,相當(dāng)一部分指令是在比較完二個數(shù)大小后,根據(jù)結(jié)果而決定是否轉(zhuǎn)移,根據(jù)結(jié)果而決定是否轉(zhuǎn)移,3 條件轉(zhuǎn)移指令不影響標(biāo)志位條件轉(zhuǎn)移指令不影響標(biāo)志位 ASCII 字符表0000010100111001011101110000NULDLESP0Pp0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENGNAK%5EUeu

7、0110ACKSYN&6FVfv0111BELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?OoDEL注:H 表示高 3 位,L 表示低 4 位。HL ASCII碼美國標(biāo)準(zhǔn)信息交換代碼過程過程程序中具有獨立功能的部分編寫成獨立程序模塊。程序中具有獨立功能的部分編寫成獨立程序模塊。過程定義格式:過程定義格式: 過程名過程名 PROC 類型類型 RET 過程名過程名 ENDP 過程有兩種類型:按過程與調(diào)用語句間的位置過程有兩種類型:按過程與調(diào)用語句間的位置NEAR:

8、調(diào)用指令:調(diào)用指令CALL與過程在同一個代碼段中與過程在同一個代碼段中FAR: 調(diào)用指令調(diào)用指令CALL與過程不在同一個代碼段中與過程不在同一個代碼段中CALL指令和指令和RET指令都不影響條件碼。指令都不影響條件碼。code1 SEGMENT ;code段段 CALL subp ;調(diào)用調(diào)用 指令指令 MOV BX,AX PROC NEAR ;過程定義過程定義 RET ;返回返回 subp ENDP code1 ENDScode1 SEGMENT ;code段段 CALL subp ;調(diào)用調(diào)用 指令指令 MOV BX,AX PROC NEAR ;過程定義過程定義 RET ;返回返回 subp

9、ENDP code1 ENDS問題:本例中的返回地址?問題:本例中的返回地址?CALL IPH IPL則指令操作圖示如下。則指令操作圖示如下。81200H81201HCSEG1 SEGMENT CALL FAR PTR PPP;AAA處的處的CS:IP入棧,轉(zhuǎn)入棧,轉(zhuǎn)PPP AAA: CSEG1 ENDSCSEG2 SEGMENT PPP PROC FAR RET PPP ENDP CSEG2 ENDSCALL IPH IPL CSH CSLDIDI+1DI+2DI+3段間間接調(diào)用示意圖段間間接調(diào)用示意圖例如:例如:RET N 堆棧使用情況:堆棧使用情況: ASSUME CS:CODE,DS:

10、DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX PUSH BX PUSH CX QQQ: MOV AH,4CH INT 21H MAIN ENDPDELCHAR PROC NEAR DELCHAR ENDP END START( (BX)BX)( (SP)SP)( (CX)CX)QQQ的偏移地址的偏移地址PUSH BXPUSH BXPUSH CXPUSH CXCALL DELCHARCALL DELCHARRET 4RET 4RET 4 堆棧使用情況:堆棧使用情況: 例例2:在:在40個元素構(gòu)成的數(shù)組中,尋找第一個非零元素個元素構(gòu)成的數(shù)組中,尋找第一個非零元素MOV CX,40;MOV SI,0FFH;NEXT:INC SI;CMP BYTE PTR SI,0;LOOPZ NEXT; 當(dāng)前元素為當(dāng)前元素為0且未找完時,繼續(xù)尋找且未找完時,繼續(xù)尋找JNZ OKK;退出循環(huán)有兩種情況:退出循環(huán)有兩種情況:ZF=0,找到非零元素找到非零元素 或或CX=0:整個數(shù)組已找完,未找到非零元素,此時整個數(shù)組已找完,未找到非零元素,此時ZF=1CALL DISPLAY;未找到非零元素的處理未找到非零元素的處理RETOKK: .;找到

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論