




已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
匯編語言 課件 王爽著 清華大學(xué)出版社 制作工具 MicrosoftPowerPoint2003 本課件由匯編網(wǎng) 制作提供 第17章使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫 17 1int9中斷例程對鍵盤輸入的處理17 2使用int16h中斷例程讀取鍵盤緩沖區(qū)17 3字符串的輸入17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 引言 大多數(shù)有用的程序都需要處理用戶的輸入 鍵盤輸入是最基本的輸入 程序和數(shù)據(jù)通常需要長期存儲 磁盤是最常用的存儲設(shè)備 BIOS為這兩種外設(shè)的I O提供了最基本的中斷例程 在本章中 我們對它們的應(yīng)用和相關(guān)的問題進(jìn)行討論 17 1int9中斷例程對鍵盤輸入的處理 我們已經(jīng)講過 鍵盤輸入將引發(fā)9號中斷 BIOS提供了int9中斷例程 CPU在9號中斷發(fā)生后 執(zhí)行int9中斷例程 從60h端口讀出掃描碼 并將其轉(zhuǎn)化為相應(yīng)的ASCII碼或狀態(tài)信息 存儲在內(nèi)存的指定空間 鍵盤緩沖區(qū)或狀態(tài)字節(jié) 中 17 1int9中斷例程對鍵盤輸入的處理 一般的鍵盤輸入 在CPU執(zhí)行完int9中斷例程后 都放到了鍵盤緩沖區(qū)中 鍵盤緩沖區(qū)中有16個字單元 可以存儲15個按鍵的掃描碼和對應(yīng)的入ASCII碼 17 1int9中斷例程對鍵盤輸入的處理 下面我們按照鍵盤緩沖區(qū)的邏輯結(jié)構(gòu) 來看一下鍵盤輸入的掃描碼和對應(yīng)ASCII碼是如何寫入鍵盤緩沖區(qū)的 注意 17 1int9中斷例程對鍵盤輸入的處理 注意 在我們的課程中 僅在邏輯結(jié)構(gòu)的基礎(chǔ)上 討論BIOS鍵盤緩沖區(qū)的讀寫問題 其實鍵盤緩沖區(qū)是用環(huán)形隊列結(jié)構(gòu)管理的內(nèi)存區(qū) 但我們不對隊列和環(huán)形隊列的實現(xiàn)進(jìn)行討論 因為那是另一門專業(yè)課 數(shù)據(jù)結(jié)構(gòu) 的內(nèi)容 17 1int9中斷例程對鍵盤輸入的處理 下面 我們通過下面幾個鍵 A B C D E shift A A的輸入過程 簡要地看一下int9中斷例程對鍵盤輸入的處理方法 處理鍵盤輸入演示 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) BIOS提供了int16h中斷例程供程序員調(diào)用 int16h中斷例程中包含的一個最重要的功能是從鍵盤緩沖區(qū)中讀取一個鍵盤輸入 該功能的編號為0 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) 下面的指令從鍵盤緩沖區(qū)中讀取一個鍵盤輸入 并且將其從緩沖區(qū)中刪除 movah 0int16h結(jié)果 ah 掃描碼 al ASCII碼 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) 下面 我們接著上一節(jié)中的鍵盤輸入過程 看一下int16h如何讀取鍵盤緩沖區(qū) int16h讀鍵盤緩沖區(qū)演示 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) 從上面我們可以看出 int16h中斷例程的0號功能 進(jìn)行如下的工作 1 檢測鍵盤緩沖區(qū)中是否有數(shù)據(jù) 2 沒有則繼續(xù)做第1步 3 讀取緩沖區(qū)第一個字單元中的鍵盤輸入 4 將讀取的掃描碼送入ah ASCII碼送入al 5 將己讀取的鍵盤輸入從緩沖區(qū)中刪除 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) 可見 B1OS的int9中斷例程和int16h中斷例程是一對相互配合的程序 int9中斷例程向鍵盤緩沖區(qū)中寫入 int16h中斷例程從緩沖區(qū)中讀出 它們寫入和讀出的時機(jī)不同 int9中斷例程在有鍵按下的時候向鍵盤緩沖區(qū)中寫入數(shù)據(jù) 而int16h中斷例程是在應(yīng)用程序?qū)ζ溥M(jìn)行調(diào)用的時候 將數(shù)據(jù)從鍵盤緩沖區(qū)中讀出 17 2使用int16h中斷例程讀取鍵盤緩沖區(qū) 我們在編寫一般的處理鍵盤輸入的程序的時候 可以調(diào)用int16h從鍵盤緩沖區(qū)中讀取鍵盤的輸入 編程 接收用戶的鍵盤輸入 輸入 r 將屏幕上的字符設(shè)置為紅色 輸入 g 將屏幕上的字符設(shè)置為綠色 輸入 b 將屏幕上的字符設(shè)置為藍(lán)色 程序源碼 特別提示 檢測點17 1 page294 沒有通過此檢測點 請不要向下進(jìn)行 17 3字符串的輸入 用戶通過鍵盤輸入的通常不僅僅是單個字符而是字符串 下面我們討論字符串輸入中的問題和簡單的解決方法 17 3字符串的輸入 最基本的字符串輸入程序 需要具備下面的功能 1 在輸入的同時需要顯示這個字符串 2 一般在輸入回車符后 字符串輸入結(jié)束 3 能夠刪除已經(jīng)輸入的字符 對于這三個功能 我們可以想象在DOS中 輸入命令行時的情況 17 3字符串的輸入 編寫一個接收字符串的輸入子程序 實現(xiàn)上面三個基本功能 因為在輸入的過程中需要顯示 子程序的參數(shù)如下 dh dl 字符串在屏幕上顯示的行 列位置 ds si指向字符串的存儲空間 字符串以0為結(jié)尾符 下面我們進(jìn)行分析 17 3字符串的輸入 1 字符的輸入和刪除 每個新輸入的字符都存儲在前一個輸入的字符之后 而刪除是從最后面的字符進(jìn)行的 我們看下面的過程 空字符串 輸入 a a輸入 b ab輸入 c abc輸入 d abcd刪除一個字符 abc刪除一個字符 ab刪除一個字符 a刪除一個字符 17 3字符串的輸入 可以看出在字符串輸入的過程中 字符的輸入和輸出是按照棧的訪問規(guī)則進(jìn)行的 即后進(jìn)先出 這樣 我們就可以用棧的方式來管理字符串的存儲空間 也就是說 字符串的存儲空間實際上是一個字符棧 字符棧中的所有字符 從棧底到棧頂 組成一個字符串 17 3字符串的輸入 2 在輸入回車符后 字符串輸入結(jié)束 輸入回車符后 我們可以在字符串中加入0 表示字符串結(jié)束 17 3字符串的輸入 3 在輸入的同時需要顯示這個字符串 每次有新的字符輸入和刪除一個字符的時候 都應(yīng)該重新顯示字符串 即從字符棧的棧底到棧頂 顯示所有的字符 17 3字符串的輸入 4 程序的處理過程 現(xiàn)在我們可以簡單地確定程序的處理過程如下 調(diào)用int16h讀取鍵盤輸入 如果是字符 進(jìn)入字符棧 顯示字符棧中的所有字符 繼續(xù)執(zhí)行 如果是退格鍵 從字符棧中彈出一個字符 顯示字符棧中的所有字符 繼續(xù)執(zhí)行 如果是Enter鍵 向字符棧中壓入0 返回 17 3字符串的輸入 從程序的處理過程中可以看出 字符棧的入棧 出棧和顯示棧中的內(nèi)容 是需要在多處使用的功能 我們應(yīng)該將它們寫為子程序 17 3字符串的輸入 子程序 字符棧的入棧 出棧和顯示 參數(shù)說明 ah 功能號 0表示入棧 1表示出棧 2表示顯示 ds si指向字符??臻g 對于0號功能 al 入棧字符 對于1號功能 al 返回的字符 對于2號功能 dh dl 字符串在屏幕上顯示的行 列位置 17 3字符串的輸入 子程序代碼字符棧的訪問規(guī)則如下所示 1 ???2 a 入棧 3 b 入棧 17 3字符串的輸入 另外一個要注意的問題是 顯示棧中字符的時候 要注意清除屏幕上上一次顯示的內(nèi)容 我們現(xiàn)在寫出完整的接收字符串輸入的子程序 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 我們主要以3 5英寸軟盤為例 進(jìn)行講解 常用的3 5英寸軟盤的結(jié)構(gòu) 分為上下兩面 每面有80個磁道 每個磁道又分為18個扇區(qū) 每個扇區(qū)的大小為512B 總?cè)萘繛?2面 80磁道 18扇區(qū) 512B 1440KB 1 44MB 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 磁盤的實際訪問由磁盤控制器進(jìn)行 我們可以通過控制磁盤控制器來訪問磁盤 只能以扇區(qū)為單位對磁盤進(jìn)行讀寫 在讀寫扇區(qū)的時候 要給出面號 磁道號和扇區(qū)號 面號和磁道號從0開始 而扇區(qū)號從1開始 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 如果我們通過直接控制磁盤控制器來訪問磁盤 則需要涉及許多硬件細(xì)節(jié) BIOS提供了對扇區(qū)進(jìn)行讀寫的中斷例程 這些中斷例程完成了許多復(fù)雜的和硬件相關(guān)的工作 我們可以通過調(diào)用BIOS中斷例程來訪問磁盤 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 BIOS提供的訪問磁盤的中斷例程為int13h 如下 讀取0面0道1扇區(qū)的內(nèi)容到0 200 movax 0moves axmovbx 200hmoval 1movch 0movcl 1movdl 0movdh 0movah 2int13h 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 入口參數(shù) ah int13h的功能號 2表示讀扇區(qū) al 讀取的扇區(qū)數(shù) ch 磁道號 cl 扇區(qū)號 dh 磁頭號 對于軟驅(qū)即面號 因為一個面用一個磁頭來讀寫 dl 驅(qū)動器號軟驅(qū)從0開始 0 軟驅(qū)A 1 軟驅(qū)B 硬盤從80h開始 80h 硬盤C 81h 硬盤D es bx指向接收此扇區(qū)讀入數(shù)據(jù)的內(nèi)存區(qū) 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 返回參數(shù) 操作成功 ah 0 al 讀入的扇區(qū)數(shù)操作失敗 ah 出錯代碼 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 將0 200中的內(nèi)容寫入0面0道1扇區(qū) movax 0moves axmovbx 200hmoval 1movch 0movcl 1movdl 0movdh 0movah 3int13h 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 入口參數(shù) ah int13h的功能號 3表示寫扇區(qū) al 寫入的扇區(qū)數(shù) ch 磁道號 cl 扇區(qū)號 dh 磁頭號 面 dl 驅(qū)動器號軟驅(qū)從0開始 0 軟驅(qū)A 1 軟驅(qū)B 硬盤從80h開始 80h 硬盤C 81h 硬盤D es bx指向?qū)懭氪疟P的數(shù)據(jù) 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 返回參數(shù) 操作成功 ah 0 al 寫入的扇區(qū)數(shù)操作失敗 ah 出錯代碼注意 17 4應(yīng)用int13h中斷例程對磁盤進(jìn)行讀寫 注意 下面我們要使用int13h中斷例程對軟盤進(jìn)行讀寫 直接向磁盤扇區(qū)寫入數(shù)據(jù)是很危險的 很可能覆蓋掉重要的數(shù)據(jù) 如果向軟盤的0面0道1扇區(qū)中寫入了數(shù)據(jù) 要使軟盤在現(xiàn)有的操作系統(tǒng)下可
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 1642-2025 設(shè)施番茄病蟲害綠色防控技術(shù)規(guī)程
- 公共健康教育重要性
- 2025年司鉆-井下作業(yè)模擬考試100題及答案
- 車隊運(yùn)輸貨物保險合作協(xié)議
- 高端酒店餐飲部員工服務(wù)合同
- 車輛無償借用與道路救援服務(wù)協(xié)議
- 2025年兒童文學(xué)創(chuàng)作考試試卷及答案研究
- 2025年高級技能工人職業(yè)資格考試試卷及答案
- 2025年心理咨詢師職業(yè)考試試卷及答案
- 梵藝造型團(tuán)購活動方案策劃相關(guān)7篇
- 更新版國家開放大學(xué)電大??啤稒C(jī)械設(shè)計基礎(chǔ)》機(jī)考網(wǎng)考形考網(wǎng)絡(luò)題庫及答案
- 2024年度重慶市招聘社區(qū)工作者考試題帶答案
- 放射診療許可遺失補(bǔ)辦申請表
- JGJ107-2016 鋼筋機(jī)械連接技術(shù)規(guī)程
- 安全施工責(zé)任承諾書
- 單肺通氣肺功能保護(hù)策略課件
- (完整word版)現(xiàn)代漢語常用詞表
- 【自考復(fù)習(xí)資料】05175稅收籌劃(重點知識匯總)
- 機(jī)械設(shè)備安全及防護(hù)要點
- GB/T 43565-2023中小學(xué)合成材料面層籃球場地
- 【班級管理表格】學(xué)生檢討反思承諾書
評論
0/150
提交評論