第6章-1 分支結(jié)構(gòu)程序設(shè)計_第1頁
第6章-1 分支結(jié)構(gòu)程序設(shè)計_第2頁
第6章-1 分支結(jié)構(gòu)程序設(shè)計_第3頁
第6章-1 分支結(jié)構(gòu)程序設(shè)計_第4頁
第6章-1 分支結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計第六章分支結(jié)構(gòu)程序第六章分支結(jié)構(gòu)程序分支程序常用的有兩種結(jié)構(gòu)形式:分支程序常用的有兩種結(jié)構(gòu)形式:6.1 6.1 比較比較/ /測試分支結(jié)構(gòu)測試分支結(jié)構(gòu)6.2 6.2 跳轉(zhuǎn)表多路分支結(jié)構(gòu)跳轉(zhuǎn)表多路分支結(jié)構(gòu)單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 1 1 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 2 2 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 3 3 循環(huán)控制指令循環(huán)控制指令 4 4 子程序調(diào)用指令子程序調(diào)用指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編

2、語言程序設(shè)計程序設(shè)計單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計1 無條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計 JMP STATJMP STAT(段內(nèi)直接轉(zhuǎn)移)(段內(nèi)直接轉(zhuǎn)移) JMP BX JMP BX (段內(nèi)間接轉(zhuǎn)移)(段內(nèi)間接轉(zhuǎn)移) JMP FAR PRT ADD2JMP FAR PRT ADD2(段間直接轉(zhuǎn)移)(段間直接轉(zhuǎn)移) JMP DWOD PTRBX+ADDR3JMP DWOD PTRBX+ADDR3(段間間接轉(zhuǎn)移)(段間間接轉(zhuǎn)移)單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言

3、匯編語言程序設(shè)計程序設(shè)計2 2 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 (1 1)簡單條件轉(zhuǎn)移指令)簡單條件轉(zhuǎn)移指令 (2 2)無符號數(shù)條件轉(zhuǎn)移指令)無符號數(shù)條件轉(zhuǎn)移指令 (3 3) 有符號數(shù)條件轉(zhuǎn)移指令有符號數(shù)條件轉(zhuǎn)移指令 它們都有通用的語句格式和功能。它們都有通用的語句格式和功能。 語句格式:語句格式: 標(biāo)號:標(biāo)號: 操作符操作符 短標(biāo)號短標(biāo)號 功能:功能: 如果條件滿足,則(如果條件滿足,則(IPIP)位移量)位移量IPIP。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計(1 1)簡單條件轉(zhuǎn)移指令)簡單條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯

4、編語言匯編語言程序設(shè)計程序設(shè)計單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計(2 2)無符號數(shù)條件轉(zhuǎn)移指令)無符號數(shù)條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計(3 3) 有符號數(shù)條件轉(zhuǎn)移指令有符號數(shù)條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計6.1 比較比較/測試分支結(jié)構(gòu)程序設(shè)計測試分支結(jié)構(gòu)程序設(shè)計P=先要對處理的問題進(jìn)行比較、測試或者進(jìn)行算術(shù)運(yùn)算、邏先要對處理的問題進(jìn)行比較、測試或者進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算,以產(chǎn)生有效的狀態(tài)標(biāo)志。然后選擇條件轉(zhuǎn)移指令產(chǎn)輯運(yùn)算

5、,以產(chǎn)生有效的狀態(tài)標(biāo)志。然后選擇條件轉(zhuǎn)移指令產(chǎn)生分支轉(zhuǎn)移。通常一條條件轉(zhuǎn)移指令只能產(chǎn)生兩路分支。若生分支轉(zhuǎn)移。通常一條條件轉(zhuǎn)移指令只能產(chǎn)生兩路分支。若要實現(xiàn)多路分支,必須使用多條轉(zhuǎn)移指令。要實現(xiàn)多路分支,必須使用多條轉(zhuǎn)移指令。n n條條件轉(zhuǎn)移指條條件轉(zhuǎn)移指令可以產(chǎn)生令可以產(chǎn)生n nl l路分支。路分支。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計圖圖6.1 比較比較/測試分支結(jié)構(gòu)的兩種程序流程測試分支結(jié)構(gòu)的兩種程序流程(a a)相當(dāng)于高級語言中的)相當(dāng)于高級語言中的IFIFTHENTHENELSEELSE語句,根據(jù)條語句,根據(jù)條件成立與否,分兩種情況分別處

6、理。(件成立與否,分兩種情況分別處理。(b b)相當(dāng)于高級語)相當(dāng)于高級語言中的言中的IFIFTHENTHEN語句,僅當(dāng)某種條件成立才執(zhí)行一段程序語句,僅當(dāng)某種條件成立才執(zhí)行一段程序,否則跳過它。,否則跳過它。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計例例6.1 6.1 內(nèi)存內(nèi)存ADRADR單元開始存放兩個帶符號字?jǐn)?shù)據(jù),編制程單元開始存放兩個帶符號字?jǐn)?shù)據(jù),編制程序,若兩數(shù)同號將序,若兩數(shù)同號將FLAGFLAG單元置單元置0 0,否則置全,否則置全1 1。問題分析:問題分析:判斷兩數(shù)是否同號,即判斷兩個數(shù)的最高位是否相同,若判斷兩數(shù)是否同號,即判斷兩個數(shù)的

7、最高位是否相同,若相同即為同號。判斷的方法有兩種:相同即為同號。判斷的方法有兩種:第一種方法:先取出一個數(shù),判斷符號是否為正,若為正第一種方法:先取出一個數(shù),判斷符號是否為正,若為正,再判斷另一個數(shù)的符號是否正,也為正,則兩數(shù)同號,否,再判斷另一個數(shù)的符號是否正,也為正,則兩數(shù)同號,否則為異號;若第一個數(shù)的符號為負(fù),判斷另一個數(shù)的符號是則為異號;若第一個數(shù)的符號為負(fù),判斷另一個數(shù)的符號是否為負(fù),也為負(fù),則兩數(shù)同號,否則為異號。否為負(fù),也為負(fù),則兩數(shù)同號,否則為異號。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計圖圖6.2 6.2 測試兩數(shù)符號程序流程圖測試兩

8、數(shù)符號程序流程圖 單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計 DSEG SEGMENT ADR DW 73A5H,924BH FLAG DB ?DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX, DSEG MOV DS,AX MOV AX,ADR AND AX,AX ;置標(biāo)志;置標(biāo)志 JNS PLUS ;正轉(zhuǎn);正轉(zhuǎn) MOV AX,ADR+2 AND AX,AX ;第二個數(shù)置標(biāo)志;第二個數(shù)置標(biāo)志 JS SAME ;同為負(fù);同為負(fù)UNSAME:MOV AL,0FFH ;異號標(biāo)志;異號標(biāo)志 J

9、MP LOADPLUS: TEST ADR+2,8000H ;第二個數(shù)置標(biāo)志;第二個數(shù)置標(biāo)志 JS UNSAME ;異號;異號SAME: XOR AL,AL ;同號標(biāo)志;同號標(biāo)志LOAD: MOV FLAC,AL ;存標(biāo)志;存標(biāo)志 MOV AH,4CH INT 21HCSEG ENDS END START單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計第二種方法:第二種方法:利用XOR指令,將兩個數(shù)異或,異或結(jié)果的最高位狀態(tài)為1,則說明兩數(shù)異號,否則兩數(shù)同號。異或結(jié)果的最高位狀態(tài)反應(yīng)到符號標(biāo)志SF位上。如: 01110110 10011010 10011010

10、 10010110 11101100 00001100 符號位為:1,SF=1 符號位為0,SF=0單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計 DSEG SEGMENT ARG DW 7654H,8A32H FLAG DB ? DGEC ENDS CSEG SEGMENT ASSUME DS:DSEC,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV AX,ARG X0R AX,ARG+2 ;兩數(shù)異或;兩數(shù)異或 MOV AL,0 ;同號標(biāo)志;同號標(biāo)志 JNS LOAD ;同號;同號 DEC AL ;異號標(biāo)志;異號標(biāo)志 LO

11、AD: MOV FLAG,AL ;存標(biāo)志;存標(biāo)志 MOV AH,4CH INT 21H CSEG ENDS END START單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計EvenOdd例例6.2 6.2 設(shè)設(shè)ASCASC單元存放兩個字符的單元存放兩個字符的ASCIIASCII碼,編制程序碼,編制程序檢查其奇偶性,并將它們配制成奇校驗存入原單元。檢查其奇偶性,并將它們配制成奇校驗存入原單元。問題分析:問題分析:字符的字符的ASCIIASCII碼是用七位二進(jìn)制表示的,當(dāng)用一個字節(jié)單元保存一碼是用七位二進(jìn)制表示的,當(dāng)用一個字節(jié)單元保存一個字符的個字符的ASCII

12、ASCII碼時,字節(jié)單元的第碼時,字節(jié)單元的第7 7位位( (最高位最高位) )空閑,因此,常對空閑,因此,常對ASCIIASCII碼字節(jié)的空閑位作如下利用:碼字節(jié)的空閑位作如下利用: 1 1)作為奇偶校驗位;)作為奇偶校驗位; 2 2)為)為1 1,表示是擴(kuò)充,表示是擴(kuò)充ASCIIASCII碼,即碼,即128128種特殊字符或圖形代碼種特殊字符或圖形代碼( (在西文狀態(tài)下在西文狀態(tài)下);); 3 3)作為漢字代碼的標(biāo)志位(在中文狀態(tài)下)。)作為漢字代碼的標(biāo)志位(在中文狀態(tài)下)。本題要求將字符代碼配置為奇校驗。方法是先檢查代碼的奇偶性本題要求將字符代碼配置為奇校驗。方法是先檢查代碼的奇偶性,然

13、后根據(jù)測試結(jié)果,然后根據(jù)測試結(jié)果PFPF標(biāo)志狀態(tài)決定是否將最高位置標(biāo)志狀態(tài)決定是否將最高位置1 1。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計在字符在字符I/OI/O時,常把第時,常把第7 7位做為奇偶校驗位,其意義在于字位做為奇偶校驗位,其意義在于字符在傳輸過程中,可能由于某種原因,產(chǎn)生數(shù)位傳輸錯,符在傳輸過程中,可能由于某種原因,產(chǎn)生數(shù)位傳輸錯,通過設(shè)置奇偶校驗位可以檢查字符傳輸中是否出錯。所謂通過設(shè)置奇偶校驗位可以檢查字符傳輸中是否出錯。所謂字符代碼的奇偶性系指代碼中含字符代碼的奇偶性系指代碼中含1 1的個數(shù)是奇數(shù)還是偶數(shù)的個數(shù)是奇數(shù)還是偶數(shù)。例如

14、,字符。例如,字符A A的的ASCIIASCII碼為碼為41H41H(01000001B01000001B),其中含有),其中含有2 2個個1 1,即為偶性,要使之為奇性,則將最高位,即為偶性,要使之為奇性,則將最高位0 0變?yōu)樽優(yōu)? 1;同;同理字符理字符C C的的ASCIIASCII碼為碼為43H 43H (01000011B01000011B),其中含有),其中含有3 3個個1 1,即為奇性。把字符代碼配制成奇校驗,即使字符代碼連,即為奇性。把字符代碼配制成奇校驗,即使字符代碼連同最高位共含有奇數(shù)個同最高位共含有奇數(shù)個1 1;配制成偶校驗,即使字符代碼;配制成偶校驗,即使字符代碼連同最高

15、位共含有偶數(shù)個連同最高位共含有偶數(shù)個1 1。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計圖圖6.3 6.3 配奇校驗位程序流程圖配奇校驗位程序流程圖DSEG SEGMENT ASC DB ACDSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEGMKODD: MOV AX,DSEG MOV DS,AX MOV AX,WORD PTR ASC ;取兩字符;取兩字符 AND AL,AL ;置奇偶標(biāo)志;置奇偶標(biāo)志 JPO NEXT ;奇轉(zhuǎn);奇轉(zhuǎn) OR AL,80H ;配為奇性;配為奇性 NEXT: AND AH,AH ;置奇偶

16、標(biāo)志;置奇偶標(biāo)志 JPO LOAD ;奇轉(zhuǎn);奇轉(zhuǎn) OR AH,80H ;配為奇性;配為奇性LOAD: MOV WORD PTR ASC,AX MOV AH,4CH INT 21HCSEG ENDS END MKODD單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計例例6.3 設(shè)設(shè)X為單字節(jié)帶符號整數(shù)為單字節(jié)帶符號整數(shù),且存于且存于ARGX單元單元,計算結(jié)果計算結(jié)果Y存入存入RLT單元。單元。X+10 (0X8)5X-2 (8X15)X (其它)Y=單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計1:;*EXAM6.3*2:SS

17、EGSEGMENT STACK3:STKDB50DUP(0)4:SSEGENDS5:DSEG SEGMENT6:ARGXDB-57:RLTDB?8:DSEG ENDS9:CSEGSEGMENT10:ASSUMECS:CSEG,DS:DSEG11:ASSUMESS:SSEG12:BEGIN:MOVAX,DSEG13:MOVDS,AX14:MOVAX,SSEG15:MOVSS,AX16:MOVSP,SIZESTK單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計17:MOVAL,ARGX;取取X值值18:ANDAL,AL;置標(biāo)志位置標(biāo)志位19:JSABSL;X0轉(zhuǎn)轉(zhuǎn)

18、20:JZMOVE;X=0轉(zhuǎn)轉(zhuǎn)21:CMPAL,8;X8?22:JLEONE;是是,轉(zhuǎn)轉(zhuǎn)23:CMPAL,15;X15?24:JGEMOVE;是是,轉(zhuǎn)轉(zhuǎn)25:SALAL,1;計算計算5X-226:SALAL,127:ADDAL,ARGX28:SUBAL,229:JMPMOVE30:ONE: ADDAL,10;X8,計算計算X+1031:JMPMOVE32:ABSL: NEGAL;取補(bǔ)取補(bǔ)33:MOVE:MOVRLT,AL;保存結(jié)果保存結(jié)果34:MOVAH,4CH35:INT21H36:CSEG ENDS37:ENDBEGIN單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序

19、設(shè)計程序設(shè)計例例6.46.4設(shè)內(nèi)存中有三個互不相等的無符號字?jǐn)?shù)據(jù),分別存放在ARG開始的字單元,編制程序?qū)⑵渲凶畲笾荡嫒隡AX單元。A, B, C大大單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計1:;*EXAM6.5*2:SSEG SEGMENTSTACK3:STKDB20DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:ARGDW7138H,84A6H,29EH7:MAXDW?8:DSEG ENDS9:CSEG SEGMENT10:ASSUMECS:CSEG,DS:DSEG11:ASSUMESS:SSEG12:FMAX:MOVAX,DSE

20、G13:MOVDS,AX14:MOVAX,SSEG15:MOVSS,AX16:MOVSP,SIZESTK單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計17: LEA SI,ARG;取數(shù)據(jù)首址取數(shù)據(jù)首址18: MOV AX,SI;取第取第1個數(shù)個數(shù)19: MOV BX,SI+2;取第取第2個數(shù)個數(shù)20: CMP AX,BX;兩數(shù)比較兩數(shù)比較21: JAE FMAX1 ;AX中的數(shù)大中的數(shù)大22: MOV AX,BX;大數(shù)送大數(shù)送AX23:FMAX1:CMP AX,SI+4;大數(shù)與第大數(shù)與第3個數(shù)比較個數(shù)比較24: JAE FMAX2 ;AX中的數(shù)大中的數(shù)大25

21、: MOV AX,SI+4;第第3個數(shù)大大值個數(shù)大大值26:FMAX2:MOV MAX,AX;保存最大值保存最大值27: MOV AH,4CH28: INT 21H29:CSEG ENDS30: ENDF MAX單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計6.2 多分支結(jié)構(gòu)程序設(shè)計 利用計算機(jī)解決實際問題時利用計算機(jī)解決實際問題時, ,常遇到這樣的情況常遇到這樣的情況: : 處理處理某個問題時有多種選擇方案某個問題時有多種選擇方案, ,根據(jù)實際情況選擇其中一種。每根據(jù)實際情況選擇其中一種。每種處理方案由一段程序完成種處理方案由一段程序完成, ,每一段程序可

22、以看作一個分支每一段程序可以看作一個分支, ,程程序在執(zhí)行過程中根據(jù)當(dāng)前的狀況序在執(zhí)行過程中根據(jù)當(dāng)前的狀況, ,決定下一步應(yīng)執(zhí)行哪一個分決定下一步應(yīng)執(zhí)行哪一個分支支, ,這就構(gòu)成了多個分支的程序。這就構(gòu)成了多個分支的程序。 如用計算機(jī)控制一臺電動機(jī)如用計算機(jī)控制一臺電動機(jī), ,該電動機(jī)有正轉(zhuǎn)、逆轉(zhuǎn)該電動機(jī)有正轉(zhuǎn)、逆轉(zhuǎn), ,在每種轉(zhuǎn)動方式下又有幾種轉(zhuǎn)速的檔次控制在每種轉(zhuǎn)動方式下又有幾種轉(zhuǎn)速的檔次控制, ,這些控制可以通這些控制可以通過鍵盤過鍵盤0909的數(shù)字鍵進(jìn)行選擇的數(shù)字鍵進(jìn)行選擇, ,進(jìn)入某種檔次選擇后進(jìn)入某種檔次選擇后, ,執(zhí)行相應(yīng)執(zhí)行相應(yīng)分支程序分支程序, ,使電機(jī)以最佳方式由一個狀態(tài)進(jìn)

23、入所選狀態(tài)。假設(shè)使電機(jī)以最佳方式由一個狀態(tài)進(jìn)入所選狀態(tài)。假設(shè)程序的十個分支的起始地址分別為程序的十個分支的起始地址分別為ADR0,ADR1,.ADR9ADR0,ADR1,.ADR9。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計1: ;*EXAM 6.5.1*2: SSEGSEGMENTSTACK3: STKDB20 DUP(0)4: SSEGENDS5: DSEGSEGMENT6: DSEGENDS7: CSEGSEGMENT8: ASSUMECS:CSEG,DS:DSEG9: ASSUMESS:SSEG10: MOTOR:MOVAX,DSEG11: MO

24、VDS,AX12: MOVAX,SSEG13: MOVSS,AX14: MOVSP,SIZE STK15: MOVAH,01 16: INT21H17: CMPAL,0 18: JZADR0 19: CMPAL,1 20: JZADR1 21: :22: CMPAL,823: JZADR824:ADR9:25: ADR0: ADR1: : ADR8: CSEGENDS: ENDMOTOR單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計- - 為了實現(xiàn)多路分支,常用跳轉(zhuǎn)表。為了實現(xiàn)多路分支,常用跳轉(zhuǎn)表。- - 例如某程序需例如某程序需n n路分支,每路程序的入口

25、地址分別為路分支,每路程序的入口地址分別為SUB1SUB1、SUB2SUB2、SUBnSUBn。把這些轉(zhuǎn)移的入口地址組成一個表,。把這些轉(zhuǎn)移的入口地址組成一個表,叫跳轉(zhuǎn)表(如圖叫跳轉(zhuǎn)表(如圖6.46.4(a a)。表內(nèi)每兩個字節(jié)存放一個入)。表內(nèi)每兩個字節(jié)存放一個入口地址的偏移量,跳轉(zhuǎn)表也可由若干跳轉(zhuǎn)指令組成(如圖口地址的偏移量,跳轉(zhuǎn)表也可由若干跳轉(zhuǎn)指令組成(如圖6.46.4(b b),這時用無條件轉(zhuǎn)移指令,且每條指令的目標(biāo)),這時用無條件轉(zhuǎn)移指令,且每條指令的目標(biāo)代碼長度要一致,否則分支程序的編制非常麻煩。代碼長度要一致,否則分支程序的編制非常麻煩。用跳轉(zhuǎn)表形成多路分支的程序設(shè)計用跳轉(zhuǎn)表形成

26、多路分支的程序設(shè)計單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計圖圖6.4 6.4 跳轉(zhuǎn)表跳轉(zhuǎn)表單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語言匯編語言程序設(shè)計程序設(shè)計例例6.5 6.5 現(xiàn)有若干個程序段,每一程序段的入口地址分別是現(xiàn)有若干個程序段,每一程序段的入口地址分別是SUB1SUB1、SUB2SUB2、SUBnSUBn。試編制一程序,根據(jù)指定的參數(shù)轉(zhuǎn)。試編制一程序,根據(jù)指定的參數(shù)轉(zhuǎn)入相應(yīng)的程序段。入相應(yīng)的程序段。問題分析:問題分析:首先組成由入口地址構(gòu)造的跳轉(zhuǎn)表。設(shè)指定的參數(shù)是首先組成由入口地址構(gòu)造的跳轉(zhuǎn)表。設(shè)指定的參數(shù)是1 1、2 2、3 3、nn,且當(dāng)參數(shù)為,且當(dāng)參數(shù)為11時,轉(zhuǎn)移到時,轉(zhuǎn)移到SUB1SUB1,當(dāng)參數(shù)為,當(dāng)參數(shù)為22轉(zhuǎn)移到轉(zhuǎn)移到SUB2SUB2,依次類推。這樣,跳轉(zhuǎn)表內(nèi)的地址按照,依次類推。這樣,跳轉(zhuǎn)表內(nèi)的地址按照SUB1SUB1、SUB2SUB2、SUBnSUBn的順序排列。程序中,只需把取出的的順序排列。程序中,只需把取出的參數(shù)減參數(shù)減11乘以乘以2 2,再加上跳轉(zhuǎn)表首址就可以實現(xiàn)轉(zhuǎn)移。,再加上跳轉(zhuǎn)表首址就可以實

溫馨提示

  • 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

提交評論