




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三節(jié)第三節(jié) BIOS和和DOS中斷功能調(diào)用中斷功能調(diào)用 (教材舊教材舊P238、新、新P239) 一、概述一、概述 1. BIOS和和DOS中斷子程層次特點中斷子程層次特點 2. 中斷類型分類中斷類型分類 3. 調(diào)用方法調(diào)用方法 二、二、BIOS功能調(diào)用功能調(diào)用 1設(shè)置顯示方式設(shè)置顯示方式 ( 10H類型,類型,00H功能功能 ) 2置光標位置置光標位置 ( 10H類型,類型,02H功能功能 ) 3清屏、清窗口清屏、清窗口 ( 10H類型,類型,06H或或07H功能功能 ) 三、三、 DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 ( 21H類型中斷調(diào)用類型中斷調(diào)用 ) 1顯示單字符顯示單字符 ( 02H功
2、能功能 ) 2顯示字符串顯示字符串 ( 09H功能功能 ) 3單字符輸入單字符輸入 ( 01H、07H、08H功能功能 ) 4字符串輸入字符串輸入 ( 0AH功能功能 ) 5檢測鍵盤狀態(tài)檢測鍵盤狀態(tài)( 0BH功能功能 ) 6保存中斷向量保存中斷向量 ( 35H功能功能 ) (第六章介紹)第六章介紹) 7設(shè)置中斷向量設(shè)置中斷向量 ( 25H功能功能 ) 第三節(jié)第三節(jié) BIOS和和DOS中斷功能調(diào)用中斷功能調(diào)用 (教材舊教材舊P238、新、新P239) 一、概述一、概述 二、二、BIOS功能調(diào)用功能調(diào)用 三、三、 DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 ( 21H類型中斷調(diào)用類型中斷調(diào)用 ) 一、概述一、
3、概述 1BIOS 和和 DOS 中斷子程層次特點中斷子程層次特點 2. 中斷類型分類中斷類型分類 3. 調(diào)用方法調(diào)用方法 1BIOS和和DOS中斷子程層次特點中斷子程層次特點 用戶程序用戶程序 磁盤管理模塊磁盤管理模塊(DOS內(nèi)核內(nèi)核) MSDOS.SYS 系統(tǒng)功能系統(tǒng)功能 基本輸入基本輸入/輸出輸出 BIOS 模模 塊塊 IO.SYS 設(shè)備驅(qū)動設(shè)備驅(qū)動 ROM BIOS 基本基本I/O 系系 統(tǒng)統(tǒng) 硬硬 件件 裝入裝入命令處理模塊命令處理模塊 COMMAN D.COM 用戶命令用戶命令 DOS系統(tǒng)層次結(jié)構(gòu)系統(tǒng)層次結(jié)構(gòu) 層次特點:層次特點: l ROM BIOS中的中斷子程中的中斷子程 使使用
4、用IN/OUT指令指令直接控制外設(shè),直接控制外設(shè), 實現(xiàn)與外設(shè)之間的輸入實現(xiàn)與外設(shè)之間的輸入/輸出操作,輸出操作, 以軟件形式向其上層提供服務(wù)。以軟件形式向其上層提供服務(wù)。 l IO.SYS中的中斷子程中的中斷子程 ( 稱基本輸入稱基本輸入/輸出輸出BIOS模塊模塊) 調(diào)用調(diào)用ROM BIOS的基本的基本I/O功能功能, 向向 MSDOS.SYS提供設(shè)備驅(qū)動服務(wù)。提供設(shè)備驅(qū)動服務(wù)。 用戶程序用戶程序 磁盤管理模塊磁盤管理模塊(DOS內(nèi)核內(nèi)核) MSDOS.SYS 系統(tǒng)功能系統(tǒng)功能 基本輸入基本輸入/輸出輸出 BIOS 模模 塊塊 IO.SYS 設(shè)備驅(qū)動設(shè)備驅(qū)動 ROM BIOS 基本基本I/O
5、 系系 統(tǒng)統(tǒng) 硬硬 件件 裝裝 入入 命令處理模塊命令處理模塊 COMMAN D.COM 用戶命令用戶命令 l MSDOS.SYS中的中斷子程中的中斷子程 ( 稱稱DOS內(nèi)核模塊內(nèi)核模塊 ) 調(diào)用調(diào)用IO.SYS,實現(xiàn)對外設(shè)的控制。,實現(xiàn)對外設(shè)的控制。 與標準外設(shè)有兩層隔離與標準外設(shè)有兩層隔離 : IO.SYS和和ROM BIOS。 其中其中21H類型的中斷子程類型的中斷子程 提供了豐富的系統(tǒng)服務(wù),提供了豐富的系統(tǒng)服務(wù), 稱稱21類型的中斷調(diào)用類型的中斷調(diào)用 為為DOS系統(tǒng)系統(tǒng)(功能功能)調(diào)用調(diào)用。 用戶程序用戶程序 磁盤管理模塊磁盤管理模塊(DOS內(nèi)核內(nèi)核) MSDOS.SYS 系統(tǒng)功能系統(tǒng)
6、功能 基本輸入基本輸入/輸出輸出 BIOS 模模 塊塊 IO.SYS 設(shè)備驅(qū)動設(shè)備驅(qū)動 ROM BIOS 基本基本I/O 系系 統(tǒng)統(tǒng) 硬硬 件件 裝裝 入入 命令處理模塊命令處理模塊 COMMAN D.COM 用戶命令用戶命令 l 用戶編程原則用戶編程原則 盡可能使用盡可能使用DOS的系統(tǒng)功能調(diào)用,的系統(tǒng)功能調(diào)用, 提高程序可移植性。提高程序可移植性。 在在DOS功能不能實現(xiàn)情況下,功能不能實現(xiàn)情況下, 考慮用考慮用BIOS功能調(diào)用。功能調(diào)用。 在在DOS和和BIOS的中斷子程的中斷子程 不能解決問題時不能解決問題時, 使用使用IN/OUT指令直接控制硬件。指令直接控制硬件。 用戶程序用戶程序
7、 磁盤管理模塊磁盤管理模塊(DOS內(nèi)核內(nèi)核) MSDOS.SYS 系統(tǒng)功能系統(tǒng)功能 基本輸入基本輸入/輸出輸出 BIOS 模模 塊塊 IO.SYS 設(shè)備驅(qū)動設(shè)備驅(qū)動 ROM BIOS 基本基本I/O 系系 統(tǒng)統(tǒng) 硬硬 件件 裝裝 入入 命令處理模塊命令處理模塊 COMMAN D.COM 用戶命令用戶命令 2. 中斷類型分類中斷類型分類 l 向量表中的中斷類型分為七類:向量表中的中斷類型分為七類: 處理處理CPU特殊操作特殊操作( 除除0、溢出、溢出 )的的00H、04H類型。類型。 為為DEBUG調(diào)試程序設(shè)置調(diào)試程序設(shè)置的單步的單步( 01H )、斷點、斷點( 03H )類型。類型。 處理處理
8、CPU的的NMI引腳信號引腳信號的的02H類型。類型。 非屏蔽硬中斷子程非屏蔽硬中斷子程 處理處理CPU的的INTR引腳信號引腳信號的的080FH類型。類型。 可屏蔽類型硬中斷子程可屏蔽類型硬中斷子程 用用INT指令調(diào)用的中斷子程指令調(diào)用的中斷子程 BIOS功能調(diào)用(如功能調(diào)用(如101AH) DOS功能調(diào)用功能調(diào)用 (如(如 21H) NMI INTR 8088 保留類型保留類型 為為DOS系統(tǒng)保留系統(tǒng)保留 1)指現(xiàn)在未用到,以后系統(tǒng)可能會用到。指現(xiàn)在未用到,以后系統(tǒng)可能會用到。 2)已用到,但不向用戶公開。已用到,但不向用戶公開。 為用戶保留為用戶保留 1)被系統(tǒng)子程嵌套調(diào)用了的類型被系統(tǒng)
9、子程嵌套調(diào)用了的類型 ( 如如1BH、1CH )。 使用戶在系統(tǒng)功能基礎(chǔ)上擴充功能。使用戶在系統(tǒng)功能基礎(chǔ)上擴充功能。 2)系統(tǒng)未占用類型系統(tǒng)未占用類型 ( 如如 60H67H )。 非中斷向量類型非中斷向量類型 對應(yīng)向量表中的對應(yīng)向量表中的4個單元存放的不是中斷向量。個單元存放的不是中斷向量。 (如(如1DH、1EH、1FH、41H、46H、22H) 通常是一些參數(shù)表的地址信息通常是一些參數(shù)表的地址信息. 類類型型號號中中斷斷功功能能名名稱稱模模 塊塊中中 斷斷 源源 00H除除零零錯錯誤誤BIOSCPU 內(nèi)內(nèi)部部操操作作 01H單單步步執(zhí)執(zhí)行行BIOSDEBUG 程程序序 02H非非屏屏蔽蔽
10、中中斷斷BIOS非非屏屏蔽蔽硬硬中中斷斷 03H斷斷點點設(shè)設(shè)置置BIOSDEBUG 程程序序 04H溢溢出出錯錯誤誤BIOSCPU 內(nèi)內(nèi)部部操操作作 05H屏屏幕幕打打印印BIOSINT 指指令令 06-07H保保留留 08H定定時時器器中中斷斷BIOS可可屏屏蔽蔽硬硬中中斷斷 09H鍵鍵盤盤中中斷斷BIOS可可屏屏蔽蔽硬硬中中斷斷 0AH保保留留BIOS可可屏屏蔽蔽硬硬中中斷斷 0BH串串行行通通信信中中斷斷BIOS可可屏屏蔽蔽硬硬中中斷斷 0CH保保留留BIOS可可屏屏蔽蔽硬硬中中斷斷 0DH硬硬盤盤中中斷斷BIOS可可屏屏蔽蔽硬硬中中斷斷 0EH軟軟盤盤中中斷斷BIOS可可屏屏蔽蔽硬硬中
11、中斷斷 0FH打打印印機機中中斷斷BIOS可可屏屏蔽蔽硬硬中中斷斷 l 中斷向量分配表中斷向量分配表 類類型型號號中中斷斷功功能能名名稱稱模模 塊塊中中 斷斷 源源 10H顯顯示示器器 I/OBIOSINT 指指令令 11H設(shè)設(shè)備備配配置置檢檢測測BIOSINT 指指令令 12H內(nèi)內(nèi)存存容容量量檢檢測測BIOSINT 指指令令 13H磁磁盤盤 I/OBIOSINT 指指令令 14H串串行行通通信信 I/OBIOSINT 指指令令 15H盒盒式式磁磁帶帶 I/OBIOSINT 指指令令 16H鍵鍵盤盤 I/OBIOSINT 指指令令 17H打打印印機機 I/OBIOSINT 指指令令 18HR
12、RO OM M B BA AS SI IC C 入入口口BIOSINT 指指令令 19H系系統(tǒng)統(tǒng)檢檢測測程程序序BIOSINT 指指令令 1AH日日時時鐘鐘 I/OBIOSINT 指指令令 1BH用用戶戶 Ctrl-BreakBIOSINT 指指令令 1CH用用戶戶定定時時器器BIOSINT 指指令令 1DH顯顯示示器器參參數(shù)數(shù)表表BIOS非非中中斷斷向向量量 1EH軟軟盤盤參參數(shù)數(shù)表表BIOS非非中中斷斷向向量量 1FH圖圖形形顯顯示示字字符符表表BIOS非非中中斷斷向向量量 類類型型號號中中斷斷功功能能名名稱稱模模 塊塊中中 斷斷 源源 20H程程序序結(jié)結(jié)束束返返回回系系統(tǒng)統(tǒng)DOSINT
13、指指令令 21H系系統(tǒng)統(tǒng)功功能能調(diào)調(diào)用用DOSINT 指指令令 22H程程序序結(jié)結(jié)束束地地址址DOS非非中中斷斷向向量量 23HCtrl-Break 處處理理DOSINT 指指令令 24H嚴嚴重重錯錯誤誤處處理理DOSINT 指指令令 25H按按扇扇區(qū)區(qū)讀讀磁磁盤盤DOSINT 指指令令 26H按按扇扇區(qū)區(qū)寫寫磁磁盤盤DOSINT 指指令令 27H程程序序結(jié)結(jié)束束駐駐留留內(nèi)內(nèi)存存DOSINT 指指令令 28-3FH保保留留 40H軟軟盤盤 I/OBIOSINT 指指令令 41,46H硬硬盤盤參參數(shù)數(shù)表表 1,2BIOS非非中中斷斷向向量量 42-5FH保保留留 60-67H為為用用戶戶保保留留
14、INT 指指令令 68-7FH保保留留 80-F0HBASIC 使使用用BIOSINT 指指令令 F1-FFH保保留留 3. 調(diào)用方法調(diào)用方法 設(shè)置入口參數(shù)設(shè)置入口參數(shù) 在在AH設(shè)置功能號設(shè)置功能號m 執(zhí)行中斷指令執(zhí)行中斷指令I(lǐng)NT N 分析、應(yīng)用出口參數(shù)分析、應(yīng)用出口參數(shù) 例例1 單字符顯示功能調(diào)用單字符顯示功能調(diào)用 MOV DL, A ;設(shè)置入口參數(shù);設(shè)置入口參數(shù) MOV AH, 02H ;設(shè)置功能號;設(shè)置功能號 INT 21H ;執(zhí)行中斷調(diào)用;執(zhí)行中斷調(diào)用 例例2 單字符輸入功能調(diào)用單字符輸入功能調(diào)用 MOV AH, 01H ;設(shè)置功能號;設(shè)置功能號 INT 21H ;執(zhí)行中斷調(diào)用;執(zhí)行
15、中斷調(diào)用 CMP AL, 0DH ;分析、應(yīng)用出口參數(shù);分析、應(yīng)用出口參數(shù) JZ exit 、 二、二、BIOS功能調(diào)用功能調(diào)用 l 基本輸入基本輸入/輸出模塊輸出模塊BIOS: 實現(xiàn)對輸入實現(xiàn)對輸入/輸出設(shè)備的控制,輸出設(shè)備的控制, 內(nèi)含內(nèi)含0 1CH 等類型中斷子程,等類型中斷子程, 包括顯示器、磁盤、鍵盤、打印機等標準外設(shè)的驅(qū)動程序。包括顯示器、磁盤、鍵盤、打印機等標準外設(shè)的驅(qū)動程序。 (參看中斷類型分配表)(參看中斷類型分配表) l BIOS功能調(diào)用指對功能調(diào)用指對BIOS模塊中的中斷子程的調(diào)用。模塊中的中斷子程的調(diào)用。 l 有關(guān)顯示器有關(guān)顯示器 顯示器通過顯卡顯示器通過顯卡(顯示適配
16、器顯示適配器)連接到計算機上。連接到計算機上。 單色顯示器只能顯示黑白兩色。單色顯示器只能顯示黑白兩色。 彩色顯示器能顯示多種顏色。彩色顯示器能顯示多種顏色。 屏幕上各象素的顯示信息,存放在顯示緩沖區(qū)(顯存)中。屏幕上各象素的顯示信息,存放在顯示緩沖區(qū)(顯存)中。 640KB RAM 基本內(nèi)存基本內(nèi)存 0000:0000 0040:0000 0050:0000 0070:0000 A000:0000 B000:0000 C800:0000 F600:0000 FE00:0000 FE00:1FFF 顯示緩存區(qū)顯示緩存區(qū)( ( 顯存顯存) ) 硬盤驅(qū)動器控制硬盤驅(qū)動器控制ROM 32KB ROM
17、 BASIC 8KB ROM BIOS IO.SYS模塊模塊 COMMAND.COM常駐模塊常駐模塊 MSDOS.SYS模塊模塊 用戶程序空間用戶程序空間 COMMAND.COM暫駐模塊暫駐模塊 256KB ROM DOS工作區(qū)工作區(qū) ROM BIOS工作區(qū)工作區(qū) 128KB RAM 保留區(qū)保留區(qū) 1KB中斷向量表中斷向量表 顯示器有兩種顯示方式顯示器有兩種顯示方式: 圖形方式圖形方式: 將屏幕劃分為將屏幕劃分為 mn的點陣,在每個點的位置顯示象素的點陣,在每個點的位置顯示象素, 一個點是一個象素一個點是一個象素。 文本方式文本方式 將屏幕劃分為若干行和列,在每個網(wǎng)格位置上顯示象素,將屏幕劃分
18、為若干行和列,在每個網(wǎng)格位置上顯示象素, 一個字符是一個象素一個字符是一個象素。 文本方式文本方式 將屏幕劃分為將屏幕劃分為 m列和列和n行行 (m n),在每個網(wǎng)格位置上顯示象素,在每個網(wǎng)格位置上顯示象素, 一個字符是一個象素。一個字符是一個象素。 8025 文本方式文本方式 A 0 列列 0 行 行 79 列列 24行 行 BC 640480 圖形方式圖形方式 640 點點 480點點 圖形方式圖形方式: 將屏幕劃分為將屏幕劃分為 mn的點陣,在每個點的位置顯示象素的點陣,在每個點的位置顯示象素, 一個點是一個象素一個點是一個象素。 在文本方式下,在文本方式下, 對應(yīng)屏幕上的對應(yīng)屏幕上的每
19、個字符每個字符, 在顯示緩沖區(qū)中占用兩個單元在顯示緩沖區(qū)中占用兩個單元: 一個存放一個存放ASCII碼,碼, 一個存放顯示屬性。一個存放顯示屬性。 41H 07H 42H 07H 61H 70H 62H 70H 、顯示緩沖區(qū)顯示緩沖區(qū) (顯存)(顯存) 字符字符A, 黑底白字黑底白字 字符字符B, 黑底白字黑底白字 字符字符a, 白底黑字白底黑字 字符字符b, 白底黑字白底黑字 例例 10000111B 或或 87H 表示黑底白字,閃爍表示黑底白字,閃爍 01110000B 或或70H 表示白底黑字,不閃爍表示白底黑字,不閃爍 1616種種 0000 黑黑 1000 灰灰 0010 綠綠 10
20、10 淺綠淺綠 0100 紅紅 1100 淺紅淺紅 0111 灰白灰白 1111 白白 BL R G BIR G B 閃爍閃爍 背景背景前景前景 76543210 8種種 000 黑黑 010 綠綠 100 紅紅 111 白白 0 不閃爍不閃爍 1 閃爍閃爍 屬性字節(jié)的含義:屬性字節(jié)的含義: 據(jù)顯存大小,可存儲若干頁的字符象素。據(jù)顯存大小,可存儲若干頁的字符象素。 例例 16KB 顯存能存儲顯存能存儲: 8025方式,方式,4頁頁( 0 3 ), 802524 =16000 4025方式,方式,8頁頁( 0 7 ), 402528 =16000 1設(shè)置顯示方式設(shè)置顯示方式 入口參數(shù)入口參數(shù) A
21、L = 顯示方式值顯示方式值 00 4025 黑白文本方式黑白文本方式 01 4025 彩色文本方式彩色文本方式 02 8025 黑白文本方式黑白文本方式 03 8025 彩色文本方式彩色文本方式 04 320320 彩色圖形方式彩色圖形方式 功能號功能號 AH = 00H 類型號類型號 10H 出口參數(shù)出口參數(shù) 無無 實現(xiàn)功能實現(xiàn)功能 將顯示方式設(shè)置為指定形式將顯示方式設(shè)置為指定形式 例例 將顯示方式設(shè)置為將顯示方式設(shè)置為 8025 彩色文本方式彩色文本方式 MOV AL, 03H MOV AH, 00 INT 10H 2. 清屏、清窗口功能清屏、清窗口功能 入口參數(shù)入口參數(shù) AL = 0
22、CH = 窗口左上角行號窗口左上角行號 CL = 、 列號列號 DH = 窗口右下角行號窗口右下角行號 DL = 、 列號列號 BH = 窗口屬性窗口屬性 功能號功能號 AH = 06H 或或 AH = 07H 類型號類型號 10H 出口參數(shù)出口參數(shù) 無無 實現(xiàn)功能實現(xiàn)功能 按給定屬性清除指定的窗口內(nèi)容按給定屬性清除指定的窗口內(nèi)容 例例 清除屏幕顯示,將其屬性置為反白(白底黑字)顯示。清除屏幕顯示,將其屬性置為反白(白底黑字)顯示。 MOV AL, 0 ;清屏功能清屏功能 MOV BH, 70H ;白底黑字白底黑字 MOV CH, 0 ;左上角左上角 行號行號 MOV CL, 0 ; 列號列號
23、 MOV DH, 24 ;右下角右下角 行號行號 MOV DL, 79 ; 列號列號 MOV AH, 6 ;功能號功能號 INT 10H ;中斷調(diào)用中斷調(diào)用 3. 置光標位置置光標位置 l 光標控制開始顯示的位置,光標控制開始顯示的位置, 計算機有專門的硬件控制光標的顯示大小、位置。計算機有專門的硬件控制光標的顯示大小、位置。 l 光標只在文本方式中出現(xiàn),在圖形方式下光標消失。光標只在文本方式中出現(xiàn),在圖形方式下光標消失。 0 列列 0 行 行 79 列列 24 行 行 5 列列 1 列列 1 行 行 2 行 行 置光標位置置光標位置 入口參數(shù)入口參數(shù) DH = 行號行號 DL = 列號列號
24、BH = 頁號頁號 功能號功能號 AH= 02H 類型號類型號 10H 出口參數(shù)出口參數(shù) 無無 實現(xiàn)功能實現(xiàn)功能 將光標設(shè)置在指定的位置將光標設(shè)置在指定的位置 例例 將光標設(shè)置在將光標設(shè)置在2行行5列列的位置的位置 MOV DH, 2 MOV DL, 5 MOV BH, 0 MOV AH, 2 INT 10H 0 列列 0 行 行 79 列列 24行 行 5 列列 1 列列 1 行 行 2 行 行 三、三、DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 (21H類型中斷調(diào)用類型中斷調(diào)用) 1顯示單字符顯示單字符 ( 02H功能功能 ) 2顯示字符串顯示字符串 ( 09H功能功能 ) 3單字符輸入單字符輸入 (
25、 01H、07H、08H功能功能 ) 4字符串輸入字符串輸入 ( 0AH功能功能 ) 5檢測鍵盤狀態(tài)檢測鍵盤狀態(tài) ( 0BH功能功能 ) 6保存中斷向量保存中斷向量 ( 35H功能功能 ) (第六章介紹第六章介紹) 7設(shè)置中斷向量設(shè)置中斷向量 ( 25H功能功能 ) 1. 顯示單字符顯示單字符 ( 02H功能功能 ) 入口參數(shù)入口參數(shù) DL = 要顯示字符的要顯示字符的ASCII 碼碼 功能號功能號 AH=02H 類型號類型號 INT 21H 出口參數(shù)出口參數(shù) 無無 實現(xiàn)功能實現(xiàn)功能 顯示指定字符顯示指定字符,光標隨動。光標隨動。 例例 顯示字符顯示字符A MOV DL, A MOV AH,
26、02H INT 21H 例例 使光標回到下一行的行首。使光標回到下一行的行首。 MOV DL , 0DH ;顯示回車符顯示回車符 MOV AH , 02H INT 21H MOV DL , 0AH ;顯示換行符顯示換行符 MOV AH , 02H INT 21H H e l l o W o r l d 2. 顯示字符串顯示字符串 ( 09H功能功能 ) 入口參數(shù)入口參數(shù) 定義要顯示的字符串,定義要顯示的字符串, 字符串尾應(yīng)為字符串尾應(yīng)為$,作為結(jié)束顯示的標志。,作為結(jié)束顯示的標志。 DS : DX = 字符串的首地址字符串的首地址 功能號功能號 AH = 09 H 類型號類型號 21H 出口參
27、數(shù)出口參數(shù) 無無 實現(xiàn)功能實現(xiàn)功能 顯示字符串,遇顯示字符串,遇 $ 停止顯示,光標隨動停止顯示,光標隨動。 例例 編程顯示字符串編程顯示字符串 Tsinghua University data SEGMENT ;定義顯示的子符串定義顯示的子符串 stri DB Tsinghua University, $ data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;調(diào)顯示功能調(diào)顯示功能 INT 21H M
28、OV AH, 4CH ;返回返回DOS INT 21H code ENDS END start l 有關(guān)鍵盤有關(guān)鍵盤 鍵盤通過鍵盤接口電路與計算機連接。鍵盤通過鍵盤接口電路與計算機連接。 鍵盤上的鍵有三種類型鍵盤上的鍵有三種類型: 字符鍵字符鍵 AZ, 09等等 功能鍵功能鍵 F1F12, Page Up等等 組合控制鍵組合控制鍵 Shift, Ctrl, Alt等等 鍵盤上的每個鍵都有一個鍵盤上的每個鍵都有一個掃描碼掃描碼。 據(jù)掃描碼可確定操作的是哪個鍵、是按下鍵還是釋放鍵;據(jù)掃描碼可確定操作的是哪個鍵、是按下鍵還是釋放鍵; 掃描碼用一個字節(jié)表示。掃描碼用一個字節(jié)表示。 低低7位是掃描碼的數(shù)
29、字編碼位是掃描碼的數(shù)字編碼, 與鍵盤上的鍵一一對應(yīng);與鍵盤上的鍵一一對應(yīng); 最高位最高位D7位表示鍵的操作狀態(tài):位表示鍵的操作狀態(tài): 當當按下鍵時按下鍵時, D7=0 ; 當當釋放鍵時釋放鍵時, D7=1 鍵盤中斷子程功能(鍵盤中斷子程功能(09H類型中斷子程)類型中斷子程) 從鍵盤接口讀取操作鍵的掃描碼從鍵盤接口讀取操作鍵的掃描碼; 將掃描碼轉(zhuǎn)換成字符碼;將掃描碼轉(zhuǎn)換成字符碼; 大部分鍵的字符碼為大部分鍵的字符碼為ASCII碼,碼, 無無ASCII碼鍵(如組合鍵碼鍵(如組合鍵Shift、Ctrl等)的字符碼為等)的字符碼為0。 將鍵的掃描碼、字符碼存放在鍵盤緩沖區(qū)將鍵的掃描碼、字符碼存放在鍵
30、盤緩沖區(qū), 供其它有關(guān)鍵盤的中斷子程應(yīng)用。供其它有關(guān)鍵盤的中斷子程應(yīng)用。 鍵盤接口對按下鍵和釋放鍵均向計算機發(fā)出中斷申請鍵盤接口對按下鍵和釋放鍵均向計算機發(fā)出中斷申請, 如果如果中斷響應(yīng)條件滿足中斷響應(yīng)條件滿足, CPU轉(zhuǎn)去執(zhí)行鍵盤中斷子程。轉(zhuǎn)去執(zhí)行鍵盤中斷子程。 鍵盤中斷子程類型號為鍵盤中斷子程類型號為09H。 3. 單字符輸入單字符輸入 ( 01H、07H、08H功能功能) 入口參數(shù)入口參數(shù) 無無 功能號功能號 AH = 01H 類型號類型號 21H 出口參數(shù)出口參數(shù) AL = 鍵入字符的鍵入字符的ASCII碼碼 實現(xiàn)功能實現(xiàn)功能 等待從鍵盤輸入一個字符等待從鍵盤輸入一個字符, 并在屏幕上
31、回顯,光標移動并在屏幕上回顯,光標移動, 檢測檢測Ctrl-Break鍵鍵 例例 利用鍵盤輸入的字符產(chǎn)生分支:利用鍵盤輸入的字符產(chǎn)生分支: MOV AH, 1 ;等待從鍵盤輸入等待從鍵盤輸入 INT 21H CMP AL, Y ;是是Y? JZ yes CMP AL, y ;是是y? JZ yes no: . . . . . . JMP exit yes: . . . . . . exit: . . . 例例 在中斷向量表中在中斷向量表中查找從鍵盤輸入的字符查找從鍵盤輸入的字符, 并將其個數(shù)用二進制形式顯示出來。并將其個數(shù)用二進制形式顯示出來。( scanskey.asm) code SEGM
32、ENT ;代碼段開始代碼段開始 ASSUME CS:code begin: MOV AX, 0000H ;設(shè)置查找首地址設(shè)置查找首地址 MOV DS, AX MOV SI,0000H MOV CX,0400H ;設(shè)置查找長度設(shè)置查找長度 MOV BX,0 ;計算值初值計算值初值 MOV AH,01H ;從鍵盤輸入從鍵盤輸入 INT 21H ;輸入關(guān)鍵字輸入關(guān)鍵字 MOV DL,AL ;保存在保存在DL中中 next: LODSB ;從串取從串取 CMP AL, DL ;與關(guān)鍵字比較與關(guān)鍵字比較 JNZ point INC BX ;計算值加計算值加1 point: LOOP next ;查找結(jié)束
33、?查找結(jié)束? CALL display ;調(diào)用顯示子程調(diào)用顯示子程 MOV AH,4CH ;調(diào)用調(diào)用4CH功能功能 INT 21H ;返回返回DOS ;用二進制顯示用二進制顯示BX內(nèi)容子程內(nèi)容子程 display PROC MOV CX, 16 ;顯示位數(shù)顯示位數(shù) rotate: ROL BX, 1 MOV DL, BL AND DL, 01H ADD DL, 30H MOV AH, 2H INT 21H LOOP rotate RET ;子程返回子程返回 display ENDP code ENDS ;代碼段結(jié)束代碼段結(jié)束 END begin 入口參數(shù)入口參數(shù) 無無 功能號功能號 AH =
34、07H 類型號類型號 21H 出口參數(shù)出口參數(shù) AL = 鍵入字符的鍵入字符的ASCII碼碼 實現(xiàn)功能實現(xiàn)功能 等待從鍵盤輸入一個字符等待從鍵盤輸入一個字符, 不在屏幕上回顯,不在屏幕上回顯, 不檢測不檢測Ctrl-Break鍵鍵 例例 用不帶回顯功能輸入密碼時:用不帶回顯功能輸入密碼時: input: MOV AH, 07H ;等待從鍵盤輸入等待從鍵盤輸入 INT 21H MOV DI, AL ;存入緩沖區(qū)存入緩沖區(qū) CMP AL, 0DH ;是回車符?是回車符? JNZ input ;不是,繼續(xù)輸入不是,繼續(xù)輸入 check: 、 、 4. 字符串輸入字符串輸入 ( 0AH 功能功能 )
35、入口參數(shù)入口參數(shù) DS : DX = 緩沖區(qū)的首地址緩沖區(qū)的首地址 ( DS :DX ) = 限制最多輸入的字符數(shù)限制最多輸入的字符數(shù) 功能號功能號 AH = 0AH 類型號類型號 21H 出口參數(shù)出口參數(shù) ( DS : DX+1 ) = 實際鍵入的字符實際鍵入的字符(不含回車符不含回車符) 從從( DS : DX+2 )開始順序存放鍵入的字符串,開始順序存放鍵入的字符串, 回車符回車符0DH為串尾最后一字符。為串尾最后一字符。 實現(xiàn)功能實現(xiàn)功能 等待從鍵盤輸入字符串,并存入設(shè)定的緩沖區(qū)內(nèi),等待從鍵盤輸入字符串,并存入設(shè)定的緩沖區(qū)內(nèi), 同時回顯字符串,光標隨著移動,同時回顯字符串,光標隨著移動
36、, 回車符使光標回到行首?;剀嚪构鈽嘶氐叫惺?。 注意事項:注意事項:應(yīng)按要求先定義緩沖區(qū),再調(diào)用。應(yīng)按要求先定義緩沖區(qū),再調(diào)用。 例例 應(yīng)用應(yīng)用0AH功能輸入字符串。功能輸入字符串。 data SEGMENT ;定義緩沖區(qū)定義緩沖區(qū) max DB 11 ;定義限制最多輸入個數(shù)定義限制最多輸入個數(shù) lenth DB ? ;用于存放實際輸入個數(shù)用于存放實際輸入個數(shù) stri DB 11 DUP(?) ;用于存放輸入的字符串用于存放輸入的字符串 data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX , data ;置緩沖區(qū)地址于置
37、緩沖區(qū)地址于DS:DX MOV DS , AX LEA DX , max MOV AH , 0AH INT 21H ;調(diào)調(diào)0A輸入功能輸入功能 MOX CH , 0 MOV CL , lenth ;取字符串長度放取字符串長度放CX中中 LEA BX , stri ;取字符串首址于取字符串首址于BX中中 MOV AL , BX ;應(yīng)用輸入字符應(yīng)用輸入字符 、 code ENDS data SEGMENT ;定義緩沖區(qū)定義緩沖區(qū) max DB 11 ;定義限制最多輸入個數(shù)定義限制最多輸入個數(shù) lenth DB ? ;用于存放實際輸入個數(shù)用于存放實際輸入個數(shù) stri DB 11 DUP(?) ;用
38、于存放輸入的字符串用于存放輸入的字符串 data ENDS 從鍵盤輸入從鍵盤輸入ABCD, 回車,內(nèi)存的存放結(jié)果回車,內(nèi)存的存放結(jié)果: 0B 04 41 42 43 44 0D 00 max 07 00 00 00 00 00 00 00 00 80a 0b0f12345690c 0d 0e lenth stri 地址地址 內(nèi)容內(nèi)容 DS:DX 如下編程與上例相同如下編程與上例相同: : data SEGMENT max DB 11 等價于:等價于: DB ? max DB 11, ?, 11 DUP(?) DB 11 DUP(?) data ENDS code SEGMENT ASSUME
39、CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能調(diào)輸入功能 INT 21H MOX CH, 0 MOV CL, max+1 ;取字符串長度放取字符串長度放CX中中 LEA BX, max+2 ;取字符串首址于取字符串首址于BX中中 MOV AL, BX ;應(yīng)用輸入字符應(yīng)用輸入字符 、 code ENDS data SEGMENT max DB 11 DB ? DB 11 DUP(?) data ENDS 從鍵盤輸入從鍵盤輸入ABCD, 回車,內(nèi)存
40、的存放結(jié)果回車,內(nèi)存的存放結(jié)果: 等價于等價于 max DB 11,?,?,11 DUP(?) 0B 04 41 42 43 44 0D 00 max 07 00 00 00 00 00 00 00 00 80a 0b0f12345690c 0d 0e地址地址 內(nèi)容內(nèi)容 DS:DX 0AH功能執(zhí)行過程功能執(zhí)行過程: 若若(DS:DX)字節(jié)單元的值為字節(jié)單元的值為0,則不等待從鍵盤輸入,結(jié)束調(diào)用。,則不等待從鍵盤輸入,結(jié)束調(diào)用。 若若(DS:DX) 字節(jié)單元的內(nèi)容大于字節(jié)單元的內(nèi)容大于0,則等待從鍵盤輸入,則等待從鍵盤輸入, 并把輸入鍵的并把輸入鍵的ASCII碼順序存放在碼順序存放在DS : D
41、X+2開始的單元,開始的單元, 按回車鍵表示結(jié)束輸入。按回車鍵表示結(jié)束輸入。 當按下鍵的個數(shù)超過當按下鍵的個數(shù)超過( DS : DX )中值,發(fā)出警告聲中值,發(fā)出警告聲 嘟嘟嘟嘟 , 不再接收輸入的數(shù)據(jù)不再接收輸入的數(shù)據(jù), 直到輸入回車鍵。直到輸入回車鍵。 將實際輸入的字符個數(shù)將實際輸入的字符個數(shù)(不包括回車鍵不包括回車鍵)填入填入(DS:DX+1), 結(jié)束調(diào)用。結(jié)束調(diào)用。 DS:DX 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AH功能注意事項功能注意事項: 輸入的字符均帶回顯,且光標隨字符移動。輸入的字符均帶回顯,且光標隨字符移動。 當
42、輸入回車符結(jié)束時,也回顯回車符。當輸入回車符結(jié)束時,也回顯回車符。 表現(xiàn)為功能調(diào)用結(jié)束后,光標回到了行首。表現(xiàn)為功能調(diào)用結(jié)束后,光標回到了行首。 回車符回車符0DH作為一個輸入的字符存放在字符串尾,作為一個輸入的字符存放在字符串尾, 但計數(shù)輸入個數(shù)時,不包括回車鍵。但計數(shù)輸入個數(shù)時,不包括回車鍵。 實際最多能輸入的字符數(shù)實際最多能輸入的字符數(shù) = 限制的最多數(shù)限制的最多數(shù)- -1 (回車符占一個)(回車符占一個) 執(zhí)行完執(zhí)行完0AH功能后,功能后,DS和和DX的值不變,的值不變, DS:DX仍指向緩沖區(qū)的首地址。仍指向緩沖區(qū)的首地址。 整個緩沖區(qū)的大小應(yīng)為整個緩沖區(qū)的大小應(yīng)為:限制的最多數(shù)限制
43、的最多數(shù) +2 max DB 11, ? , 11 dup (?) 例例 利用利用DEBUG查看查看0A功能輸入結(jié)果功能輸入結(jié)果。 data SEGMENT max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能調(diào)輸入功能 INT 21H MOV CH, 0 MOV CL, max+1 ;取輸入長度到取輸入長度到CX中中 MOV AH, 4CH
44、;返回返回DOS INT 21H code ENDS END start D:MASMDEBUG TEST0a.exe ;裝入執(zhí)行文件裝入執(zhí)行文件 -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 B
45、44C MOV AH , 4C 129E:0015 CD21 INT 21 、 -D 129D:0 L10 ;查看程序執(zhí)行查看程序執(zhí)行前前緩沖區(qū)內(nèi)容緩沖區(qū)內(nèi)容 129D:0000 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 . -G 000D ;執(zhí)行程序執(zhí)行程序 Hello ;從鍵盤輸入字符串從鍵盤輸入字符串 Program terminated normally -D 129D:0 L10 ;查看程序執(zhí)行查看程序執(zhí)行后后緩沖區(qū)內(nèi)容緩沖區(qū)內(nèi)容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 0
46、0 00 00 .Hello. - 思考:思考: 1. 若將程序改為如下形式,若將程序改為如下形式, 設(shè)想程序執(zhí)行的結(jié)果。設(shè)想程序執(zhí)行的結(jié)果。 data SEGMENT max DB 100H DUP ( ? ) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能調(diào)輸入功能 INT 21H MOV AH, 4CH ;返回返回DOS INT 21H code ENDS END start 結(jié)
47、果是:結(jié)果是:不等待輸入,結(jié)束不等待輸入,結(jié)束0AH功能調(diào)用。功能調(diào)用。 00 00 0000 00 00 00 00 max 07 00 00 00 00 00 00 00 00 80a0b0f12345690c 0d 0e地址地址 內(nèi)容內(nèi)容 DS:DX 注意:注意:由于由于DS:DX限制輸入最大字符數(shù)為限制輸入最大字符數(shù)為0, 所以不等待輸入所以不等待輸入, 結(jié)束結(jié)束0AH功能調(diào)用。功能調(diào)用。 原因是:原因是: 2. 若將程序改為如下形式,若將程序改為如下形式, 設(shè)想程序執(zhí)行的結(jié)果。設(shè)想程序執(zhí)行的結(jié)果。 data SEGMENT max DW 100H,? ,100H DUP ( ? )
48、;定義為字類型定義為字類型 data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;調(diào)輸入功能調(diào)輸入功能 INT 21H MOV AH, 4CH ;返回返回DOS INT 21H code ENDS END start 結(jié)果是:結(jié)果是:不等待輸入,結(jié)束不等待輸入,結(jié)束0AH功能調(diào)用。功能調(diào)用。 00 01 0000 00 00 00 00 max 07 00 00 00 00 00 00 00 00 80
49、a0b0f12345690c 0d 0e地址地址 內(nèi)容內(nèi)容 DS:DX 注意:注意:0AH功能以功能以字節(jié)類型應(yīng)用字節(jié)類型應(yīng)用DS:DX指向的緩沖區(qū)指向的緩沖區(qū)。 并不隨緩沖區(qū)類型定義的變化而變化。并不隨緩沖區(qū)類型定義的變化而變化。 原因是:原因是: 例例 編程從鍵盤輸入字符串,給出顯示提示編程從鍵盤輸入字符串,給出顯示提示Please input: data SEGMENT stri DB Please Input :,$ max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX,
50、 data ;置緩沖區(qū)地址于置緩沖區(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 利用利用DOS 功能調(diào)用,編寫小程序功能調(diào)用,編寫小程序 D:MASMDEBUG e0a09.exe -U ;查看程序查看程序 129F:0000 B89D12 MOV AX,129D 129F:0003 8ED8 MOV DS,AX 129F:0005 8D1
51、60000 LEA DX ,0000 129F:0009 B409 MOV AH ,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í)行程序前查看執(zhí)行程序前查看 data段內(nèi)容段內(nèi)容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Plea
52、se Input :$. 129D:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 . -G ;執(zhí)行程序執(zhí)行程序 Please Input :Hello! Program terminated normally -D 129 D:0 L20 ;執(zhí)行程序后查看執(zhí)行程序后查看 datadata段內(nèi)容段內(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 0
53、0 00 00 00 00 .Hello!. - data段內(nèi)存情況:段內(nèi)存情況: stri Please Input:$ 0B 06 Hello!0D 00 00 00 00 00 00 00 00 max 思考:思考:程序中少了一個程序中少了一個 $ 符的后果。符的后果。 data SEGMENT stri DB Please Input : max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置緩沖區(qū)地址于置緩沖區(qū)地址于DS:DX MOV DS, AX LE
54、A DX, stri MOV AH, 09H ;顯示提示顯示提示 INT 21H LEA DX, max ;等待從鍵盤輸入等待從鍵盤輸入 MOV AH, 0AH INT 21H MOV AH, 4CH INT 21H code ENDS END start data SEGMENT stri DB Please Input : max DB 11, ?, 11 DUP(?) data ENDS stri Please Input:0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 max B8 A8 12 8E D8 8D 16 00 00 B4 09 CD 21 8D 16 0E start 注意:注意:09H功能只在遇到功能只在遇到$符才結(jié)束顯示符才結(jié)束顯示。 5檢測鍵盤狀態(tài)檢測鍵盤狀態(tài) ( 0BH功能功能 ) 入口參數(shù)入口參數(shù) 無無 功能號功能號 AH= 0BH 類型號類型號 21H 出口參數(shù)出口參數(shù) AL= FFH , 表示有鍵按下。表示有鍵按下。 AL= 0 , 表示無鍵按下。表示無鍵按下。 實現(xiàn)功能實現(xiàn)功能 檢測鍵盤狀態(tài)檢測鍵盤狀態(tài)(通過檢測鍵盤緩沖區(qū)實現(xiàn)通過檢測鍵盤緩沖
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村合作社與農(nóng)戶聯(lián)合開發(fā)農(nóng)業(yè)技術(shù)項目協(xié)議
- 通信技術(shù)與信號處理練習(xí)題
- 技術(shù)標準制定合作協(xié)議
- 數(shù)學(xué)課本九章算術(shù)教案
- 教育資源分布報告表
- 西廂記的愛情悲劇征文
- 中學(xué)生國學(xué)經(jīng)典故事解讀
- 農(nóng)業(yè)旅游開發(fā)實施方案
- 數(shù)據(jù)安全與隱私保護服務(wù)協(xié)議約定事項
- 業(yè)務(wù)往來預(yù)付款協(xié)議書
- 法律服務(wù)方案(投標)
- 轉(zhuǎn)移的危險廢物性狀清單
- 高中英語-新外研版必修一unit5-The-Monarchs-Journey-公開課reading課件
- 建設(shè)項目用地預(yù)審與選址意見課件講解
- 四年級公共安全教育全冊教案(海峽教育出版社)
- 工程結(jié)構(gòu)通用規(guī)范
- 《構(gòu)成基礎(chǔ)》PPT課件(190頁PPT)
- 四年級道德與法治從中國制造到中國創(chuàng)造
- HONEYWELLDCS操作手冊
- 2021-2022新教科版四年級科學(xué)下冊全一冊全部課件(共24課)
- 3 棄渣場施工方案
評論
0/150
提交評論