微機(jī)原理與接口技術(shù)第4章3、4節(jié)_第1頁
微機(jī)原理與接口技術(shù)第4章3、4節(jié)_第2頁
微機(jī)原理與接口技術(shù)第4章3、4節(jié)_第3頁
微機(jī)原理與接口技術(shù)第4章3、4節(jié)_第4頁
微機(jī)原理與接口技術(shù)第4章3、4節(jié)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、4.3 匯編語言程序設(shè)計(jì)基本方法匯編語言程序設(shè)計(jì)基本方法 4.3.1 程序設(shè)計(jì)概述程序設(shè)計(jì)概述1、匯編語言程序設(shè)計(jì)的一般步驟:、匯編語言程序設(shè)計(jì)的一般步驟:(1) 分析題意,確定算法分析題意,確定算法(2) 根據(jù)算法畫出程序框圖根據(jù)算法畫出程序框圖(3) 根據(jù)框圖編寫程序根據(jù)框圖編寫程序(4) 上機(jī)調(diào)試程序上機(jī)調(diào)試程序匯編語言程序的上機(jī)過程匯編語言程序的上機(jī)過程1、用文字編輯工具(、用文字編輯工具( EDIT或記事本)將源程序輸入或記事本)將源程序輸入,其擴(kuò)展名為其擴(kuò)展名為.ASM。 2、用、用MASM對源文件進(jìn)行匯編對源文件進(jìn)行匯編,產(chǎn)生產(chǎn)生.OBJ文件和文件和.LST文件。若匯編時(shí)提示有錯(cuò)

2、文件。若匯編時(shí)提示有錯(cuò),用文字編輯工具修改源程用文字編輯工具修改源程序后重新匯編序后重新匯編,直至通過。直至通過。 3、用、用LINK將將.OBJ文件連接成可執(zhí)行的文件連接成可執(zhí)行的.EXE文件。文件。 4、在、在DOS狀態(tài)下運(yùn)行產(chǎn)生的狀態(tài)下運(yùn)行產(chǎn)生的. EXE文件。文件。5、若程序本身在屏幕上無顯示或未出現(xiàn)預(yù)期結(jié)果、若程序本身在屏幕上無顯示或未出現(xiàn)預(yù)期結(jié)果,用用DEBUG查看程序結(jié)果或者調(diào)試程序。查看程序結(jié)果或者調(diào)試程序。6、如果修改了源程序,則必須重新進(jìn)行匯編、連接,、如果修改了源程序,則必須重新進(jìn)行匯編、連接,運(yùn)行。運(yùn)行。myfile.asm編輯程序編輯程序匯編程序匯編程序連接程序連接程

3、序myfile.crfotherfiles.objmyfile.lstmyfile.objmyfile.mapmyfile.exe(如:(如:MASM、TASM等)等)(如:(如:DOS下的下的EDIT、window下的記事本)下的記事本)(如:(如:LINK、TLINK等)等)程序運(yùn)行步驟及生成的文件匯編程序的主要功能:匯編程序的主要功能: 檢查源程序,給出出錯(cuò)信息。檢查源程序,給出出錯(cuò)信息。 產(chǎn)生目標(biāo)文件產(chǎn)生目標(biāo)文件( (.obj.obj) )和列表文件和列表文件( (.lst.lst) )。 展開宏指令。展開宏指令。匯編程序功能匯編程序功能4.3.1 程序設(shè)計(jì)概述程序設(shè)計(jì)概述n2、幾個(gè)關(guān)

4、鍵點(diǎn)、幾個(gè)關(guān)鍵點(diǎn)n(1)數(shù)據(jù)(原始數(shù)據(jù))輸入方式)數(shù)據(jù)(原始數(shù)據(jù))輸入方式n用數(shù)據(jù)定義偽指令提供數(shù)據(jù)用數(shù)據(jù)定義偽指令提供數(shù)據(jù)n用立即數(shù)的形式提供數(shù)據(jù)用立即數(shù)的形式提供數(shù)據(jù)n用鍵盤提供數(shù)據(jù)用鍵盤提供數(shù)據(jù)n(2)數(shù)據(jù)(運(yùn)算結(jié)果)輸出方式)數(shù)據(jù)(運(yùn)算結(jié)果)輸出方式n用數(shù)據(jù)定義偽指令預(yù)留存儲(chǔ)單元,用數(shù)據(jù)定義偽指令預(yù)留存儲(chǔ)單元,n在顯示器上顯示輸出,在顯示器上顯示輸出,n(3)返回)返回DOS的方式的方式分支結(jié)構(gòu)分支結(jié)構(gòu)復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合順序順序結(jié)構(gòu)結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)3、匯編語言程序的基本結(jié)構(gòu)、匯編語言程序的基本結(jié)構(gòu)子程序結(jié)構(gòu)子程序結(jié)構(gòu)4.3.2 順序結(jié)構(gòu)程序設(shè)計(jì)

5、順序結(jié)構(gòu)程序設(shè)計(jì)n順序結(jié)構(gòu)是一種最簡單最基本的程序結(jié)構(gòu)。順序結(jié)構(gòu)是一種最簡單最基本的程序結(jié)構(gòu)。n在匯編語言中,順序結(jié)構(gòu)的程序主要由數(shù)據(jù)傳在匯編語言中,順序結(jié)構(gòu)的程序主要由數(shù)據(jù)傳送、算術(shù)運(yùn)算或者邏輯運(yùn)算等指令組合而成。送、算術(shù)運(yùn)算或者邏輯運(yùn)算等指令組合而成。n程序?qū)嵭袝r(shí),一直線方式一條接著一條指令順程序?qū)嵭袝r(shí),一直線方式一條接著一條指令順序執(zhí)行。序執(zhí)行。順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例1n編寫一個(gè)完整的匯編語言源程序,要求把數(shù)據(jù)編寫一個(gè)完整的匯編語言源程序,要求把數(shù)據(jù)段段D_SEG中的中的NUM1和和NUM2相加,并把結(jié)相加,并把結(jié)果存放在果存放在SUM中。其中中。其中NUM1,NUM2

6、和和SUM均為字變量,均為字變量,NUM1賦值為賦值為1234H,NUM2賦值為賦值為5678H。(代碼段段名用。(代碼段段名用C_SEG)。)。 參考答案參考答案D_SEG SEGMENTNUM1DW 1234HNUM2DW 5678HSUMDW ?D_SEGENDSC_SEG SEGMENT ASSUME CS:C_SEG,DS:D_SEGSTART: MOV AX,D_SEG MOV DS,AX參考答案參考答案MOV AX,NUM1ADD AX,NUM2MOV SUM,AXMOV AX,4C00HINT 21HC_SEG ENDSEND START順序結(jié)構(gòu)程序設(shè)計(jì)舉例順序結(jié)構(gòu)程序設(shè)計(jì)舉例

7、2n題目:雙字長數(shù)相加題目:雙字長數(shù)相加n分析:利用分析:利用16位加法指令分兩次分別做位加法指令分兩次分別做高高16位和低位和低16位的加法運(yùn)算。位的加法運(yùn)算。n程序:程序: DATA SEGMENTNUM1DW 0F271H, 5B68HNUM2DW 5698H,0AC6DHSUMDW ?,?DATAENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,NUM1 ADD AX,NUM2 MOV SUM,AX MOV AX,NUM1+2 ADC AX,NUM2+2 MOV SUM+2,AXMOV

8、AX,4C00HINT 21HCODE ENDS END START4.3.3 分支結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)程序設(shè)計(jì)n分支程序根據(jù)條件的不同作不同的處理分支程序根據(jù)條件的不同作不同的處理n判斷的條件是各種指令,如判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標(biāo)志等執(zhí)行后形成的狀態(tài)標(biāo)志n轉(zhuǎn)移指令轉(zhuǎn)移指令Jcc和和JMP可以實(shí)現(xiàn)分支控制可以實(shí)現(xiàn)分支控制分支結(jié)構(gòu)程序流程分支結(jié)構(gòu)程序流程分支程序的結(jié)構(gòu)形式(二)分支程序的結(jié)構(gòu)形式(二)相當(dāng)于高級語言中的相當(dāng)于高級語言中的CASE語句語句判定條件判定條件分支語句體分支語句體1分支語句體分支語句體2條件條件1分支語句體分支語句體n條件條件2條件條件

9、n分支結(jié)構(gòu):兩分支,判斷正負(fù)分支結(jié)構(gòu):兩分支,判斷正負(fù)在在NUM字節(jié)單元中有一個(gè)有符號數(shù),判斷其字節(jié)單元中有一個(gè)有符號數(shù),判斷其正負(fù),如果為負(fù)數(shù),則把正負(fù),如果為負(fù)數(shù),則把“-”存入存入DL中,中,否則把否則把“+”存入存入DL中中DATA SEGMENT NUM DB -1DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX分支結(jié)構(gòu):兩分支,判斷正負(fù)分支結(jié)構(gòu):兩分支,判斷正負(fù) CMP NUM,0 JNS NEXT MOV DL,- JMP EXITNEXT: MOV DL,+EXIT: MOV AX,4

10、C00H INT 21HCODE ENDS END START特別注意特別注意分支的出口分支的出口換用換用JS條件轉(zhuǎn)移指令改寫后的程序條件轉(zhuǎn)移指令改寫后的程序 CMP NUM,0 JS NEXT MOV DL,+ JMP EXITNEXT: MOV DL,-思考:還可以用哪些條件轉(zhuǎn)移指令改寫?思考:還可以用哪些條件轉(zhuǎn)移指令改寫?分支結(jié)構(gòu)分支結(jié)構(gòu):三分支,符號函數(shù)三分支,符號函數(shù)100010 xyxx分支結(jié)構(gòu)分支結(jié)構(gòu):三分支,符號函數(shù)程序三分支,符號函數(shù)程序MY_D SEGMENTMEMS DB 08HMEMD DB ?MY_D ENDSMY_C SEGMENT ASSUME CS: MY_C,

11、DS: MY_DSTART: MOV AX, MY_D MOV DS,AX分支結(jié)構(gòu)分支結(jié)構(gòu):三分支,符號函數(shù)程序三分支,符號函數(shù)程序 MOV AL,MEMS CMP AL,0 JNS NEXT MOV AL,-1 ;x0,y=1DONE: MOV MEMD,AL MOV AX,4C00H INT 21HMY_C ENDS END START分支結(jié)構(gòu)分支結(jié)構(gòu):兩分支,判斷奇偶(參考程序一)兩分支,判斷奇偶(參考程序一)DATA SEGMENTMEM DW 12MEMA DW ?MEMB DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:

12、MOV AX,DATA MOV DS,AX MOV AX,MEM TEST AX,1 JNZ NEXT MOV MEMB,AX JMP DONENEXT: MOV MEMA,AXDONE: MOV AX,4C00H INT 21HCODE ENDS END START分支結(jié)構(gòu)分支結(jié)構(gòu):兩分支,判斷奇偶兩分支,判斷奇偶(參考程序二)(參考程序二)DATA SEGMENTMEM DW 12MEMA DW ?MEMB DW ?DATA ENDS分支結(jié)構(gòu)分支結(jié)構(gòu):兩分支,判斷奇偶兩分支,判斷奇偶(參考程序二)(參考程序二)CODE SEGMENT ASSUME CS:CODE,DS:DATASTART

13、:MOV AX,DATA MOV DS,AX MOV AX,MEM SHR AX,1 JC NEXT RCL AX,1 ;恢復(fù)恢復(fù)ax的值的值 MOV MEMB,AX JMP DONENEXT: RCL AX,1 ;恢復(fù)恢復(fù)ax的值的值 MOV MEMA,AX分支結(jié)構(gòu)分支結(jié)構(gòu):兩分支,判斷奇偶兩分支,判斷奇偶(參考程序二)(參考程序二)DONE: MOV AX,4C00H INT 21HCODE ENDS END START分支結(jié)構(gòu)注意事項(xiàng)分支結(jié)構(gòu)注意事項(xiàng)n注意選用合適的條件轉(zhuǎn)移指令,注意選用合適的條件轉(zhuǎn)移指令,使程序簡捷高效。使程序簡捷高效。n編寫分支程序,需留心分支的開編寫分支程序,需留心

14、分支的開始和結(jié)束。特別要注意分支的結(jié)始和結(jié)束。特別要注意分支的結(jié)束,一般要在先寫的分支的最后束,一般要在先寫的分支的最后加上無條件轉(zhuǎn)移指令加上無條件轉(zhuǎn)移指令JMP,使其,使其跳轉(zhuǎn)到最后寫的分支的后面。跳轉(zhuǎn)到最后寫的分支的后面。作業(yè):作業(yè):n第四章課后題第四章課后題1、3多分支程序設(shè)計(jì)多分支程序設(shè)計(jì)n多個(gè)條件對應(yīng)各自的分支語句體,哪個(gè)條件多個(gè)條件對應(yīng)各自的分支語句體,哪個(gè)條件成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行。成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行。判定條件判定條件分支語句體分支語句體1分支語句體分支語句體2條件條件1 1分支語句體分支語句體n條件條件2 2條件條件n n多分支程序設(shè)計(jì)的實(shí)現(xiàn)方法多分支程序設(shè)計(jì)的實(shí)現(xiàn)方法

15、n多分支可以化解為雙分支或單分支結(jié)多分支可以化解為雙分支或單分支結(jié)構(gòu)的組合;構(gòu)的組合;n利用地址表形成多分支。利用地址表形成多分支。n循環(huán)結(jié)構(gòu)一般是根據(jù)某一條件判循環(huán)結(jié)構(gòu)一般是根據(jù)某一條件判斷為真或假來確定是否重復(fù)執(zhí)行斷為真或假來確定是否重復(fù)執(zhí)行循環(huán)體循環(huán)體n循環(huán)指令和轉(zhuǎn)移指令可以實(shí)現(xiàn)循循環(huán)指令和轉(zhuǎn)移指令可以實(shí)現(xiàn)循環(huán)控制環(huán)控制4.3.4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)DO-WHILE 結(jié)構(gòu)結(jié)構(gòu)控制條件控制條件初始化初始化循環(huán)體循環(huán)體YN控制條件控制條件初始化初始化循環(huán)體循環(huán)體YNDO-UNTIL 結(jié)構(gòu)結(jié)構(gòu)循環(huán)結(jié)構(gòu)程序的形式循環(huán)結(jié)構(gòu)程序的形式p初始化初始化:設(shè)置循環(huán)的初始狀態(tài),如設(shè)置循環(huán)設(shè)置循

16、環(huán)的初始狀態(tài),如設(shè)置循環(huán)次數(shù)、變量等。次數(shù)、變量等。p循環(huán)體:循環(huán)體:循環(huán)的工作部分及修改部分循環(huán)的工作部分及修改部分p控制條件:控制條件:根據(jù)對循環(huán)條件的判斷結(jié)果,控根據(jù)對循環(huán)條件的判斷結(jié)果,控制循環(huán)的執(zhí)行或結(jié)束。主要有:制循環(huán)的執(zhí)行或結(jié)束。主要有:計(jì)數(shù)控制、計(jì)數(shù)控制、 特特征值控制、地址邊界控制。征值控制、地址邊界控制。循環(huán)結(jié)構(gòu)程序的組成循環(huán)結(jié)構(gòu)程序的組成n循環(huán)控制條件循環(huán)控制條件是循環(huán)程序設(shè)計(jì)的是循環(huán)程序設(shè)計(jì)的關(guān)鍵,必須結(jié)合對算法的分析與關(guān)鍵,必須結(jié)合對算法的分析與考慮合理地選擇。同時(shí),必須仔考慮合理地選擇。同時(shí),必須仔細(xì)地考慮邊界情況出現(xiàn)的可能性,細(xì)地考慮邊界情況出現(xiàn)的可能性,以免在特

17、殊情況下造成錯(cuò)誤。以免在特殊情況下造成錯(cuò)誤。 注意事項(xiàng):注意事項(xiàng):循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)DATA SEGMENTBUFF DB 67H,9EH,-6AH,0ABH,6DHMEM DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù) MOV CX,5 ;設(shè)置循環(huán)次數(shù);設(shè)置循環(huán)次數(shù) LEA BX,BUFF XOR DL,DLNEXT: MOV AL,BX ADD AL,0 JNS AA1 INC DLAA1: INC BX

18、LOOP NEXT循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù) MOV MEM,DL MOV MEM,DL MOV AX,4C00H MOV AX,4C00H INT 21H INT 21H CODE ENDS CODE ENDS END START END START循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)(另外的方法)循環(huán)結(jié)構(gòu):統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)(另外的方法)NEXT: MOV AL,BX SHL AL,1 ADC DL,0 ;負(fù)數(shù)的最高有效位是負(fù)數(shù)的最高有效位是1 AA1: INC BX LOOP NEXTn編程實(shí)現(xiàn)編程實(shí)現(xiàn)123100,把,把和存放在內(nèi)存字單元和存放在內(nèi)存字單元SUM 中。中。n解答解

19、答: DATA SEGMENT SUM DW ? DATA ENDS循環(huán)結(jié)構(gòu):求累加和舉例循環(huán)結(jié)構(gòu):求累加和舉例1CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATA START:MOV AX,DATASTART:MOV AX,DATA MOV DS,AX MOV DS,AX XOR AX,AX ; XOR AX,AX ;累加和寄存器累加和寄存器AXAX清清0 0 MOV CX,100 MOV CX,100 ;設(shè)置循環(huán)次數(shù);設(shè)置循環(huán)次數(shù) MOV DX,1MOV DX,1NEXT: ADD AX,DXNEXT

20、: ADD AX,DX; ;從從1,2,.,99,1001,2,.,99,100正序累加正序累加 INC DXINC DX LOOP NEXT LOOP NEXT MOV SUM,AX MOV SUM,AX; ;將累加和送入指定單元將累加和送入指定單元 MOV AH,4CHMOV AH,4CH INT 21H INT 21H CODE ENDS CODE ENDS END START END START代碼段參考一代碼段參考一CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATA START:MOV AX,D

21、ATASTART:MOV AX,DATA MOV DS,AX MOV DS,AX XOR AX,AX ; XOR AX,AX ;累加和寄存器累加和寄存器AXAX清清0 0 MOV CX,100 MOV CX,100 ;設(shè)置循環(huán)次數(shù);設(shè)置循環(huán)次數(shù)NEXT: ADD AX,CXNEXT: ADD AX,CX; ;從從100,99,.,2,1100,99,.,2,1倒序累加倒序累加 LOOP NEXTLOOP NEXT MOV SUM,AX MOV SUM,AX; ;將累加和送入指定單元將累加和送入指定單元 MOV AH,4CHMOV AH,4CH INT 21H INT 21H CODE ENDS

22、 CODE ENDS END START END START代碼段參考二代碼段參考二例例:求首地址為求首地址為ARRAY的的20 個(gè)字之和個(gè)字之和,結(jié)果存入結(jié)果存入 TOTAL中。中。解答解答: DATA SEGMENT ARRAY DW 20 DUP(0101H) TOTAL DW ? DATA ENDS循環(huán)結(jié)構(gòu):求累加和舉例循環(huán)結(jié)構(gòu):求累加和舉例2循環(huán)結(jié)構(gòu):求累加和舉例循環(huán)結(jié)構(gòu):求累加和舉例2CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATABEGIN: MOV AX,DATABEGIN: MOV A

23、X,DATA MOV DS,AX MOV DS,AXMOV CX, 20MOV CX, 20MOV AX, 0MOV AX, 0MOV SI, AXMOV SI, AXSTART: ADD AX, ARRAYSISTART: ADD AX, ARRAYSIADD SI, 2ADD SI, 2LOOP STARTLOOP STARTMOV TOTAL, AXMOV TOTAL, AX MOV AH,4CH MOV AH,4CH INT 21H INT 21H CODE ENDS CODE ENDS END BEGIN END BEGIN循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)n在屏幕上顯示一列在屏幕上顯示一列20個(gè)個(gè)*

24、顯示一個(gè)顯示一個(gè)*后光標(biāo)移到下一行開始處的程序段。后光標(biāo)移到下一行開始處的程序段。MOV AH,02HMOV DL,*INT 21HMOV AH,02HMOV DL,0DH;回車符號回車符號INT 21HMOV AH,02HMOV DL,0AH;換行符號換行符號INT 21H循環(huán)結(jié)構(gòu):在屏幕上顯示一列循環(huán)結(jié)構(gòu):在屏幕上顯示一列20個(gè)個(gè)*CODE SEGMENT ASSUME CS:CODEBEGIN: MOV CX, 20NEXT: MOV AH,02H MOV DL,* INT 21H MOV AH,02H MOV DL,0DH;回車符號回車符號 INT 21H MOV AH,02H MOV

25、 DL,0AH;換行符號換行符號 INT 21H LOOP NEXT MOV AH,4CH INT 21HCODE ENDS END BEGIN循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示DATA SEGMENTBUFF DB 0,1,2,3,4,-1,-2,-3,-4DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,BUFF MOV CX,9 XOR DL,DL循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示LOOP1: TEST BYTE PTR BX

26、,1 JNZ NEXT INC DLNEXT: INC BX LOOP LOOP1 ADD DL,30H MOV AH,2 INT 21H循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示循環(huán)結(jié)構(gòu):統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)并顯示 MOV AX,4C00H MOV AX,4C00H INT 21H INT 21H CODE ENDS CODE ENDS END START END START4.3.5 子程序設(shè)計(jì)子程序設(shè)計(jì)n把功能相對獨(dú)立的程序段單獨(dú)編寫和調(diào)試,把功能相對獨(dú)立的程序段單獨(dú)編寫和調(diào)試,作為一個(gè)相對獨(dú)立的模塊供程序使用,就形作為一個(gè)相對獨(dú)立的模塊供程序使用,就形成子程序成子程序n子程序可以實(shí)現(xiàn)源程序的模塊化,可簡

27、化源子程序可以實(shí)現(xiàn)源程序的模塊化,可簡化源程序結(jié)構(gòu),可以提高編程效率程序結(jié)構(gòu),可以提高編程效率子程序的設(shè)計(jì)方法子程序的設(shè)計(jì)方法 過程定義偽操作(過程定義偽操作(P93)過程名過程名 PROC 屬性屬性RET過程名過程名 ENDPn其中過程名為標(biāo)識符,它又是子程序入口的符其中過程名為標(biāo)識符,它又是子程序入口的符號地址,與標(biāo)號的作用相同。號地址,與標(biāo)號的作用相同。屬性(屬性(Attribute)是指類型屬性,可以是)是指類型屬性,可以是NEAR或或FAR。n用戶對過程屬性的確定原則很簡單,即:用戶對過程屬性的確定原則很簡單,即:(1)如果調(diào)用程序和過程在同一個(gè)代碼段中,)如果調(diào)用程序和過程在同一個(gè)

28、代碼段中,則使用則使用NEAR屬性。屬性。(2)如果調(diào)用程序和過程不在同一個(gè)代碼段)如果調(diào)用程序和過程不在同一個(gè)代碼段中,則使用中,則使用FAR屬性。屬性。CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA CALL SUBP MOV AH,4CH INT 21HSUBP PROC RETSUBP ENDPCODE ENDS END START帶子程序結(jié)構(gòu)的帶子程序結(jié)構(gòu)的源程序框架舉例源程序框架舉例子程序結(jié)構(gòu):在屏幕上顯示一列子程序結(jié)構(gòu):在屏幕上顯示一列20個(gè)個(gè)*CODE SEGMENT ASSUME CS:CODEBEGIN: MOV

29、CX, 20NEXT: CALL DISP LOOP NEXT MOV AX,4C00H INT 21H RETDISP PROC MOV AH,02H MOV DL,* INT 21H子程序結(jié)構(gòu):在屏幕上顯示一列子程序結(jié)構(gòu):在屏幕上顯示一列20個(gè)個(gè)* MOV AH,02H MOV DL,0DH;回車符號回車符號 INT 21H MOV AH,02H MOV DL,0AH;換行符號換行符號 INT 21HDISP ENDPCODE ENDS END BEGIN4.4 中中 斷斷 調(diào)調(diào) 用用 n4.4.1 DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 n1什么是什么是DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 n系統(tǒng)功能

30、調(diào)用是系統(tǒng)功能調(diào)用是DOS為用戶提供的常用子程為用戶提供的常用子程序(序(80多個(gè)),可在匯編語言程序中直接調(diào)多個(gè)),可在匯編語言程序中直接調(diào)用。這些子程序的主要功能包括:用。這些子程序的主要功能包括:n(1)設(shè)備管理(如鍵盤、顯示器、打印機(jī)、)設(shè)備管理(如鍵盤、顯示器、打印機(jī)、磁盤等的管理)。磁盤等的管理)。n(2)文件管理和目錄操作。)文件管理和目錄操作。n(3)其他管理(如內(nèi)存、時(shí)間、日期等管)其他管理(如內(nèi)存、時(shí)間、日期等管理)。理)。2 DOS功能調(diào)用方法功能調(diào)用方法nDOS功能調(diào)用的子程序已按順序編號功能調(diào)用的子程序已按順序編號功功能號(能號(00H68H),其調(diào)用方法是:),其調(diào)

31、用方法是:n(1)功能號)功能號AH。n(2)入口參數(shù))入口參數(shù)指定寄存器指定寄存器(有的無此項(xiàng)有的無此項(xiàng))。n(3)INT 21H。n用戶只須給出以上三方面信息,用戶只須給出以上三方面信息,DOS即可根即可根據(jù)所給信息自動(dòng)轉(zhuǎn)到相關(guān)子程序執(zhí)行。據(jù)所給信息自動(dòng)轉(zhuǎn)到相關(guān)子程序執(zhí)行。 3常用的系統(tǒng)功能調(diào)用常用的系統(tǒng)功能調(diào)用 n(1)鍵盤輸入)鍵盤輸入n 1號調(diào)用號調(diào)用從鍵盤輸入單個(gè)字符。從鍵盤輸入單個(gè)字符。n調(diào)用格式:調(diào)用格式:MOV AH,1n INT21Hn功能:等待從鍵盤輸入一個(gè)字符并送入功能:等待從鍵盤輸入一個(gè)字符并送入AL(2)顯示輸出)顯示輸出 2號調(diào)用號調(diào)用在顯示器上顯示輸出單個(gè)字在顯

32、示器上顯示輸出單個(gè)字符符調(diào)用格式:調(diào)用格式: MOVDL, 待顯示字符的待顯示字符的ASCII碼碼 MOVAH,2 INT21H功能:將功能:將DL中的字符送顯示器顯示。中的字符送顯示器顯示。例例1:在屏幕上顯示字母:在屏幕上顯示字母AnMOV DL,A MOVAH,2 INT21H例例1程序的完整格式程序的完整格式CODE SEGMENT ASSUME CS:CODESTART: MOV DL,A MOV AH,2 INT 21H MOV AH,4CH;結(jié)束程序,返回結(jié)束程序,返回DOS INT 21HCODE ENDS END START接收鍵盤輸入的小寫字母,顯示其大寫接收鍵盤輸入的小寫

33、字母,顯示其大寫CODE SEGMENT ASSUME CS:CODESTART:MOV AH,1 INT 21H ;接收鍵盤上的單字符輸入接收鍵盤上的單字符輸入 SUB AL,20H;變成大寫字母的變成大寫字母的ASCII碼碼 MOV DL,AL MOV AH,02H INT 21H;單字符顯示輸出單字符顯示輸出 MOV AH,4CH;結(jié)束程序,返回結(jié)束程序,返回DOS INT 21HCODE ENDS END START例例2:從鍵盤上接收一個(gè)字符,然后顯示在下一行:從鍵盤上接收一個(gè)字符,然后顯示在下一行CODE SEGMENT ASSUME CS:CODESTART:MOV AH,1 INT 21H ;接收鍵盤上的單字符輸入接收鍵盤上的單字符輸入 MOV AH,02H MOV DL,0DH;回車符號回車符號 INT 21H MOV AH,02H MOV DL,0AH;換行符號換行符號 INT 21H MOV DL,AL MOV AH,02H; 單字符顯示輸出單字符顯示輸出 INT 21H MOV AH,4CH;結(jié)束程序,返回結(jié)束程序,返回DOS INT 21HCODE ENDS END START例例3:在:在DAT字節(jié)單元中有一個(gè)有符號數(shù),字節(jié)單元中有一個(gè)有符號數(shù),判斷其正負(fù),如果為負(fù)數(shù),則顯示判斷其

溫馨提示

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

最新文檔

評論

0/150

提交評論