![使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫_第1頁](http://file4.renrendoc.com/view/0ad2262e804d7ff9eb91744c89b71c7d/0ad2262e804d7ff9eb91744c89b71c7d1.gif)
![使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫_第2頁](http://file4.renrendoc.com/view/0ad2262e804d7ff9eb91744c89b71c7d/0ad2262e804d7ff9eb91744c89b71c7d2.gif)
![使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫_第3頁](http://file4.renrendoc.com/view/0ad2262e804d7ff9eb91744c89b71c7d/0ad2262e804d7ff9eb91744c89b71c7d3.gif)
![使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫_第4頁](http://file4.renrendoc.com/view/0ad2262e804d7ff9eb91744c89b71c7d/0ad2262e804d7ff9eb91744c89b71c7d4.gif)
![使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫_第5頁](http://file4.renrendoc.com/view/0ad2262e804d7ff9eb91744c89b71c7d/0ad2262e804d7ff9eb91744c89b71c7d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《匯編語言》課件
王爽著-清華大學(xué)出版社制作工具:MicrosoftPowerPoint本課件由匯編網(wǎng)()制作提供使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第1頁第17章使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫17.1int9中止例程對(duì)鍵盤輸入處理17.2使用int16h中止例程讀取鍵盤緩沖區(qū)17.3字符串輸入17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第2頁引言大多數(shù)有用程序都需要處理用戶輸入,鍵盤輸入是最基本輸入。程序和數(shù)據(jù)通常需要長(zhǎng)久存放,磁盤是最慣用存放設(shè)備。BIOS為這兩種外設(shè)I/O提供了最基本中止例程,在本章中,我們對(duì)它們應(yīng)用和相關(guān)問題進(jìn)行討論。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第3頁17.1int9中止例程對(duì)鍵盤輸入處理我們已經(jīng)講過,鍵盤輸入將引發(fā)9號(hào)中止,BIOS提供了int9中止例程。CPU在9號(hào)中止發(fā)生后,執(zhí)行int9中止例程,從60h端口讀出掃描碼,并將其轉(zhuǎn)化為對(duì)應(yīng)ASCII碼或狀態(tài)信息,存放在內(nèi)存指定空間(鍵盤緩沖區(qū)或狀態(tài)字節(jié))中。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第4頁17.1int9中止例程對(duì)鍵盤輸入處理普通鍵盤輸入,在CPU執(zhí)行完int9中止例程后,都放到了鍵盤緩沖區(qū)中。鍵盤緩沖區(qū)中有16個(gè)字單元,能夠存放15個(gè)按鍵掃描碼和對(duì)應(yīng)入ASCII碼。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第5頁17.1int9中止例程對(duì)鍵盤輸入處理下面我們按照鍵盤緩沖區(qū)邏輯結(jié)構(gòu),來看一下鍵盤輸入掃描碼和對(duì)應(yīng)ASCII碼是怎樣寫入鍵盤緩沖區(qū)。注意使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第6頁17.1int9中止例程對(duì)鍵盤輸入處理注意:在我們課程中,僅在邏輯結(jié)構(gòu)基礎(chǔ)上,討論BIOS鍵盤緩沖區(qū)讀寫問題。其實(shí)鍵盤緩沖區(qū)是用環(huán)形隊(duì)列結(jié)構(gòu)管理內(nèi)存區(qū),但我們不對(duì)隊(duì)列和環(huán)形隊(duì)列實(shí)現(xiàn)進(jìn)行討論,因?yàn)槟鞘橇硪婚T專業(yè)課《數(shù)據(jù)結(jié)構(gòu)》內(nèi)容。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第7頁17.1int9中止例程對(duì)鍵盤輸入處理下面,我們經(jīng)過下面幾個(gè)鍵:
A、B、C、D、E、shift_A、A
輸入過程,簡(jiǎn)明地看一下int9中止例程對(duì)鍵盤輸入處理方法:
處理鍵盤輸入演示使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第8頁使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第9頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)BIOS提供了int16h中止例程供程序員調(diào)用。
int16h中止例程中包含一個(gè)最主要功效是從鍵盤緩沖區(qū)中讀取一個(gè)鍵盤輸入,該功效編號(hào)為0。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第10頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)下面指令從鍵盤緩沖區(qū)中讀取一個(gè)鍵盤輸入,而且將其從緩沖區(qū)中刪除:
movah,0
int16h
結(jié)果:(ah)=掃描碼,
(al)=ASCII碼。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第11頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)下面,我們接著上一節(jié)中鍵盤輸入過程,看一下int16h怎樣讀取鍵盤緩沖區(qū)。
int16h讀鍵盤緩沖區(qū)演示使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第12頁使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第13頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)從上面我們能夠看出,int16h中止例程0號(hào)功效,進(jìn)行以下工作:(1)檢測(cè)鍵盤緩沖區(qū)中是否有數(shù)據(jù);(2)沒有則繼續(xù)做第1步;(3)讀取緩沖區(qū)第一個(gè)字單元中鍵盤輸入;(4)將讀取掃描碼送入ah,ASCII碼送入al;(5)將己讀取鍵盤輸入從緩沖區(qū)中刪除。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第14頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)可見,B1OSint9中止例程和int16h中止例程是一對(duì)相互配合程序,int9中止例程向鍵盤緩沖區(qū)中寫入,int16h中止例程從緩沖區(qū)中讀出。它們寫入和讀出時(shí)機(jī)不一樣,int9中止例程在有鍵按下時(shí)候向鍵盤緩沖區(qū)中寫入數(shù)據(jù);而int16h中止例程是在應(yīng)用程序?qū)ζ溥M(jìn)行調(diào)用時(shí)候,將數(shù)據(jù)從鍵盤緩沖區(qū)中讀出。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第15頁17.2使用int16h中止例程讀取鍵盤緩沖區(qū)我們?cè)诰帉懫胀ㄌ幚礞I盤輸入程序時(shí)候,能夠調(diào)用int16h從鍵盤緩沖區(qū)中讀取鍵盤輸入。編程,接收用戶鍵盤輸入,輸入“r”,將屏幕上字符設(shè)置為紅色:輸入“g”,將屏幕上字符設(shè)置為綠色;輸入“b”,將屏幕上字符設(shè)置為藍(lán)色。程序源碼使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第16頁尤其提醒檢測(cè)點(diǎn)17.1(page294)沒有經(jīng)過此檢測(cè)點(diǎn),請(qǐng)不要向下進(jìn)行!使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第17頁17.3字符串輸入用戶經(jīng)過鍵盤輸入通常不但僅是單個(gè)字符而是字符串。下面我們討論字符串輸入中問題和簡(jiǎn)單處理方法。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第18頁17.3字符串輸入最基本字符串輸入程序,需要具備下面功效:(1)在輸入同時(shí)需要顯示這個(gè)字符串;(2)普通在輸入回車符后,字符串輸入結(jié)束;(3)能夠刪除已經(jīng)輸入字符。對(duì)于這三個(gè)功效,我們能夠想象在DOS中,輸入命令行時(shí)情況。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第19頁17.3字符串輸入編寫一個(gè)接收字符串輸入子程序,實(shí)現(xiàn)上面三個(gè)基本功效。因?yàn)樵谳斎脒^程中需要顯示,子程序參數(shù)以下:(dh)、(dl)=字符串在屏幕上顯示行、列位置;ds:si指向字符串存放空間,字符串以0為結(jié)尾符。下面我們進(jìn)行分析
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第20頁17.3字符串輸入(1)字符輸入和刪除。
每個(gè)新輸入字符都存放在前一個(gè)輸入字符之后,而刪除是從最終面字符進(jìn)行。我們看下面過程:空字符串:輸入“a”:a
輸入“b”:ab
輸入“c”:abc
輸入“d”:abcd
刪除一個(gè)字符:abc
刪除一個(gè)字符:ab
刪除一個(gè)字符:a
刪除一個(gè)字符:使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第21頁17.3字符串輸入能夠看出在字符串輸入過程中,字符輸入和輸出是按照棧訪問規(guī)則進(jìn)行,即后進(jìn)先出。這么,我們就能夠用棧方式來管理字符串存放空間,也就是說,字符串存放空間實(shí)際上是一個(gè)字符棧。字符棧中全部字符,從棧底到棧頂,組成一個(gè)字符串。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第22頁17.3字符串輸入(2)在輸入回車符后,字符串輸入結(jié)束。輸入回車符后,我們能夠在字符串中加入0,表示字符串結(jié)束。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第23頁17.3字符串輸入(3)在輸入同時(shí)需要顯示這個(gè)字符串。每次有新字符輸入和刪除一個(gè)字符時(shí)候,都應(yīng)該重新顯示字符串,即從字符棧棧底到棧頂,顯示全部字符。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第24頁17.3字符串輸入(4)程序處理過程?,F(xiàn)在我們能夠簡(jiǎn)單地確定程序處理過程以下:①調(diào)用int16h讀取鍵盤輸入;②假如是字符,進(jìn)入字符棧,顯示字符棧中全部字符;繼續(xù)執(zhí)行①;③假如是退格鍵,從字符棧中彈出一個(gè)字符,顯示字符棧中全部字符;繼續(xù)執(zhí)行①;④假如是Enter鍵,向字符棧中壓入0,返回。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第25頁17.3字符串輸入從程序處理過程中能夠看出,字符棧入棧、出棧和顯示棧中內(nèi)容,是需要在多處使用功效,我們應(yīng)該將它們寫為子程序。
使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第26頁17.3字符串輸入子程序:字符棧入棧、出棧和顯示。參數(shù)說明:(ah)=功效號(hào),0表示入棧,1表示出棧,2表示顯示;ds:si指向字符??臻g;對(duì)于0號(hào)功效:(al)=入棧字符;對(duì)于1號(hào)功效:(al)=返回字符;對(duì)于2號(hào)功效:(dh)、(dl)=字符串在屏幕上顯示行、列位置。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第27頁17.3字符串輸入子程序代碼字符棧訪問規(guī)則以下所表示:(1)??眨?)“a”入棧(3)“b”入棧使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第28頁17.3字符串輸入另外一個(gè)要注意問題是:顯示棧中字符時(shí)候,要注意去除屏幕上上一次顯示內(nèi)容。我們現(xiàn)在寫出完整接收字符串輸入子程序。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第29頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫我們主要以3.5英寸軟盤為例,進(jìn)行講解。慣用3.5英寸軟盤結(jié)構(gòu):分為上下兩面,每面有80個(gè)磁道,每個(gè)磁道又分為18個(gè)扇區(qū),每個(gè)扇區(qū)大小為512B???cè)萘繛椋?面×80磁道×18扇區(qū)×512B=1440KB≈1.44MB使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第30頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫磁盤實(shí)際訪問由磁盤控制器進(jìn)行,我們能夠經(jīng)過控制磁盤控制器來訪問磁盤。只能以扇區(qū)為單位對(duì)磁盤進(jìn)行讀寫。在讀寫扇區(qū)時(shí)候,要給出面號(hào)、磁道號(hào)和扇區(qū)號(hào)。面號(hào)和磁道號(hào)從0開始,而扇區(qū)號(hào)從1開始。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第31頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫假如我們經(jīng)過直接控制磁盤控制器來訪問磁盤,則需要包括許多硬件細(xì)節(jié)。BIOS提供了對(duì)扇區(qū)進(jìn)行讀寫中止例程,這些中止例程完成了許多復(fù)雜和硬件相關(guān)工作。我們能夠經(jīng)過調(diào)用BIOS中止例程來訪問磁盤。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第32頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫B(tài)IOS提供訪問磁盤中止例程為int13h。以下,讀取0面0道1扇區(qū)內(nèi)容到0:200:movax,0moves,axmovbx,200hmoval,1movch,0movcl,1movdl,0movdh,0movah,2int13h使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第33頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫入口參數(shù):(ah)=int13h功效號(hào)(2表示讀扇區(qū))(al)=讀取扇區(qū)數(shù)(ch)=磁道號(hào)(cl)=扇區(qū)號(hào)(dh)=磁頭號(hào)(對(duì)于軟驅(qū)即面號(hào),因?yàn)橐粋€(gè)面用一個(gè)磁頭來讀寫)(dl)=驅(qū)動(dòng)器號(hào)軟驅(qū)從0開始,0:軟驅(qū)A,1:軟驅(qū)B;硬盤從80h開始,80h:硬盤C,81h:硬盤D。es:bx指向接收此扇區(qū)讀入數(shù)據(jù)內(nèi)存區(qū)使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第34頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫返回參數(shù):操作成功:(ah)=0,(al)=讀入扇區(qū)數(shù)操作失?。?ah)=犯錯(cuò)代碼使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第35頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫將0:200中內(nèi)容寫入0面0道1扇區(qū):movax,0moves,axmovbx,200hmoval,1movch,0movcl,1movdl,0movdh,0movah,3int13h使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第36頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫入口參數(shù):(ah)=int13h功效號(hào)(3表示寫扇區(qū))(al)=寫入扇區(qū)數(shù)(ch)=磁道號(hào)(cl)=扇區(qū)號(hào)(dh)=磁頭號(hào)(面)(dl)=驅(qū)動(dòng)器號(hào)軟驅(qū)從0開始,0:軟驅(qū)A,1:軟驅(qū)B;硬盤從80h開始,80h:硬盤C,81h:硬盤D。es:bx指向?qū)懭氪疟P數(shù)據(jù)使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第37頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫返回參數(shù):操作成功:(ah)=0,(al)=寫入扇區(qū)數(shù)操作失?。?ah)=犯錯(cuò)代碼注意使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第38頁17.4應(yīng)用int13h中止例程對(duì)磁盤進(jìn)行讀寫注意:下面我們要使用int13h中止例程對(duì)軟盤進(jìn)行讀寫。直接向磁盤扇區(qū)寫入數(shù)據(jù)是很危險(xiǎn),很可能覆蓋掉主要數(shù)據(jù)。假如向軟盤0面0道1扇區(qū)中寫入了數(shù)據(jù),要使軟盤在現(xiàn)有操作系統(tǒng)下能夠使用,必須要重新格式化。使用BIOS進(jìn)行鍵盤輸入和磁盤讀寫第39頁17.4應(yīng)用i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國機(jī)械式暖風(fēng)機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國方波鈴流信號(hào)發(fā)生器模塊數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國布面鼠標(biāo)墊數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國塔吊用回轉(zhuǎn)減速器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國蘆薈提取物復(fù)合營養(yǎng)膠囊市場(chǎng)調(diào)查研究報(bào)告
- 樂器批發(fā)與互聯(lián)網(wǎng)的結(jié)合考核試卷
- 固體廢物處理與城鄉(xiāng)垃圾收運(yùn)體系考核試卷
- 2025-2030年戶外按摩浴缸行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年即食蛋撻行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年可拼接清潔結(jié)構(gòu)件行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- DB4101-T 121-2024 類家庭社會(huì)工作服務(wù)規(guī)范
- DB53∕T 1269-2024 改性磷石膏用于礦山廢棄地生態(tài)修復(fù)回填技術(shù)規(guī)范
- 【財(cái)務(wù)共享服務(wù)模式探究的文獻(xiàn)綜述4000字】
- 敬語專項(xiàng)練習(xí)-高考日語復(fù)習(xí)
- 2024建安杯信息通信建設(shè)行業(yè)安全競(jìng)賽題庫(試題含答案)
- 窗簾工程招標(biāo)書
- JBT 14727-2023 滾動(dòng)軸承 零件黑色氧化處理 技術(shù)規(guī)范 (正式版)
- 術(shù)后譫妄及護(hù)理
- 手術(shù)室術(shù)中物品清點(diǎn)不清的應(yīng)急預(yù)案演練流程及劇本
- 醫(yī)藥行業(yè)的市場(chǎng)營銷與渠道拓展
- 壓力管道安全技術(shù)監(jiān)察規(guī)程-工業(yè)管道
評(píng)論
0/150
提交評(píng)論