匯編語言源程序的框架結(jié)構(gòu)

匯編語言源程序的框架結(jié)構(gòu)

ID:20053133

大小:277.50 KB

頁數(shù):67頁

時(shí)間:2018-10-09

匯編語言源程序的框架結(jié)構(gòu)_第1頁
匯編語言源程序的框架結(jié)構(gòu)_第2頁
匯編語言源程序的框架結(jié)構(gòu)_第3頁
匯編語言源程序的框架結(jié)構(gòu)_第4頁
匯編語言源程序的框架結(jié)構(gòu)_第5頁
資源描述:

《匯編語言源程序的框架結(jié)構(gòu)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、§5.1匯編語言源程序的框架結(jié)構(gòu)編制匯編語言源程序時(shí),首先要使用段定義偽指令和段尋址偽指令來構(gòu)造一個(gè)由若干指令和數(shù)據(jù)組成的程序。構(gòu)造一個(gè)源程序的框架結(jié)構(gòu)有如下兩種格式:第一種格式:……MOVAH,4CH;返回DOSINT21HCODEENDSENDBEGIN第5章8086/8088匯編語言程序設(shè)計(jì)第二種格式:……RET;取程序段前綴首地址MAINENDPCODEENDSENDBEGIN區(qū)別:兩種格式的本質(zhì)區(qū)別在于返回DOS的方法不同:對(duì)于第一種格式,采用了調(diào)用DOS系統(tǒng)的4CH功能,返回DOS。具體方法是:在要返回DOS處,安排如

2、下兩條指令:MOVAH,4CHINT21H對(duì)于第二格式,DOS返回方法是調(diào)用20H類型的中斷服務(wù)程序。§5.2順序結(jié)構(gòu)程序設(shè)計(jì)順序程序結(jié)構(gòu)是指完全按照順序逐條執(zhí)行的指令序列,這種結(jié)構(gòu)的流程圖除了有一個(gè)開始框和結(jié)束框外,就是若干處理框,沒有判斷框,如圖5.1所示。圖5.1順序程序的結(jié)構(gòu)形式例5.1:試分別用匯編語言源程序的兩種框架結(jié)構(gòu)編制程序,求出表達(dá)式:(X×4-Y)/2的值,并保存到RESULT存儲(chǔ)單元中,其中X,Y均為字節(jié)變量。解:完成該功能的流程圖如圖5.2所示:圖5.2例5.1的功能實(shí)現(xiàn)流程圖參考程序1:DATASEGME

3、NT;數(shù)據(jù)段XDB2YDB4ZDB?;定義變量DATAENDSSTACKSEGMENTPARASTACKDW20HDUP(0)STACKENDSCODESEGMENT;代碼段ASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AX;DS賦初值MOVAL,X;AL←XMOVCL,2SALAL,CL;AL←X×4SUBAL,Y;AL←X×4-YSARAL,1;AL←(X×4-Y)/2MOVZ,AL;存結(jié)果MOVAH,4CH;返回DOSINT21HCODEENDSENDBEGIN參考程

4、序2:DATASEGMENTXDB2YDB4ZDB?DATAENDSSTACKSEGMENTPARASTACKDW20HDUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKPROC1PROCFAR;使RET為遠(yuǎn)返回ENDBEGINBEGIN:PUSHDS;入棧保存地址MOVAX,0;程序段前綴的首地址PUSHAXMOVAX,DATAMOVDS,AXMOVAL,X;AL←XMOVCL,2SALAL,CL;AL←X×4SUBAL,Y;AL←X×4-YSARAL,1;AL←(X

5、×4-Y)/2MOVZ,AL;存結(jié)果RET;取程序段前綴首地址PROC1ENDPCODEENDS§5.3分支結(jié)構(gòu)程序設(shè)計(jì)分支程序結(jié)構(gòu)可以有兩種形式,如圖5.4所示,它們分別相當(dāng)于高級(jí)語言程序中的IF-THEN-ELSE語句和CASE語句,它們適用于要根據(jù)不同條件做不同處理的情況。§5.3.1用比較/測(cè)試的方法實(shí)現(xiàn)IF-THEN-ELSE結(jié)構(gòu)實(shí)現(xiàn)方法:在產(chǎn)生分支之前,通常用比較、測(cè)試的辦法在標(biāo)志寄存器中設(shè)置相應(yīng)的標(biāo)志位,然后再選用適當(dāng)?shù)臈l件轉(zhuǎn)移指令,以實(shí)現(xiàn)不同情況的分支轉(zhuǎn)移。(1)進(jìn)行比較,使用比較指令:CMPDEST,SRC該指令

6、進(jìn)行減法操作,而不保存結(jié)果,只設(shè)置標(biāo)志位。(2)進(jìn)行測(cè)試,使用測(cè)試指令TESTDEST,SRC該指令進(jìn)行邏輯與操作,而不保存結(jié)果,只設(shè)置標(biāo)志位。§5.3.2用地址表法實(shí)現(xiàn)CASE結(jié)構(gòu)(即多路分支)用地址表法實(shí)現(xiàn)CASE結(jié)構(gòu)的基本思路是:將各分支程序的入口地址依次羅列形成一個(gè)地址表,讓BX指向地址表的首地址,從鍵盤接收或其他方式獲取要轉(zhuǎn)到的分支號(hào),再讓BX與分支號(hào)進(jìn)行運(yùn)算,使BX指向?qū)?yīng)分支入口地址,最后即可使用JMPWORDPTR[BX]或JMPDWORDPTR[BX]指令實(shí)現(xiàn)所要轉(zhuǎn)到的分支;程序設(shè)計(jì)流程圖如圖5.6所示:圖5.6

7、用地址表法實(shí)現(xiàn)多路分支的結(jié)構(gòu)框圖例5.4:編程實(shí)現(xiàn)菜單選擇,根據(jù)不同的選擇做不同的事情。解:假設(shè)有3路分支,在地址表中的入口地址分別:A0、A1、A2;具體見圖5.7所示:參考程序:DATASEGMENTMENUDB0DH,0AH,"0:Chinese!"DB0DH,0AH,"1:English!"DB0DH,0AH,"2:German!"DB0DH,0AH,"Pleasechooseonetoanswerthefollowingquestion:$"ERDB0DH,0AH,"Iamsorry,youchoosethemistak

8、e!$"S0DB0DH,0AH,"OK,PleaseanswerinChinese!$"S1DB0DH,0AH,"OK,PleaseanswerinEnglish!$"S2DB0DH,0AH,"OK,PleaseanswerinGerman!$"T

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。