微機原理第五章(3).ppt_第1頁
微機原理第五章(3).ppt_第2頁
微機原理第五章(3).ppt_第3頁
微機原理第五章(3).ppt_第4頁
微機原理第五章(3).ppt_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第五節(jié) BIOS和DOS中斷功能調(diào)用 (教材舊P238、新P239) 一、概述 1. BIOS和DOS中斷子程層次特點 2. 中斷類型分類 3. 調(diào)用方法 二、BIOS功能調(diào)用 1設(shè)置顯示方式 ( 10H類型,00H功能 ) 2置光標(biāo)位置 ( 10H類型,02H功能 ) 3清屏、清窗口 ( 10H類型,06H或07H功能 ) 三、 DOS系統(tǒng)功能調(diào)用 ( 21H類型中斷調(diào)用 ) 1顯示單字符 ( 02H功能 ) 2顯示字符串 ( 09H功能 ) 3單字符輸入 ( 01H、07H、08H功能 ) 4字符串輸入 ( 0AH功能 ) 5檢測鍵盤狀態(tài)( 0BH功能 ) 6保存中斷向量 ( 35H功

2、能 ) (第六章介紹) 7設(shè)置中斷向量 ( 25H功能 ),2,第五節(jié) BIOS和DOS中斷功能調(diào)用 一、概述 二、BIOS功能調(diào)用 三、 DOS系統(tǒng)功能調(diào)用 ( 21H類型中斷調(diào)用 ),3,一、概述 1BIOS 和 DOS 中斷子程層次特點 2. 中斷類型分類 3. 調(diào)用方法,4,1BIOS和DOS中斷子程層次特點,5,層次特點: ROM BIOS中的中斷子程 使用IN/OUT指令直接控制外設(shè), 實現(xiàn)與外設(shè)之間的輸入/輸出操作, 以軟件形式向其上層提供服務(wù)。 IO.SYS中的中斷子程 ( 稱基本輸入/輸出BIOS模塊) 調(diào)用ROM BIOS的基本I/O功能, 向 MSDOS.SYS提供設(shè)備驅(qū)

3、動服務(wù)。,6,MSDOS.SYS中的中斷子程 ( 稱DOS內(nèi)核模塊 ) 調(diào)用IO.SYS,實現(xiàn)對外設(shè)的控制。 與標(biāo)準外設(shè)有兩層隔離 : IO.SYS和ROM BIOS。 其中: 21H類型的中斷子程 提供了豐富的系統(tǒng)服務(wù), 稱21類型的中斷調(diào)用 為DOS系統(tǒng)(功能)調(diào)用。,7,用戶編程原則 盡可能使用DOS的系統(tǒng)功能調(diào)用, 提高程序可移植性。 在DOS功能不能實現(xiàn)情況下, 考慮用BIOS功能調(diào)用。 在DOS和BIOS的中斷子程 不能解決問題時, 使用IN/OUT指令直接控制硬件。,8,2. 中斷類型分類 向量表中的中斷類型分為七類: 處理CPU特殊操作( 除0、溢出 )的00H、04H類型。

4、為DEBUG調(diào)試程序設(shè)置的單步( 01H )、斷點( 03H )類型。 處理CPU的NMI引腳信號的02H類型。 非屏蔽硬中斷子程 處理CPU的INTR引腳信號的080FH類型。 可屏蔽類型硬中斷子程 用INT指令調(diào)用的中斷子程 BIOS功能調(diào)用(如101AH) DOS功能調(diào)用 (如 21H),9,10,中斷向量分配表,11,中斷向量分配表 ( 續(xù)),12,中斷向量分配表 ( 續(xù)),13,3. 調(diào)用方法,14,例1 單字符顯示功能調(diào)用 MOV DL, A ;設(shè)置入口參數(shù) MOV AH, 02H ;設(shè)置功能號 INT 21H ;執(zhí)行中斷調(diào)用 例2 單字符輸入功能調(diào)用 MOV AH, 01H ;設(shè)

5、置功能號 INT 21H ;執(zhí)行中斷調(diào)用 CMP AL, 0DH ;分析、應(yīng)用出口參數(shù) JZ exit 、,15,二、BIOS功能調(diào)用 基本輸入/輸出模塊BIOS: 實現(xiàn)對輸入/輸出設(shè)備的控制, 內(nèi)含0 1CH 等類型中斷子程, 包括顯示器、磁盤、鍵盤、打印機等標(biāo)準外設(shè)的驅(qū)動程序。 (參看中斷類型分配表) BIOS功能調(diào)用指對BIOS模塊中的中斷子程的調(diào)用。,16,有關(guān)顯示器 顯示器通過顯卡(顯示適配器)連接到計算機上。 單色顯示器只能顯示黑白兩色。 彩色顯示器能顯示多種顏色。,17, 屏幕上各象素的顯示信息,存放在顯示緩沖區(qū)(顯存)中。,18, 顯示器有兩種顯示方式:,圖形方式: 將屏幕劃分

6、為 mn的點陣,在每個點的位置顯示象素, 一個點是一個象素。,文本方式 將屏幕劃分為若干行和列,在每個網(wǎng)格位置上顯示象素, 一個字符是一個象素。,19,文本方式 將屏幕劃分為 m列和n行 (m n),在每個網(wǎng)格位置上顯示象素, 一個字符是一個象素。,20,圖形方式: 將屏幕劃分為 mn的點陣,在每個點的位置顯示象素, 一個點是一個象素。,21,在文本方式下, 對應(yīng)屏幕上的每個字符, 在顯示緩沖區(qū)中占用兩個單元: 一個存放ASCII碼, 一個存放顯示屬性。,22,23,據(jù)顯存大小,可存儲若干頁的字符象素。 例 16KB 顯存能存儲: 8025方式,4頁( 0 3 ), 802524 =16000

7、 4025方式,8頁( 0 7 ), 402528 =16000,24,25,26,例 清除屏幕顯示,將其屬性置為反白(白底黑字)顯示。 MOV AL, 0 ;清屏功能 MOV BH, 70H ;白底黑字 MOV CH, 0 ;左上角 行號 MOV CL, 0 ;左上角 列號 MOV DH, 24 ;右下角 行號 MOV DL, 79 ;右下角 列號 MOV AH, 6 ;功能號 INT 10H ;中斷調(diào)用,27,28,置光標(biāo)位置 入口參數(shù) DH = 行號 DL = 列號 BH = 頁號 功能號 AH= 02H 類型號 10H 出口參數(shù) 無 實現(xiàn)功能 將光標(biāo)設(shè)置在指定的位置,29,例 將光標(biāo)設(shè)

8、置在2行5列的位置 MOV DH, 2 MOV DL, 5 MOV BH, 0 MOV AH, 2 INT 10H,30,三、DOS系統(tǒng)功能調(diào)用 (21H類型中斷調(diào)用) 1顯示單字符 ( 02H功能 ) 2顯示字符串 ( 09H功能 ) 3單字符輸入 ( 01H、07H、08H功能 ) 4字符串輸入 ( 0AH功能 ) 5檢測鍵盤狀態(tài) ( 0BH功能 ) 6保存中斷向量 ( 35H功能 ) (第六章介紹) 7設(shè)置中斷向量 ( 25H功能 ),31,1. 顯示單字符 ( 02H功能 ) 入口參數(shù) DL = 要顯示字符的ASCII 碼 功能號 AH=02H 類型號 INT 21H 出口參數(shù) 無 實

9、現(xiàn)功能 顯示指定字符,光標(biāo)隨動。,例 顯示字符A MOV DL, A MOV AH, 02H INT 21H,32,例 使光標(biāo)回到下一行的行首。 MOV DL , 0DH ;顯示回車符 MOV AH , 02H INT 21H MOV DL , 0AH ;顯示換行符 MOV AH , 02H INT 21H,33,2. 顯示字符串 ( 09H功能 ) 入口參數(shù) 定義要顯示的字符串, 字符串尾應(yīng)為$,作為結(jié)束顯示的標(biāo)志。 DS : DX = 字符串的首地址 功能號 AH = 09 H 類型號 21H 出口參數(shù) 無 實現(xiàn)功能 顯示字符串,遇 $ 停止顯示,光標(biāo)隨動。,34,例 編程顯示字符串 Ts

10、inghua University,data SEGMENT ;定義顯示的子符串 stri DB Tsinghua University, $ data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;調(diào)顯示功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start,35,有關(guān)鍵盤 鍵盤通過鍵盤接口電路與計算機連接。 鍵盤上的鍵有三種類型: 字符鍵 AZ, 09等

11、 功能鍵 F1F12, Page Up等 組合控制鍵 Shift, Ctrl, Alt等, 鍵盤上的每個鍵都有一個掃描碼。 據(jù)掃描碼可確定操作的是哪個鍵、是按下鍵還是釋放鍵; 掃描碼用一個字節(jié)表示。 低7位是掃描碼的數(shù)字編碼, 與鍵盤上的鍵一一對應(yīng); 最高位D7位表示鍵的操作狀態(tài): 當(dāng)按下鍵時, D7=0 ; 當(dāng)釋放鍵時, D7=1,36, 鍵盤中斷子程功能(09H類型中斷子程) 從鍵盤接口讀取操作鍵的掃描碼; 將掃描碼轉(zhuǎn)換成字符碼; 大部分鍵的字符碼為ASCII碼, 無ASCII碼鍵(如組合鍵Shift、Ctrl等)的字符碼為0。 將鍵的掃描碼、字符碼存放在鍵盤緩沖區(qū), 供其它有關(guān)鍵盤的中斷

12、子程應(yīng)用。, 鍵盤接口對按下鍵和釋放鍵均向計算機發(fā)出中斷申請, 如果中斷響應(yīng)條件滿足, CPU轉(zhuǎn)去執(zhí)行鍵盤中斷子程。 鍵盤中斷子程類型號為09H。,37,3. 單字符輸入 ( 01H、07H、08H功能) 入口參數(shù) 無 功能號 AH = 01H 類型號 21H 出口參數(shù) AL = 鍵入字符的ASCII碼 實現(xiàn)功能 等待從鍵盤輸入一個字符, 并在屏幕上回顯,光標(biāo)移動, 檢測Ctrl-Break鍵,38,例 利用鍵盤輸入的字符產(chǎn)生分支: MOV AH, 1 ;等待從鍵盤輸入 INT 21H CMP AL, Y ;是Y? JZ yes CMP AL, y ;是y? JZ yes no: . . .

13、. . . JMP exit yes: . . . . . . exit: . . .,39,例 在中斷向量表中查找從鍵盤輸入的字符, 并將其個數(shù)用二進制形式顯示出來。( scanskey.asm),40, 入口參數(shù) 無 功能號 AH = 07H 類型號 21H 出口參數(shù) AL = 鍵入字符的ASCII碼 實現(xiàn)功能 等待從鍵盤輸入一個字符, 不在屏幕上回顯, 不檢測Ctrl-Break鍵,41,例 用不帶回顯功能輸入密碼時: input: MOV AH, 07H ;等待從鍵盤輸入 INT 21H MOV DI, AL ;存入緩沖區(qū) CMP AL, 0DH ;是回車符? JNZ input ;不

14、是,繼續(xù)輸入 check: 、 、,42,4. 字符串輸入 ( 0AH 功能 ) 入口參數(shù) DS : DX = 緩沖區(qū)的首地址 ( DS :DX ) = 限制最多輸入的字符數(shù) 功能號 AH = 0AH 類型號 21H 出口參數(shù) ( DS : DX+1 ) = 實際鍵入的字符(不含回車符) 從( DS : DX+2 )開始順序存放鍵入的字符串, 回車符0DH為串尾最后一字符。 實現(xiàn)功能 等待從鍵盤輸入字符串,并存入設(shè)定的緩沖區(qū)內(nèi), 同時回顯字符串,光標(biāo)隨著移動, 回車符使光標(biāo)回到行首。 注意事項:應(yīng)按要求先定義緩沖區(qū),再調(diào)用。,43,例 應(yīng)用0AH功能輸入字符串。,data SEGMENT ;定

15、義緩沖區(qū) max DB 11 ;定義限制最多輸入個數(shù) lenth DB ? ;用于存放實際輸入個數(shù) stri DB 11 DUP(?) ;用于存放輸入的字符串 data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX , data ;置緩沖區(qū)地址于DS:DX MOV DS , AX LEA DX , max MOV AH , 0AH INT 21H ;調(diào)0A輸入功能 MOX CH , 0 MOV CL , lenth ;取字符串長度放CX中 LEA BX , stri ;取字符串首址于BX中 MOV AL , BX ;應(yīng)用輸入字符

16、 、 code ENDS,44,data SEGMENT ;定義緩沖區(qū) max DB 11 ;定義限制最多輸入個數(shù) lenth DB ? ;用于存放實際輸入個數(shù) stri DB 11 DUP(?) ;用于存放輸入的字符串 data ENDS 從鍵盤輸入ABCD, 回車,內(nèi)存的存放結(jié)果:,45,46,47,0AH功能執(zhí)行過程: 若(DS:DX)字節(jié)單元的值為0,則不等待從鍵盤輸入,結(jié)束調(diào)用。 若(DS:DX) 字節(jié)單元的內(nèi)容大于0,則等待從鍵盤輸入, 并把輸入鍵的ASCII碼順序存放在DS : DX+2開始的單元, 按回車鍵表示結(jié)束輸入。 當(dāng)按下鍵的個數(shù)超過( DS : DX )中值,發(fā)出警告聲

17、 嘟嘟 , 不再接收輸入的數(shù)據(jù), 直到輸入回車鍵。 將實際輸入的字符個數(shù)(不包括回車鍵)填入(DS:DX+1), 結(jié)束調(diào)用。,48,0AH功能注意事項: 輸入的字符均帶回顯,且光標(biāo)隨字符移動。 當(dāng)輸入回車符結(jié)束時,也回顯回車符。 表現(xiàn)為功能調(diào)用結(jié)束后,光標(biāo)回到了行首。 回車符0DH作為一個輸入的字符存放在字符串尾, 但計數(shù)輸入個數(shù)時,不包括回車鍵。 實際最多能輸入的字符數(shù) = 限制的最多數(shù)-1 (回車符占一個) 執(zhí)行完0AH功能后,DS和DX的值不變, DS:DX仍指向緩沖區(qū)的首地址。 整個緩沖區(qū)的大小應(yīng)為:限制的最多數(shù) +2 max DB 11, ? , 11 dup (?),49,例 利用

18、DEBUG查看0A功能輸入結(jié)果。,data SEGMENT max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能 INT 21H MOV CH, 0 MOV CL, max+1 ;取輸入長度到CX中 MOV AH, 4CH ;返回DOS INT 21H code ENDS END start,50,D:MASMDEBUG TEST0a.exe ;裝入執(zhí)行文件

19、 -U ;反匯編程序 129E:0000 B89D12 MOV AX , 129D 129E:0003 8ED8 MOV DS , AX 129E:0005 8D160000 LEA DX , 0000 129E:0009 B40A MOV AH , 0A 129E:000B CD21 INT 21 129E:000D B500 MOV CH , 00 129E:000F 8A0E0100 MOV CL , 0001 129E:0013 B44C MOV AH , 4C 129E:0015 CD21 INT 21 、 -D 129D:0 L10 ;查看程序執(zhí)行前緩沖區(qū)內(nèi)容 129D:0000

20、0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 . -G 000D ;執(zhí)行程序 Hello ;從鍵盤輸入字符串 Program terminated normally -D 129D:0 L10 ;查看程序執(zhí)行后緩沖區(qū)內(nèi)容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 00 00 00 .Hello. -,51,思考: 1. 若將程序改為如下形式, 設(shè)想程序執(zhí)行的結(jié)果。,data SEGMENT max DB 100H DUP ( ? ) data ENDS code SEGMENT ASSUM

21、E CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start,52,結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。,53,2. 若將程序改為如下形式, 設(shè)想程序執(zhí)行的結(jié)果。,data SEGMENT max DW 100H,? ,100H DUP ( ? ) ;定義為字類型 data ENDS code SEGMENT ASSUME CS:code, DS:data

22、 start: MOV AX, data ;置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start,54,結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。,55,56,D:MASMDEBUG e0a09.exe -U ;查看程序 129F:0000 B89D12 MOV AX,129D 129F:0003 8ED8 MOV DS,AX 129F:0005 8D160000 LEA DX ,0000 129F:0009 B409 MOV AH

23、 ,09 129F:000B CD21 INT 21 129F:000D 8D160F00 LEA DX ,000F 129F:0011 B40A MOV AH , 0A 129F:0013 CD21 INT 21 129F:0015 B44C MOV AH , 4C 129F:0017 CD21 INT 21 -D 129D:0 L20 ;執(zhí)行程序前查看 data段內(nèi)容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input :$. 129D:0010 00 00 00 00 00 00 00 00-00

24、00 00 00 00 00 00 00 . -G ;執(zhí)行程序 Please Input :Hello! Program terminated normally -D 129 D:0 L20 ;執(zhí)行程序后查看 data段內(nèi)容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input :$. 129D:0010 06 48 65 6C 6C 6F 21 0D-00 00 00 00 00 00 00 00 .Hello!. -,57,data段內(nèi)存情況:,58,思考:程序中少了一個 $ 符的后果。,data SE

25、GMENT stri DB Please Input : max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;顯示提示 INT 21H LEA DX, max ;等待從鍵盤輸入 MOV AH, 0AH INT 21H MOV AH, 4CH INT 21H code ENDS END start,59,60,5檢測鍵盤狀態(tài) ( 0BH功能 ) 入口參數(shù) 無 功能號 AH= 0BH 類型號 21H 出口參數(shù) AL= FFH , 表示有鍵按下。 AL= 0 , 表示無鍵按下。 實現(xiàn)功能 檢測鍵盤狀態(tài)(通過檢測鍵盤緩沖區(qū)實現(xiàn)),61,例 利用0B功能實現(xiàn)按鍵退出循環(huán)。 、 continue: 、 、 、 MOV AH, 0BH ;檢測鍵盤緩沖區(qū)是否有鍵按下 INT 21H CMP AL, 0FFH JNZ continue ;無鍵按下繼續(xù)循

溫馨提示

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

最新文檔

評論

0/150

提交評論