第5章匯編程序設(shè)計基本方法_第1頁
第5章匯編程序設(shè)計基本方法_第2頁
第5章匯編程序設(shè)計基本方法_第3頁
第5章匯編程序設(shè)計基本方法_第4頁
第5章匯編程序設(shè)計基本方法_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5 . 匯編程序設(shè)計基本方法匯編程序設(shè)計基本方法5.1 匯編語言程序結(jié)構(gòu)匯編語言程序結(jié)構(gòu) 5.2 子程序設(shè)計與調(diào)用子程序設(shè)計與調(diào)用5.3 DOS功能調(diào)用功能調(diào)用 (補(bǔ)充補(bǔ)充)前面幾章主要介紹了指令系統(tǒng)中的各種指令,這些指前面幾章主要介紹了指令系統(tǒng)中的各種指令,這些指令是編寫匯編程序的工具。本章將學(xué)習(xí)編寫匯編程序。令是編寫匯編程序的工具。本章將學(xué)習(xí)編寫匯編程序。 序言:序言:(1) 分析問題,明確要求;分析問題,明確要求;(2) 建立數(shù)學(xué)模型:即將解決問題的方法用數(shù)學(xué)語言表達(dá)出來建立數(shù)學(xué)模型:即將解決問題的方法用數(shù)學(xué)語言表達(dá)出來(3) 確定算法:即轉(zhuǎn)化為計算機(jī)解法;確定算法:即轉(zhuǎn)化為計算機(jī)解法;

2、畫出程序流程圖;畫出程序流程圖;編碼,調(diào)試;編碼,調(diào)試;(4) 整理資料,投入使用。整理資料,投入使用。 匯編程序設(shè)計基本過程:匯編程序設(shè)計基本過程: 匯編程序設(shè)計特點(diǎn):匯編程序設(shè)計特點(diǎn):模塊化、結(jié)構(gòu)化模塊化、結(jié)構(gòu)化本章學(xué)習(xí)要求本章學(xué)習(xí)要求1 1、掌握三種結(jié)構(gòu)程序的設(shè)計方法,領(lǐng)會結(jié)構(gòu)、掌握三種結(jié)構(gòu)程序的設(shè)計方法,領(lǐng)會結(jié)構(gòu)化程序設(shè)計的思想?;绦蛟O(shè)計的思想。3 3、掌握幾種、掌握幾種DOSDOS功能調(diào)用,了解功能調(diào)用,了解BIOSBIOS功能調(diào)用,功能調(diào)用,能從功能調(diào)用表中查找到滿足自己要求的能從功能調(diào)用表中查找到滿足自己要求的DOSDOS功能并給出正確的調(diào)用參數(shù)。功能并給出正確的調(diào)用參數(shù)。2

3、2、掌握子程序設(shè)計和調(diào)用方法。、掌握子程序設(shè)計和調(diào)用方法。5.1 5.1 匯編語言程序結(jié)構(gòu)匯編語言程序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu) 子程序結(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)一、順序結(jié)構(gòu)程序設(shè)計一、順序結(jié)構(gòu)程序設(shè)計二、循環(huán)結(jié)構(gòu)程序設(shè)計二、循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu):包括當(dāng)型和直到型兩種。包括當(dāng)型和直到型兩種。WHILE 結(jié)構(gòu)結(jié)構(gòu) DO-UNTIL 結(jié)構(gòu)結(jié)構(gòu)控制條件控制條件初始化初始化循環(huán)體循環(huán)體YN控制條件控制條件初始化初始化循環(huán)體循環(huán)體YN 循環(huán)類型:循環(huán)類型: 循環(huán)結(jié)構(gòu)的組成部分:循環(huán)結(jié)構(gòu)的組成部分: 初始化部分:初始

4、化部分:設(shè)置循環(huán)的初始狀態(tài)。設(shè)置循環(huán)的初始狀態(tài)。類似類似C語言語言for(int i=1; i10; i+)中的中的int i=1 循環(huán)體部分:循環(huán)體部分:循環(huán)工作的主體部分。循環(huán)工作的主體部分。 調(diào)整部分:調(diào)整部分:調(diào)整循環(huán)的次數(shù)。調(diào)整循環(huán)的次數(shù)。類似類似C語言語言for(int i=1; i10; i+)中的中的i+ 控制部分:控制部分:控制循環(huán)的結(jié)束??刂蒲h(huán)的結(jié)束。類似類似C語言語言for(int i=1; i10; i+)中的中的i10 單重循環(huán)單重循環(huán) 嵌套循環(huán)嵌套循環(huán)(多重循環(huán)多重循環(huán)):即循環(huán)結(jié)構(gòu)內(nèi)又有循環(huán)即循環(huán)結(jié)構(gòu)內(nèi)又有循環(huán) 四條循環(huán)控制指令:四條循環(huán)控制指令: 循環(huán)指令:循

5、環(huán)指令:LOOP OPR 循環(huán)判斷條件:循環(huán)判斷條件:(CX) 0 為零或相等時循環(huán)指令:為零或相等時循環(huán)指令:LOOPZ/LOOPE OPR 循環(huán)判斷條件:循環(huán)判斷條件:ZF=1 且且 (CX) 0 不為零或不相等時循環(huán)指令:不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE) OPR 循環(huán)判斷條件:循環(huán)判斷條件:ZF=0 且且 (CX) 0LOOP OPR DEC CX JNZ OPR因此,用跳轉(zhuǎn)指令也能實現(xiàn)循環(huán)因此,用跳轉(zhuǎn)指令也能實現(xiàn)循環(huán) 單重循環(huán)程序舉例單重循環(huán)程序舉例分析:分析: BXBX1234畫流程圖:畫流程圖:ASCII碼表碼表program segment ;define

6、code segmentprogram segment ;define code segmentmain proc farmain proc far assume cs:program assume cs:programStart: push ds ;save old data segmentStart: push ds ;save old data segment sub ax,ax sub ax,ax push ax ;0 push ax ;0偏移地址入棧偏移地址入棧 mov ch, 4 ;number of digitsmov ch, 4 ;number of digitsrotate:

7、 mov cl, 4 ;set count to 4 bitsrotate: mov cl, 4 ;set count to 4 bits rol bx, cl rol bx, cl mov al, bl mov al, bl and al, 0fh ; and al, 0fh ; 提取出低提取出低4 4位位 add al, 30h add al, 30h ; 09 ASCII 30H39H; 09 ASCII 30H39H cmp al, 3ah cmp al, 3ah ;判斷是否是大于;判斷是否是大于9 9 jl printit jl printit add al, 7h add al,

8、7h ; AF ASCII 41H46H; AF ASCII 41H46Hprintit: mov dl, al ;printit: mov dl, al ;調(diào)用調(diào)用DOSDOS功能的入口參數(shù)功能的入口參數(shù) mov ah, 2 mov ah, 2 int 21h int 21h dec ch dec ch ;判斷是否已顯示了;判斷是否已顯示了4 4個數(shù)字個數(shù)字 jnz rotate jnz rotate ret retmain endpmain endpprogram endsprogram endsendendData segmentData segment buffer db 80 dup

9、(?) buffer db 80 dup(?) flag db ? flag db ?Data endsData endsPrognam SegmentPrognam Segment assume cs:Prognam, ds:Data assume cs:Prognam, ds:Datastart:start: push ds ; set up stack for reture push ds ; set up stack for reture sub ax,ax sub ax,ax push ax push ax mov ax, Data mov ax, Data mov ds, ax m

10、ov ds, ax; main part of program goes here; main part of program goes here lea bx, buffer lea bx, buffer mov flag, 0 mov flag, 0next: mov ah,01 ; next: mov ah,01 ; 調(diào)用調(diào)用DOS 1DOS 1號子功能號子功能 int 21h ; int 21h ; 從鍵盤接收一個字符從鍵盤接收一個字符 test flag, 01h test flag, 01h jnz follow ; jnz follow ; 判斷是否是第一個字符判斷是否是第一個字

11、符 cmp al, 20h ; cmp al, 20h ; 判斷是否是空格符判斷是否是空格符 jnz exit jnz exit mov flag, 1 mov flag, 1 jmp next jmp nextfollow: cmp al, 20hfollow: cmp al, 20h jz exit jz exit mov bx, al ; mov bx, al ; 置入緩沖區(qū)置入緩沖區(qū) inc bx inc bx jmp next jmp nextexit: ret ; return to DOSexit: ret ; return to DOSmain endpmain endpPro

12、gnam endsPrognam endsend startend start多重循環(huán)程序舉例多重循環(huán)程序舉例序號 地址 數(shù)比 較 遍 數(shù)12341 A 322 A+2 853 A+4 164 A+6 155 A+8 8321615885161583285158163285815163285冒泡法排序算法冒泡法排序算法 mov cx, 5 mov cx, 5 ; ;元素個數(shù)元素個數(shù) dec cx dec cx ; ;比較遍數(shù)比較遍數(shù)Loop1Loop1: mov di, cx mov di, cx ; ;比較次數(shù)比較次數(shù) mov bx, 0mov bx, 0Loop2Loop2: mov ax

13、, Abx mov ax, Abx ; ;相鄰兩數(shù)相鄰兩數(shù) cmp ax, Abx+2 cmp ax, Abx+2 ; ; 比較比較 jle continuejle continue xchg ax, Abx+2 xchg ax, Abx+2 ; ;交換位置交換位置 mov Abx, axmov Abx, axcontinue:continue: add bx, 2 add bx, 2 loop loop2 loop loop2 mov cx, di mov cx, di loop loop1 loop loop1 三、分支結(jié)構(gòu)程序設(shè)計三、分支結(jié)構(gòu)程序設(shè)計 (選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計)

14、 選擇結(jié)構(gòu):選擇結(jié)構(gòu):程序中存在判斷,并根據(jù)判斷結(jié)果轉(zhuǎn)向不同程序中存在判斷,并根據(jù)判斷結(jié)果轉(zhuǎn)向不同 的處理的處理 選擇結(jié)構(gòu)包括了二路分支和多路分支選擇結(jié)構(gòu)包括了二路分支和多路分支? case 1 case 2 二路分支二路分支 IF-ELSE case 1 case 2 case n多路分支多路分支 SWITCH實現(xiàn)多路分支結(jié)構(gòu)的實現(xiàn)多路分支結(jié)構(gòu)的方法:方法:跳轉(zhuǎn)表法跳轉(zhuǎn)表法關(guān)鍵字法關(guān)鍵字法1、無條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令 JMP2、條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令 JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、 JP / JNP、 JB / JNB、 JL /

15、JNL、 JBE / JNBE、 JLE / JNLE、 JCXZ 控制轉(zhuǎn)移指令:控制轉(zhuǎn)移指令:DATA SEGMENT ;定義數(shù)據(jù)段 STRING1 DB IT IS ODD!, $ STRING2 DB IT IS EVEN!, $DATA ENDSCODE SEGMENT ;定義代碼段 ASSUME CS:CODE,DS:DATA ;ASSUME偽指令,說明段與 ;段寄存器之間的對應(yīng)關(guān)系START: MOV AX,DATA ;實現(xiàn)段與段寄存器之間的對應(yīng) ;關(guān)系 MOV DS,AX MOV AH,01H ;調(diào)用1號DOS功能,從鍵盤上讀入一個 ;字符,并將該字符回顯在屏幕上 INT 21H

16、 CLC RCR AL,1 JNC EVN MOV DX,OFFSET STRING1 ;將字符串Sting1的偏移地址 ;賦給DX CALL DISPMESSEVN: MOV DX,OFFSET STRING2 CALL DISPMESS DISPMESS PROC ;定義一個過程,用于輸出字符串 MOV AH,9 ;調(diào)用9號子功能 INT 21H ;返回DOS MOV AH,4CH ;結(jié)束程序 INT 21HDISPMESS ENDPCODE ENDS END START例:寫一程序,由用戶輸入三個例:寫一程序,由用戶輸入三個單字節(jié)無符號數(shù)且存放單字節(jié)無符號數(shù)且存放于于BUFFER開始的緩

17、沖區(qū)中,開始的緩沖區(qū)中,用戶每輸入一位數(shù)前屏幕用戶每輸入一位數(shù)前屏幕顯示:顯示: Enter the first value(0-9): _ Enter the second value(0-9): _ Enter the third value(0-9): _程序?qū)⑦@三個數(shù)按從大到小排序。排完序后,顯示如下程序?qū)⑦@三個數(shù)按從大到小排序。排完序后,顯示如下 After sorting. Num1= _ Num2= _ Num3= _DATA SEGMENTMSG1 DB Enter the first value(0-9):,$ MSG2 DB 0DH,0AH,Enter the second

18、 value(0-9):,$ MSG3 DB 0DH,0AH,Enter the third value(0-9):,$MSG4 DB 0DH,0AH,After sorting.,$NUM1 DB 0DH,0AH,Num1=,$NUM2 DB 0DH,0AH,Num1=,$NUM3 DB 0DH,0AH,Num1=,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG1 ;讀取第一個數(shù)MOV AH,9INT 21HMOV AH,01H INT 21HMOV BL,AL

19、MOV DX,OFFSET MSG2 ;讀取第二個數(shù)MOV AH,9INT 21HMOV AH,01HINT 21HMOV CL,AL MOV DX,OFFSET MSG3 ;讀取第三個數(shù)MOV AH,9INT 21HMOV AH,01HINT 21HMOV BH,AL CMP BL,CL JAE NEXT1 ;等價于JNBXCHG BL,CLNEXT1: CMP BL,BHJAE NEXT2XCHG BL,BHNEXT2: CMP CL,BHJAE DISPLAYXCHG CL,BHDISPLAY:MOV DX,OFFSET MSG4 MOV AH,9 INT 21H MOV DX,OFFS

20、ET NUM1 MOV AH,9 INT 21H MOV AH,02H MOV DL,BL INT 21HMOV DX,OFFSET NUM2MOV AH,9INT 21H MOV AH,02HMOV DL,CLINT 21HMOV DX,OFFSET NUM3MOV AH,9INT 21HMOV AH,02HMOV DL,BHINT 21HMOV AH,4CHINT 21HCODE ENDSEND START5.2 5.2 子程序設(shè)計與調(diào)用子程序設(shè)計與調(diào)用 子程序的作用:子程序的作用: 減少編程工作量;減少編程工作量; 節(jié)省存儲空間;節(jié)省存儲空間; 模塊化,使程序結(jié)構(gòu)清晰,便于調(diào)試;模塊化,

21、使程序結(jié)構(gòu)清晰,便于調(diào)試;一、過程一、過程(子程序子程序)定義偽指令定義偽指令 過程名過程名 PROC NEAR ( FAR )PROC NEAR ( FAR ) 過程名過程名 ENDPENDP(1 1)NEARNEAR屬性:調(diào)用程序和子程序在同一代碼段中屬性:調(diào)用程序和子程序在同一代碼段中 (段內(nèi)調(diào)用)(段內(nèi)調(diào)用)(2 2)FARFAR屬性:調(diào)用程序和子程序不在同一代碼段中屬性:調(diào)用程序和子程序不在同一代碼段中 (段間調(diào)用)(段間調(diào)用).code segmentcode segment main proc farmain proc far call subr1 call subr1 ret

22、retmain endpmain endpsubr1 proc nearsubr1 proc near ret retsubr1 endpsubr1 endpcode endscode endssegx segmentsegx segmentsubt proc farsubt proc far ret retsubt endpsubt endp call subt call subt segx endssegx endssegy segmentsegy segment call far ptr subt call far ptr subt segy endssegy ends二、子程序的調(diào)用和

23、返回二、子程序的調(diào)用和返回子程序調(diào)用:隱含使用堆棧保存返回地址子程序調(diào)用:隱含使用堆棧保存返回地址 call near ptr subpcall near ptr subp (1) 保存返回地址保存返回地址 (2) 轉(zhuǎn)子程序轉(zhuǎn)子程序 call far ptr subpcall far ptr subp (1) 保存返回地址保存返回地址 (2) 轉(zhuǎn)子程序轉(zhuǎn)子程序子程序返回:子程序返回:ret ret (返回地址出棧)返回地址出棧) (SP) (IP)(IP)(CS) (SP) 三、子程序說明信息三、子程序說明信息為了能正確使用子程序,在給出子程序代碼的時候,為了能正確使用子程序,在給出子程序代碼

24、的時候,最好是能給出說明信息,包括:最好是能給出說明信息,包括: 子程序名;子程序名; 功能描述;功能描述; 入口和出口參數(shù);入口和出口參數(shù);四、寄存器的保存和恢復(fù)四、寄存器的保存和恢復(fù)(保護(hù)現(xiàn)場保護(hù)現(xiàn)場)方法:把需要保護(hù)的寄存器的內(nèi)容,在程序中壓入和彈方法:把需要保護(hù)的寄存器的內(nèi)容,在程序中壓入和彈出堆棧。出堆棧。subt proc farsubt proc far push ax push ax push bx push bx push cx push cx push dx push dx pop dx pop dx pop cx pop cx pop bx pop bx pop ax p

25、op ax ret retsubt endpsubt endp五、子程序的參數(shù)傳送五、子程序的參數(shù)傳送 參數(shù)類型:參數(shù)類型:主程序在調(diào)用子程序時,經(jīng)常需要向子程序傳遞一些參主程序在調(diào)用子程序時,經(jīng)常需要向子程序傳遞一些參數(shù);子程序執(zhí)行完后,也需要向主程序返回一些數(shù)據(jù)。數(shù);子程序執(zhí)行完后,也需要向主程序返回一些數(shù)據(jù)。 入口參數(shù):入口參數(shù):相當(dāng)于相當(dāng)于C語言函數(shù)的實際參數(shù)語言函數(shù)的實際參數(shù) 出口參數(shù):出口參數(shù):相當(dāng)于函數(shù)返回值相當(dāng)于函數(shù)返回值 參數(shù)傳遞的方法:參數(shù)傳遞的方法: 通過寄存器傳送參數(shù);通過寄存器傳送參數(shù); 通過存儲器傳送參數(shù);通過存儲器傳送參數(shù); 通過地址表傳送參數(shù)地址;通過地址表傳送

26、參數(shù)地址; 通過堆棧傳送參數(shù)或參數(shù)地址;通過堆棧傳送參數(shù)或參數(shù)地址;(通過寄存器傳送參數(shù))(通過寄存器傳送參數(shù))hexidec segment ; 1610 assume cs: hexidec main proc farstart: push ds sub ax, ax push axrepeat: call hexibin ; 162 call crlf call binidec ; 210 call crlf jmp repeat retmain endphexidec ends end starthexibin proc nearhexibin proc near mov bx, 0m

27、ov bx, 0newchar: mov ah, 1 int 21h sub al, 30h jl exit cmp al, 10 jl add_to sub al, 27h cmp al, 0ah jl exit cmp al, 10h jge exitadd_to: mov cl, 4 shl bx, cl mov ah, 0 add bxbx, ax jmp newchar exit: rethexibin endphexibin endpbinidec proc nearbinidec proc near mov cx, 10000d call dec_divcall dec_div

28、mov cx, 1000d call dec_divcall dec_div mov cx, 100d call dec_divcall dec_div mov cx, 10d call dec_divcall dec_div mov cx, 1d call dec_divcall dec_div retbinidec endpbinidec endpdec_div proc neardec_div proc near mov ax, bx mov ax, bx mov dx, 0 mov dx, 0 div cx div cx mov bx, dx mov bx, dx mov dl, al

29、 mov dl, al add dl, 30h add dl, 30h mov ah, 2 mov ah, 2 int 21h int 21h ret retdec_div endpdec_div endp(通過存儲器傳送參數(shù))(通過存儲器傳送參數(shù))data segment ary dw 1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw ?data endscode segmentmain proc far assume cs:code,ds:data mov ax, data mov ds, ax call proaddcall proadd mov ax,4c

30、00h int 21hmain endpcode ends end mainproadd proc nearproadd proc near push ax push cx push si lea si, aryary mov cx, countcount xor ax, axnext: add ax, si add si, 2 loop next mov sumsum,ax pop si pop cx pop ax retproadd endpproadd endp(通過地址表傳送參數(shù)地址)(通過地址表傳送參數(shù)地址)data segment ary dw 10,20,30,40,50,60,

31、70,80,90,100 count dw 10 sum dw ? table dw 3 dup (?) ; 地址表data endscode segmentmain proc far assume cs:code, ds:data push ds sub ax, ax push ax mov ax, data mov ds, ax mov table, offset ary mov table+2, offset count mov table+4, offset sum mov bx, offset table call proadd retmain endp proadd proc ne

32、arproadd proc near push ax push cx push si push di mov si, bx mov di, bx+2 mov cx, di mov di, bx+4 xor ax, axnext: add ax, si add si, 2 loop next mov di,ax pop di pop si pop cx pop ax retproadd endpproadd endpcode ends end main 30d 40d 50d 60d 70d 80d 90d100d 10d ary 20d 10dcountsumtable000000000014

33、00140016001600180018000000000014001400160016(bx)(bx)(si)(si)(di)(di)550d550d六、嵌套子程序六、嵌套子程序 子程序的嵌套:子程序的嵌套:在一個子程序中調(diào)用到另一個子程序的在一個子程序中調(diào)用到另一個子程序的結(jié)構(gòu),稱為嵌套。結(jié)構(gòu),稱為嵌套。 注意:注意:此時要注意寄存器的保護(hù)和恢復(fù)。此時要注意寄存器的保護(hù)和恢復(fù)。子程序的嵌套:子程序的嵌套: 主程序主程序 子程序子程序A A 子程序子程序B B call proc_Acall proc_Aproc_A proc_A call proc_Bcall proc_BCall pro

34、c_ACall proc_Aretretproc_Bproc_B retret六、遞歸子程序六、遞歸子程序 子程序的遞歸:子程序的遞歸:在子程序中調(diào)用到自身,稱為遞歸。在子程序中調(diào)用到自身,稱為遞歸。 例如:階乘!例如:階乘!n! n ( n - 1 ) ( n - 2 ) 1fact proc nearfact proc near push ax push ax push bp push bp mov bp, sp mov bp, sp mov ax, bp+6 mov ax, bp+6 cmp ax, 0 cmp ax, 0 jne fact1 jne fact1 inc ax inc a

35、x jmp exit jmp exitfact1: dec axfact1: dec ax push ax push ax call fact call fact pop ax pop ax mul word ptrbp+6 mul word ptrbp+6exit: mov bp+6, axexit: mov bp+6, ax pop bp pop bp pop ax pop ax ret ret fact endpfact endp5.3 DOS5.3 DOS功能調(diào)用功能調(diào)用MS-DOS將許多涉及設(shè)備驅(qū)動和文件管理等操作編寫成子程將許多涉及設(shè)備驅(qū)動和文件管理等操作編寫成子程序存儲起來,每個

36、子程序?qū)?yīng)一個編號,程序員通過調(diào)用這序存儲起來,每個子程序?qū)?yīng)一個編號,程序員通過調(diào)用這些子程序來實現(xiàn)所需要的功能。些子程序來實現(xiàn)所需要的功能。 DOS功能調(diào)用分類:功能調(diào)用分類: 設(shè)備驅(qū)動設(shè)備驅(qū)動(基本基本I/O) 文件管理文件管理 其他其他(內(nèi)存管理、終止程序等內(nèi)存管理、終止程序等) DOS功能調(diào)用的步驟:功能調(diào)用的步驟: 準(zhǔn)備入口參數(shù)準(zhǔn)備入口參數(shù)(有些功能調(diào)用無需入口參數(shù)有些功能調(diào)用無需入口參數(shù)); 子程序的編號送子程序的編號送AH寄存器;寄存器; 發(fā)軟中斷指令發(fā)軟中斷指令I(lǐng)NT 21H;2號子功能能實現(xiàn)在屏幕上輸出字符,但當(dāng)號子功能能實現(xiàn)在屏幕上輸出字符,但當(dāng)DL=07H時,并不輸出時

37、,并不輸出字符,而是發(fā)出嘟的一聲。字符,而是發(fā)出嘟的一聲。 基本基本I/O功能調(diào)用功能調(diào)用1、帶回顯鍵盤輸入、帶回顯鍵盤輸入(1號功能號功能) 功能:從鍵盤上讀一個字符,并將該字符回顯在屏幕上。功能:從鍵盤上讀一個字符,并將該字符回顯在屏幕上。 入口參數(shù):無入口參數(shù):無 出口參數(shù):出口參數(shù):AL=讀到字符的讀到字符的ASCII碼碼 說明:若讀到的字符是說明:若讀到的字符是Ctrl+C或或Ctrl+Break,則結(jié)束程序。,則結(jié)束程序。2、不帶回顯鍵盤輸入、不帶回顯鍵盤輸入(8號功能號功能) 除讀到的字符不在屏幕上顯示外,同除讀到的字符不在屏幕上顯示外,同1號功能號功能3、直接鍵盤輸入、直接鍵盤輸入(7號功能號功能) 功能:從鍵盤上讀一個字符功能:從鍵盤上讀一個字符 入口參數(shù):無入口參數(shù):無 出口參數(shù):出口參數(shù):AL=讀到字符的讀到字符的ASCII碼碼 說明:說明:u 不檢查讀到

溫馨提示

  • 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

提交評論