版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章BIOS和DOS中斷用戶編程原則①盡可能使用DOS的系統(tǒng)功能調(diào)用,提高程序可移植性。②在DOS功能不能實(shí)現(xiàn)的情況下,考慮用BIOS功能調(diào)用。(比如讀打印機(jī)狀態(tài):BIOS中斷17H的功能2)③在DOS和BIOS的中斷子程序不能解決問(wèn)題時(shí),才使用IN/OUT指令直接控制硬件。(比如聲音控制)中斷:使cpu中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作。中斷源:引起中斷的事件。8086/8088CPU最多有256個(gè)中斷源,這些中斷源根據(jù)來(lái)自CPU的內(nèi)部還是外部分為兩大類:內(nèi)部中斷源和外部中斷源。外中斷(硬中斷):外設(shè)的I/O請(qǐng)求——可屏蔽中斷INTR
電源掉電/奇偶錯(cuò)——非屏蔽中斷NMI所謂不可屏蔽中斷是指該中斷請(qǐng)求不能通過(guò)軟件的方式對(duì)其屏蔽,一旦出現(xiàn)NMI中斷請(qǐng)求,CPU必須立即響應(yīng)。內(nèi)中斷(軟中斷):
INT指令/CPU錯(cuò)(除法錯(cuò)、溢出)/
為調(diào)試程序設(shè)置的中斷(t、g命令)中斷傳送方式非屏蔽中斷請(qǐng)求
中斷邏輯INTnINTO除法錯(cuò)單步
n401CPU
2NMI8259A可編程中斷控制器(PIC)IR0系統(tǒng)定時(shí)器IR1鍵盤IR2彩色/圖形接口IR3保留IR4串行通訊口IR5保留IR6軟盤IR7打印機(jī)INTR08090A0B0C0D0E0F80x86中斷源(圖中引線端標(biāo)示的數(shù)字為分配的終端類型號(hào)N(0-255)):8259A外部有28個(gè)引腳。有9片8259A可構(gòu)成64級(jí)中斷源。
類型0的(IP)
類型0的(CS)
類型1的(IP)
類型1的(CS)
類型N的(IP)
類型N的(CS)
類型255的(IP)
類型255的(CS)0000000004
4*N003FC中斷向量—中斷處理程序的入口地址(段址):(偏址)中斷向量表:各類型(0~0FFH)中斷處理程序的入口地址表設(shè)置CPU中斷允許位:
FLAGS中的IF位=1允許中斷(STI開中斷)
=0禁止中斷(CLI關(guān)中斷)設(shè)置中斷屏蔽位:
中斷屏蔽寄存器的中斷屏蔽位=0允許I/O設(shè)備請(qǐng)求中斷
=1禁止I/O設(shè)備請(qǐng)求中斷
76543210定時(shí)器鍵盤打印機(jī)中斷屏蔽寄存器21H8259A中斷的條件(從外設(shè)發(fā)出中斷請(qǐng)求到CPU響應(yīng)中斷,有兩個(gè)控制條件起決定性作用):INAL,21HANDAL,0FDH
OUT21H,ALCPU中斷過(guò)程:(1)取中斷類型:CPU←typeN(2)保護(hù)現(xiàn)場(chǎng):FLAGS、CS、IP入棧(3)IF=0(關(guān)中斷),TF=0(禁止單步中斷)(4)計(jì)算中斷向量地址,取中斷向量:(4×N)→IP
(4×N+2)→CS(5)轉(zhuǎn)中斷處理程序以上步驟都由硬件完成。采用向量中斷的方法,大大加快了中斷處理的速度。因?yàn)橛?jì)算機(jī)可直接通過(guò)中斷向量表轉(zhuǎn)向相應(yīng)的處理程序,而不需要CPU去逐個(gè)檢測(cè)和確定中斷原因。
int指令格式:intn
;n為中斷類型碼。功能:是引發(fā)n號(hào)中斷過(guò)程。CPU執(zhí)行intn過(guò)程如下:(1)取中斷類型碼n;(2)標(biāo)志寄存器入棧,IF=0,TF=0;(3)CS、IP入棧;(4)(IP)=(n*4),(CS)=(n*4+2)。從此處轉(zhuǎn)去執(zhí)行n號(hào)中斷的中斷處理程序。IRET指令可見,int
指令的最終功能和call指令相似,都是調(diào)用一段程序。一般情況下,系統(tǒng)將一些具有一定功能的子程序,以中斷處理程序的方式提供給應(yīng)用程序調(diào)用。我們?cè)诰幊痰臅r(shí)候,可以用int指令調(diào)用這些子程序,而在子程序中安排iret指令返回。我們將這樣的中斷處理子程序簡(jiǎn)稱為中斷例程。Iret指令的執(zhí)行過(guò)程相當(dāng)于:
popippopcspopflagsBIOS和DOS中斷例程的安裝過(guò)程(1)開機(jī)后,CPU一加電,初始化(CS)=0FFFFH,(IP)=0,自動(dòng)從FFFF:0單元開始執(zhí)行程序。FFFF:0處有一條轉(zhuǎn)跳指令,CPU執(zhí)行該指令后,轉(zhuǎn)去執(zhí)行BIOS中的硬件系統(tǒng)檢測(cè)和初始化程序。(2)初始化程序?qū)⒔IOS所支持的中斷向量,即將BIOS提供的中斷例程的入口地址登記在中斷向量表中。(3)硬件系統(tǒng)檢測(cè)和初始化完成后,調(diào)用int19h進(jìn)行操作系統(tǒng)的引導(dǎo)。從此將計(jì)算機(jī)交由DOS操作系統(tǒng)控制。(4)DOS啟動(dòng)后,除完成其它工作外,還將它所提供的中斷例程裝入內(nèi)存,并建立相應(yīng)的中斷向量。中斷例程調(diào)用方法設(shè)置入口參數(shù)在AH設(shè)置功能號(hào)m執(zhí)行中斷指令I(lǐng)NTN分析、應(yīng)用出口參數(shù)一般來(lái)說(shuō),中斷例程中包含多個(gè)子程序,內(nèi)部用AH傳遞子程序的編號(hào)來(lái)決定執(zhí)行哪個(gè)子程序。例:DOS功能調(diào)用:int21h中斷例程是DOS提供的中斷例程,其中包含了DOS提供給程序員在編程時(shí)調(diào)用的子程序。;----------鍵盤輸入一個(gè)字符 MOV AH,01 ;設(shè)置功能號(hào):鍵盤輸入
INT 21H
;DOS功能調(diào)用 MOVCHAR,AL ;返回參數(shù):(AL)=字符ASCII碼;-----------------顯示輸出一個(gè)字符 MOVDL,’A’ ;調(diào)用參數(shù):待輸出字符的ASCII碼 MOV AH,02
;DOS功能號(hào):顯示輸出
INT 21H
;DOS調(diào)用
中斷例程調(diào)用舉例movah,4ch;調(diào)用第21h號(hào)中斷例程的4ch號(hào)子程序
moval,0;提供返回值作為參數(shù)int21h與子程序調(diào)用的比較
主程序
……CALLSUBP
……
子程序…………RETDOS/BIOS調(diào)用
源程序
……INTn
……DOS/BIOS
例行程序…………IRET實(shí)現(xiàn)機(jī)制不同(1)BIOS鍵盤中斷(INT16H)
AH功能返回參數(shù)
0從鍵盤讀一字符AL=字符碼,AH=掃描碼
1讀鍵盤狀態(tài)并
如按下ZF=0,AL=字符碼,AH=掃描碼檢查是否有字符輸入
否則ZF=1,緩沖區(qū)空
比如指令序列:
MOVAH,0INT16H;等待按鍵輸入然后取得掃描碼和字符碼MOVBX,AX;用BX傳遞參數(shù)CALLBINIHEX;調(diào)用子程序?qū)X轉(zhuǎn)16進(jìn)制并顯示DOS鍵盤中斷(INT21H)AH
功能調(diào)用參數(shù)返回參數(shù)
1
從鍵盤輸入一個(gè)字符并回顯在屏幕上AL=字符
6
讀鍵盤字符,不回顯DL=0FFH
若有字符可取,AL=字符,ZF=0
若無(wú)字符可取,AL=0,ZF=1
7
從鍵盤輸入一個(gè)字符,不回顯AL=字符
8從鍵盤輸入一個(gè)字符,不回顯,AL=字符檢測(cè)Ctrl-Break
A
輸入字符到緩沖區(qū)DS:DX=緩沖區(qū)首址(DX+1)=實(shí)際輸入字符數(shù)B檢驗(yàn)鍵盤狀態(tài)AL=0有輸入AL=FF無(wú)輸入例:檢測(cè)鍵盤輸入的字符是否為回車鍵Wait_here:movah,7
int21h;等待輸入
cmpal,0dh;比較判斷
jnewait-here例:某程序在執(zhí)行過(guò)程中檢測(cè)是否有鍵盤輸入Sounder:…
movah,0bh
int21h;讀鍵盤狀態(tài)
incal;AL=FF無(wú)輸入,A=00有輸入
jnzsounder;AL不等于0無(wú)鍵入
ret例:輸入字符串到緩沖區(qū)STRING
DATASEGMENT
MAXLENDB32ACTLENDB
?
STRINGDB32DUP(?)DATAENDSCODE SEGMENT
… LEA DX,MAXLEN MOV AH,0AH INT 21H …CODE ENDS ENDMAXLENACTLENSTRING32568H61H70H70H79H0DHMAXLENDB32,0,32DUP(?)MAXLENDB32,33DUP(?)輸入happyDOS鍵盤中斷0AH功能號(hào)①
若(DS:DX)字節(jié)單元的值為0,則不等待從鍵盤輸入,結(jié)束調(diào)用。②若(DS:DX)字節(jié)單元的內(nèi)容大于0,則等待從鍵盤輸入,并把輸入鍵的ASCII碼順序存放在DS:DX+2開始的單元,按回車鍵表示結(jié)束輸入。當(dāng)按下鍵的個(gè)數(shù)超過(guò)(DS:DX)中值,發(fā)出警告聲’嘟嘟’,
不再接收輸入的數(shù)據(jù),直到輸入回車鍵。③將實(shí)際輸入的字符個(gè)數(shù)(不包括回車鍵)填入(DS:DX+1),
結(jié)束調(diào)用。DS:DX000000000000000000000000000000000AH功能執(zhí)行過(guò)程:◢輸入的字符均帶回顯,且光標(biāo)隨字符移動(dòng)。當(dāng)輸入回車符結(jié)束時(shí),也回顯回車符。表現(xiàn)為功能調(diào)用結(jié)束后,光標(biāo)回到了行首。◢
回車符0DH作為一個(gè)輸入的字符存放在字符串尾,但計(jì)算輸入個(gè)數(shù)時(shí),不包括回車鍵。
實(shí)際最多能輸入的字符數(shù)=限制的最多數(shù)-1
(回車符占一個(gè))◢
執(zhí)行完0AH功能后,DS和DX的值不變,DS:DX仍指向緩沖區(qū)的首地址。◢
整個(gè)緩沖區(qū)的大小應(yīng)為:限制的最多數(shù)+2
maxDB11,?,11dup(?)緩沖區(qū)必須定義為字節(jié)類型,不能定義為字類型。0AH功能注意事項(xiàng):(3)DOS顯示功能調(diào)用中斷INT21H
AH
功能調(diào)用參數(shù)
2
顯示一個(gè)字符(檢驗(yàn)Ctrl-Break)DL=字符
光標(biāo)跟隨字符移動(dòng)
6
顯示一個(gè)字符(不檢驗(yàn)Ctrl-Break)DL=字符
光標(biāo)跟隨字符移動(dòng)
9顯示字符串DS:DX=串地址
串必須以$結(jié)束, 光標(biāo)跟隨串移動(dòng)MESSAGEDB‘Thesortoperationisfinished.’,13,10,’$’
……
MOV
AH,9
MOVDX,SEGMESSAGE
MOV
DS,DX
MOV
DX,OFFSETMESSAGE
INT21HPrintmacrostr_addrpushdxpushaxmov
dx,offset
str_addr
movah,09
int21hpopaxpopdx
endm
例:顯示字符串1.設(shè)置顯示方式入口參數(shù)
AL=顯示方式值
0040×25黑白文本方式
0140×25彩色文本方式
0280×25黑白文本方式
0380×25彩色文本方式
04320×320彩色圖形方式功能號(hào)
AH=00H類型號(hào)
10H出口參數(shù)無(wú)實(shí)現(xiàn)功能將顯示方式設(shè)置為指定的形式例:將顯示方式設(shè)置為25×80彩色文本方式
MOVAL,03HMOV
AH,00
INT10H
(3)BIOS顯示中斷
INT10H功能號(hào)AH=0,1,2,3,5,6,7,8,9,0AH,0EH13H默認(rèn)方式為03
Int10h的功能01:設(shè)置光標(biāo)大小。光標(biāo)行的開始和結(jié)束數(shù)據(jù)分別放在ch和cl的低4位(0~3位光標(biāo)的大?。?,ch的4位為0顯現(xiàn)光標(biāo),為1則關(guān)閉光標(biāo)。光標(biāo)只在文本方式中出現(xiàn),在圖形方式下光標(biāo)消失。
Int10h的功能02:設(shè)置光標(biāo)位置。Dh和dl寄存器中為光標(biāo)位置的行列號(hào),bh中為頁(yè)號(hào)(單色顯示器頁(yè)號(hào)為0)。例:
mov ch,5
mov cl,7
mov ah,1
int10h
movdh,4
movdl,5
movbh,0
movah,2
int10h設(shè)置光標(biāo)的大小,光標(biāo)開始行為5,結(jié)束行為7。計(jì)算機(jī)有專門的硬件控制光標(biāo)的顯示大小、位置。設(shè)置光標(biāo)的位置,光標(biāo)在第5行第6列(4,5)。2、控制光標(biāo)
movch,20h
mov cl,00h
mov ah,1
int10h;隱藏光標(biāo)功能03
:bh中指定頁(yè)號(hào)。把光標(biāo)位置的行號(hào)回送給dh,列號(hào)回送給dl,光標(biāo)大小的參數(shù)填入ch和cl
。
movah,3
movbh,0
int10h;返回參數(shù)dh:dl=行:列4、選擇顯示頁(yè)功能05:由程序確定顯存中的顯示區(qū)域。入口參數(shù):頁(yè)號(hào)送給al。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租房退房要求打掃衛(wèi)生的合同(2篇)
- 咨詢服務(wù)類合同(2篇)
- 人教A版湖南省名校聯(lián)考聯(lián)合體2023-2024學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試題
- 初中體育+障礙跑+作業(yè)設(shè)計(jì)
- 2023年國(guó)家公務(wù)員錄用考試《申論》真題(副省卷)及答案解析
- 第4課《一著驚海天-目擊我國(guó)航母艦載戰(zhàn)斗機(jī)首架次成功著艦》八年級(jí)語(yǔ)文上冊(cè)精講同步課堂(統(tǒng)編版)
- 西南林業(yè)大學(xué)《操作系統(tǒng)原理》2022-2023學(xué)年期末試卷
- 西京學(xué)院《新媒體交互設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 獲獎(jiǎng)過(guò)程說(shuō)明附件8
- 西京學(xué)院《工程地質(zhì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 產(chǎn)后尿潴留的預(yù)防及護(hù)理
- 外貿(mào)基礎(chǔ)知識(shí)及常用外貿(mào)術(shù)語(yǔ)
- 世界學(xué)生日活動(dòng)主題班會(huì)
- 校園垃圾收集清運(yùn)方案
- 人教版八年級(jí)上冊(cè)數(shù)學(xué)課后習(xí)題
- 基因擴(kuò)增實(shí)驗(yàn)室常用儀器設(shè)備的正確操作
- 鐵道供電技術(shù)《1.2接觸網(wǎng)的組成》
- 洗車方案模板
- 北京市西城區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)檢測(cè)卷(含答案)
- 2024年宣城寧國(guó)市從全市村社區(qū)“兩委”干部中擇優(yōu)鄉(xiāng)鎮(zhèn)街道事業(yè)單位招聘筆試沖刺題
- 溶血發(fā)生的應(yīng)急預(yù)案課件
評(píng)論
0/150
提交評(píng)論