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

下載本文檔

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

文檔簡(jiǎn)介

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

2、語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)1 無(wú)條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 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)題樣式匯編語(yǔ)言

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

4、編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)(2 2)無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令)無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)(3 3) 有符號(hào)數(shù)條件轉(zhuǎn)移指令有符號(hào)數(shù)條件轉(zhuǎn)移指令單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)6.1 比較比較/測(cè)試分支結(jié)構(gòu)程序設(shè)計(jì)測(cè)試分支結(jié)構(gòu)程序設(shè)計(jì)P=先要對(duì)處理的問(wèn)題進(jìn)行比較、測(cè)試或者進(jìn)行算術(shù)運(yùn)算、邏先要對(duì)處理的問(wèn)題進(jìn)行比較、測(cè)試或者進(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)生兩路分支。若要實(shí)現(xiàn)多路分支,必須使用多條轉(zhuǎn)移指令。要實(shí)現(xiàn)多路分支,必須使用多條轉(zhuǎn)移指令。n n條條件轉(zhuǎn)移指條條件轉(zhuǎn)移指令可以產(chǎn)生令可以產(chǎn)生n nl l路分支。路分支。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)圖圖6.1 比較比較/測(cè)試分支結(jié)構(gòu)的兩種程序流程測(cè)試分支結(jié)構(gòu)的兩種程序流程(a a)相當(dāng)于高級(jí)語(yǔ)言中的)相當(dāng)于高級(jí)語(yǔ)言中的IFIFTHENTHENELSEELSE語(yǔ)句,根據(jù)條語(yǔ)句,根據(jù)條件成立與否,分兩種情況分別處

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

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

8、數(shù)符號(hào)程序流程圖 單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 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 ;第二個(gè)數(shù)置標(biāo)志;第二個(gè)數(shù)置標(biāo)志 JS SAME ;同為負(fù);同為負(fù)UNSAME:MOV AL,0FFH ;異號(hào)標(biāo)志;異號(hào)標(biāo)志 J

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

10、 10010110 11101100 00001100 符號(hào)位為:1,SF=1 符號(hào)位為0,SF=0單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì) 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 ;同號(hào)標(biāo)志;同號(hào)標(biāo)志 JNS LOAD ;同號(hào);同號(hào) DEC AL ;異號(hào)標(biāo)志;異號(hà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)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)EvenOdd例例6.2 6.2 設(shè)設(shè)ASCASC單元存放兩個(gè)字符的單元存放兩個(gè)字符的ASCIIASCII碼,編制程序碼,編制程序檢查其奇偶性,并將它們配制成奇校驗(yàn)存入原單元。檢查其奇偶性,并將它們配制成奇校驗(yàn)存入原單元。問(wèn)題分析:?jiǎn)栴}分析:字符的字符的ASCIIASCII碼是用七位二進(jìn)制表示的,當(dāng)用一個(gè)字節(jié)單元保存一碼是用七位二進(jìn)制表示的,當(dāng)用一個(gè)字節(jié)單元保存一個(gè)字符的個(gè)字符的ASCII

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

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

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

15、位共含有偶數(shù)個(gè)連同最高位共含有偶數(shù)個(gè)1 1。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)圖圖6.3 6.3 配奇校驗(yàn)位程序流程圖配奇校驗(yàn)位程序流程圖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 ;配為奇性;配為奇性L(fǎng)OAD: MOV WORD PTR ASC,AX MOV AH,4CH INT 21HCSEG ENDS END MKODD單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)例例6.3 設(shè)設(shè)X為單字節(jié)帶符號(hào)整數(shù)為單字節(jié)帶符號(hào)整數(shù),且存于且存于ARGX單元單元,計(jì)算結(jié)果計(jì)算結(jié)果Y存入存入RLT單元。單元。X+10 (0X8)5X-2 (8X15)X (其它)Y=單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)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)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)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;計(jì)算計(jì)算5X-226:SALAL,127:ADDAL,ARGX28:SUBAL,229:JMPMOVE30:ONE: ADDAL,10;X8,計(jì)算計(jì)算X+1031:JMPMOVE32:ABSL: NEGAL;取補(bǔ)取補(bǔ)33:MOVE:MOVRLT,AL;保存結(jié)果保存結(jié)果34:MOVAH,4CH35:INT21H36:CSEG ENDS37:ENDBEGIN單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序

19、設(shè)計(jì)程序設(shè)計(jì)例例6.46.4設(shè)內(nèi)存中有三個(gè)互不相等的無(wú)符號(hào)字?jǐn)?shù)據(jù),分別存放在ARG開(kāi)始的字單元,編制程序?qū)⑵渲凶畲笾荡嫒隡AX單元。A, B, C大大單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)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)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)17: LEA SI,ARG;取數(shù)據(jù)首址取數(shù)據(jù)首址18: MOV AX,SI;取第取第1個(gè)數(shù)個(gè)數(shù)19: MOV BX,SI+2;取第取第2個(gè)數(shù)個(gè)數(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個(gè)數(shù)比較個(gè)數(shù)比較24: JAE FMAX2 ;AX中的數(shù)大中的數(shù)大25

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

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

23、入所選狀態(tài)。假設(shè)使電機(jī)以最佳方式由一個(gè)狀態(tài)進(jìn)入所選狀態(tài)。假設(shè)程序的十個(gè)分支的起始地址分別為程序的十個(gè)分支的起始地址分別為ADR0,ADR1,.ADR9ADR0,ADR1,.ADR9。單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版副標(biāo)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)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)題樣式匯編語(yǔ)言匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)- - 為了實(shí)現(xiàn)多路分支,常用跳轉(zhuǎn)表。為了實(shí)現(xiàn)多路分支,常用跳轉(zhuǎn)表。- - 例如某程序需例如某程序需n n路分支,每路程序的入口

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論