微機原理及應(yīng)用3-9_第1頁
微機原理及應(yīng)用3-9_第2頁
微機原理及應(yīng)用3-9_第3頁
微機原理及應(yīng)用3-9_第4頁
微機原理及應(yīng)用3-9_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

3.9DOS系統(tǒng)功能調(diào)用DOS微型計算機磁盤操作系統(tǒng)。系統(tǒng)功能調(diào)用是DOS為用戶提供的一組常用子程序,它們的主要功能是驅(qū)動外部設(shè)備、進行I/O設(shè)備管理、文件管理及目錄管理。3.9.1DOS系統(tǒng)功能調(diào)用方法

1、設(shè)置入口參數(shù)

2、將子程序編號送AH寄存器—MOVAH,子程序編號3、執(zhí)行中斷指令I(lǐng)NT21H 調(diào)用后有出口參數(shù)時,一般在規(guī)定的寄存器中。有些調(diào)用結(jié)束后會在屏幕上看到結(jié)果。3.9.2常用DOS系統(tǒng)功能調(diào)用舉例1、從鍵盤輸入單個字符(1號調(diào)用)

調(diào)用格式:MOVAH,1INT21H

功能:等待從鍵盤輸入一個字符,將其ASCII碼送AL寄存器并送顯示器顯示。2、顯示輸出單個字符(2號調(diào)用)

調(diào)用格式:MOVDL,輸出字符ASCII碼MOVAH,2INT21H

功能:將DL中的字符送顯示器顯示。3、顯示輸出字符串(9號調(diào)用)

調(diào)用格式:LEADX,字符串首地址MOVAH,9INT21H

功能:將緩沖區(qū)中一組以‘$’結(jié)尾的字符串送顯示器顯示。例3.30DATASEGMENT

BUFDB‘IWISHYOUSUCCESS!$’DATAENDSCODESEGMENT....LEADX,BUFMOVAH,9INT21H….CODEENDS執(zhí)行上述程序段后,屏幕顯示:

IWISHYOUSUCCESS!4、鍵盤輸入字符串(10號調(diào)用)

調(diào)用格式:LEADX,輸入緩沖區(qū)首地址MOVAH,10INT21H

功能:從鍵盤輸入一串字符,存入指定的內(nèi)存緩沖區(qū)。說明:①事先要定義內(nèi)存緩沖區(qū),并注意:

第1字節(jié)定義最多輸入的字符個數(shù);

第2字節(jié)保留,調(diào)用結(jié)束時由系統(tǒng)寫入實際輸入字符的個數(shù);

從第3字節(jié)開始預(yù)留內(nèi)存空間,存放鍵入字符的ASCII碼。②輸入字符串以回車鍵表示結(jié)束。例3.31從鍵盤輸入最多達50個字符的字符串,存入BUF 開始的輸入緩沖區(qū)。DATASEGMENT

BUFDB50DB?DB50DUP(?)DATAENDSCODESEGMENT…LEADX,BUFMOVAH,10INT21H…CODEENDS5、返回操作系統(tǒng)(4CH調(diào)用)

調(diào)用格式:MOVAH,4CHINT21H

功能:結(jié)束當(dāng)前正在執(zhí)行的程序,返回操作系統(tǒng)。例.從鍵盤輸入字符串并回顯。

Ⅰ.顯示‘Doyouwanttoinputastring?(Y/N)’;(09H功能)

Ⅱ.從鍵盤輸入一個字符(Y/N),若是‘y’或‘Y’則執(zhí)行Ⅲ,否則到Ⅶ結(jié)束;(01H功能)

Ⅲ.顯示‘Pleaseinputstring!’;(09H功能)

算法Ⅳ.輸入字符串到緩沖區(qū)(0AH功能);Ⅴ.在緩沖區(qū)輸入的字符串后加結(jié)束符‘$’;Ⅵ.回顯輸入的字符串(09H功能);Ⅶ.結(jié)束。

注:回車——CR,0DH,使光標(biāo)指向(本行)的首列;

換行——LF,0AH,使光標(biāo)指向下一行。DATASEGMENTSTR1DB‘Doyouwanttoinputastring?(Y/N)’,0DH,0AH,‘$’

STR2DB‘Pleaseinputstring!’,0DH,0AH,‘$’;BUFFDB20H,00H,20HDUP(?);DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA; MOVDS,AX;

MOVDX,OFFSETSTR1; MOVAH,09H; INT21H;

MOVAH,01H; INT 21H; CMP AL,’Y’; JE NEXT; CMP AL,’y’; JNE DONE;NEXT:MOV DX,OFFSETSTR2; MOV AH,09H; INT 21H;

MOV DX,OFFSETBUFF; MOV AH,0AH; INT 21H; MOV AL,BUFF+1;讀字符串實長 MOVAH,0;擴展為字 LEA SI,BUFF+2;取字符串的首地址ADD SI,AX;指向字符串末單元 MOV BYTEPTR[SI],’$’;加結(jié)束符號

MOV DX,OFFSETBUFF+2; MOV AH,09H; INT 21H;DONE:MOVAH,4CH; INT 21H;CODE ENDS; END START;謝謝!

3.9DOS系統(tǒng)功能調(diào)用在DOS系統(tǒng)中,將那涉及設(shè)備驅(qū)動和文件管理等程序編寫成相對獨立的程序模塊,存放在DOS系統(tǒng)中,并編上號。用戶只要按照某種規(guī)定的格式進行調(diào)用,就可以很方便的使用這些子程序為自己編程服務(wù)。這些編了號的子程序就是DOS系統(tǒng)功能調(diào)用模塊,調(diào)用這些模塊就是DOS系統(tǒng)功能調(diào)用一.

DOS系統(tǒng)功能調(diào)用的格式

入口參數(shù);由系統(tǒng)規(guī)定。

MOVAH,nn1;nn1為功能號, 規(guī)定調(diào)用的功能。INT21H;

21H為系統(tǒng)功能調(diào)用類型碼,規(guī)定調(diào)用的類型為DOS系統(tǒng)功能調(diào)用。出口參數(shù);由系統(tǒng)規(guī)定。例如:在屏幕上顯示一個字符(如7)

MOVDL,37H

;入口參數(shù)

MOVAH,02H;02H為功能號,規(guī)定顯示DL內(nèi)的字符INT21H;結(jié)果在屏幕上顯示字符‘7’,屏幕就是出口參數(shù)注意在執(zhí)行DOS系統(tǒng)功能調(diào)用前,根據(jù)規(guī)定,看是否需要提供必要的入口參數(shù)。對于功能號,可參考書上361頁附錄4。這些功能號實際上就是DOS層功能模塊所提供的子程序的編號。需要使用INT中斷類型號(即21H),才能調(diào)用DOS提供的這些子程序,實際上這里用到了所謂的軟中斷指令I(lǐng)NT。有些DOS子程序在執(zhí)行后可能返回有關(guān)參數(shù),即為出口參數(shù),這些出口參數(shù)存放在一些指定的寄存器或者存儲單元中。二.

DOS系統(tǒng)功能調(diào)用(類型碼:21H)功能號功能 入口參數(shù)出口參數(shù)00H程序終止 無 無01H鍵盤輸入并回顯 無AL=輸入字符02H顯示字符 DL=輸出字符03H異步通信輸入 AL=輸入字符04H異步通信輸出DL=輸出字符05H 打印機輸出 DL=輸出字符More..06H 直接控制臺I/O二.

DOS系統(tǒng)功能調(diào)用(類型碼:21H)功能號 功能 入口參數(shù)出口參數(shù)07H 鍵盤輸入無回顯 AL=輸入字符08H 同上但要檢測Ctrl-Break

09H顯示字符串 DS:DX=串地址 ‘$’為字符串結(jié)束0AH 字符串輸入 (見說明)4CH 返回DOS操作系統(tǒng)

Back..①AH=09H為顯示字符串功能。

例如,顯示STRING中字符串:

STRINGDB‘ABOY’,’$’;

則相關(guān)的程序段為:

MOVDX,OFFSETSTRING;取STRING的偏移地址

MOVAH,09H;

INT21H;DS:DX輸出緩沖區(qū)

結(jié)束字符

‘A’‘’‘B’‘O’‘Y’‘$’三.重點強調(diào):程序形式:datasegmentstringdb‘a(chǎn)ssemblelanguage!’,‘$’dataendscodesegmentassumecs:code,ds:datastart:……movdx,offsetstringmovah,09Hint21H……

②AH=0AH為從鍵盤輸入字符串(P97)

入口參數(shù):DS:DX=輸入緩沖區(qū)首地址,而[DS:DX]的內(nèi)容還表示輸入緩沖區(qū)的總長;出口參數(shù):[DS:DX+1]為輸入字符串的實長(字符個數(shù))DS:DX+0輸入緩沖區(qū)+1+2實際輸入的字符總長實長

算法例2,密碼輸入程序。a.提示“PleaseInputYourPassword.”b.用輸入字符不回顯方式一個一個輸 入密碼,每輸入1位密位顯示一個“*” 號;密位可以1~8位,不足8位時以 “回車”結(jié)束,滿8位時自動結(jié)束。c.比較輸入的密碼。例2,密碼輸入程序。

算法密碼錯誤,顯示“Wrong,Again!”

重新輸入輸入密碼。e.密碼正確,轉(zhuǎn)操作程序(以顯示 “OK!”結(jié)束)。g.密碼輸入最多3次,3次均為錯誤 時顯示“NO!”退出。BACK?主程序BL←03HSI←BUFF1偏輸入密碼(SUB1)比較密碼(SUB2)密碼對?BL-1≠0?顯示“NO!”顯示“OK!”顯示“Wrong,Again!”ENDLOPYYNNDONEAGAINSUB1DI←BUFF2偏CX←08H輸入字符存字符是否回車?DI←DI+1顯示‘*’號CX-1≠0?RET輸入密碼子程序LOP1YNYDONE1NSUB2DI←BUFF2偏CX←取密位比較1個字符DI←DI+1是否不相同?SI←SI+1AL←00HCX-1≠0?RET比較密碼子程序LOP2YNYDONE2NAL←0FFHSTACKSEGMENTSTACK DW256DUP(?);

TOPLABELWORD;STACKENDS;DATASEGMENTSTR1DB‘Pleaseinputyourpassword.’,0dh,0aH,‘$’;STR2DB‘Wrong,Again!’,0DH,0AH,‘$’;STR3DB‘OK!’,0DH,0AH,’$’;STR4DB‘NO!’,0DH,0AH,’$’;DAT1DW08H;密位BUFF1DB‘12345678’;密碼BUFF2DB08HDUP(?);輸入緩沖區(qū)DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA; MOV DS,AX; MOV AX,STACK; MOV SS,AX; MOV SP,OFFSETTOP; MOV BL,03H; MOV SI,OFFSETBUFF1;LOP: MOVDX,OFFSETSTR1; MOVAH,09H; INT21H; CALL SUB1;調(diào)密碼輸入子程序 CALL SUB2;調(diào)密碼

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論