匯編-第9章 BIOS和DOS中斷_第1頁
匯編-第9章 BIOS和DOS中斷_第2頁
匯編-第9章 BIOS和DOS中斷_第3頁
匯編-第9章 BIOS和DOS中斷_第4頁
匯編-第9章 BIOS和DOS中斷_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章BIOS和DOS中斷鍵盤I/O顯示器I/O打印機I/O串行通信口I/O子程序調(diào)用主程序……CALLSUBP……

子程序…………RETDOS/BIOS調(diào)用

源程序……INTn……DOS/BIOS

例行程序…………IRET實現(xiàn)機制不同BIOS和DOS基本調(diào)用調(diào)用方法:1、將調(diào)用參數(shù)裝入指定的寄存器中;2、BIOS或DOS功能號裝入AH;3、如需子功能號,把它裝入AL;4、按中斷號調(diào)用DOS或BIOS中斷(INT);5、檢查或取得返回參數(shù)。例1:DOS調(diào)用:鍵盤輸入,顯示輸出 MOV AH,01 ;DOS功能號:鍵盤輸入

INT 21H

;DOS調(diào)用 MOVCHAR,AL ;返回參數(shù):鍵入字符的 ;ASCII碼(在AL中) MOVDL,’A’ ;調(diào)用參數(shù):輸出字符 MOV AH,02

;DOS功能號:顯示輸出

INT 21H

;DOS調(diào)用

1.鍵盤I/O

(1)BIOS鍵盤中斷(INT16H)AH功能返回參數(shù)

0從鍵盤讀一字符AL=字符碼,AH=掃描碼

1讀鍵盤緩沖區(qū)的字符如ZF=0,AL=字符碼, AH=掃描碼如ZF=1,緩沖區(qū)空

2取鍵盤狀態(tài)字節(jié)AL=鍵盤狀態(tài)字節(jié)

字符數(shù)字鍵字符碼為ASCII碼功能鍵、控制鍵字符碼為0對應(yīng)一個掃描碼例2:讀取鍵盤狀態(tài)字節(jié),并以十六進制打印出來again:

movah,02h

int16h

mov

bx,ax callbinihex

movdl,0dh

movah,02h

int21h

jmpagain(2)DOS鍵盤中斷(INT21H)AH

功能調(diào)用參數(shù)返回參數(shù)

1

從鍵盤輸入一個字符并回顯在屏幕上AL=字符

6讀鍵盤字符,不回顯DL=0FFH若有字符可取,AL=字符,ZF=0

若無字符可取,AL=0,ZF=1

7

從鍵盤輸入一個字符,不回顯AL=字符

8從鍵盤輸入一個字符,不回顯,AL=字符檢測Ctrl-Break

A

輸入字符到緩沖區(qū)DS:DX=緩沖區(qū)首址

B

讀鍵盤狀態(tài)AL=0FFH有鍵入,AL=00無鍵入

C

清除鍵盤緩沖區(qū),AL=鍵盤功能號并調(diào)用一種鍵盤功能(1,6,7,8或A)例3:DOS調(diào)用:從鍵盤輸入字符 MOVAH,01 ;DOS功能號:鍵盤輸入

INT21H ;DOS調(diào)用 MOVCHAR,AL ;返回參數(shù):鍵入字符 ;的ASCII碼(AL)例4:輸入字符串到緩沖區(qū)STRINGDATASEGMENTMAXLENDB32ACTLENDB?STRINGDB32DUP(?)DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX

LEADX,MAXLENMOVAH,0AHINT21HMOVAH,4GHINT21HCODEENDSENDSTART32568H61H70H70H79H0DHMAXLENACTLENSTRING(2)DOS顯示功能調(diào)用中斷

INT21H

AH

功能調(diào)用參數(shù)

2

顯示一個字符(檢驗Ctrl-Break)DL=字符 光標跟隨字符移動

6

顯示一個字符(不檢驗Ctrl-Break)DL=字符 光標跟隨字符移動

9顯示字符串DS:DX=串地址

串必須以$結(jié)束, 光標跟隨串移動例5:DOS調(diào)用:顯示輸出一個字符

MOVDL,’A’ ;調(diào)用參數(shù):輸出字符 MOVAH,02 ;DOS功能號:顯示輸出 INT21H ;DOS調(diào)用

例6:顯示字符串MESSAGEDB‘Thesortoperationisfinished.’,13,10,’$’

MOVAH,9 MOVDX,SEGMESSAGE MOVDS,DX MOVDX,OFFSETMESSAGEINT21H例7:除數(shù)為0時的軟件中斷(類型0)處理程序。此程序分成兩部分:初始化部分和中斷處理部分。初始化部分:設(shè)置新的0型中斷向量,顯示一條信息,然后完成終止和駐留后退出程序。中斷處理程序:在發(fā)生被0除中斷時,先保存有關(guān)的寄存器的值,然后詢問是退出“Q”還是繼續(xù)“C”,若鍵入“C”,則處理程序恢復(fù)所有的寄存器并執(zhí)行IRET返回主程序(顯示一個標記符“#”),此時除法的操作結(jié)果無效。若鍵入“Q”返回DOS。初始化部分:

leadx,zdivmovax,seg

zdivmov

ds,axmoval,0movah,25hint21hmovax,codemov

ds,axmov

dx,offsetok_msgmovah,9hmov21hmovax,1movdl,0divdlmovah,2movdl,‘#’int21hmovah,31h ;終止并駐留moval,0 ;AL=DOS返回嗎mov

dx,((prog_len+15)/16)+16

;保留的節(jié)數(shù)(1節(jié)等于16字節(jié))int21h

中斷處理程序:zdiv procfar

stiprt_warn:

movax,code

mov

ds,ax

mov

dx,offsetwarn_msg

movah,9

int21hinput:movah,1

int21h

cmp

al,’c’ jecontinue

cmpal,‘q’ jeexit

mov

dx,offsetbeep

movah,9

int21h

jmp

prt_warnexit: movax,4cffh

int21hcontinue:

mov

dx,offsetcrlf

movah,9

int21h

cli

iretzdiv

endpok_msgdb0dh,0ah,’Zero-divisionHandler installed!’db0dh,0ah,’$’warn_msgdb‘Zer0-divisiondetected,’,07hdb‘ContinueorQuit(c/q)?$’beepdb07h,’$’crlfdb0dh,0ah,’$’prog_len

equ$-main軟中斷開發(fā)方法

對于軟中斷程序,則是通過軟中斷指令I(lǐng)NTn來調(diào)用,為了定義一個用戶自己的軟中斷指令,可以按以下步驟:1、確定一個空閑的中斷號n。2、明確入口參數(shù)和出口參數(shù)。3、編寫相應(yīng)的中斷處理程序。4、設(shè)置中斷向量,即將新編寫的中斷處理程序的入口地址寫入中斷向量表的4*n開始的4個字節(jié)。在完成上述工作后,便可使用軟中斷指令I(lǐng)NTn實現(xiàn)n號中斷調(diào)用,執(zhí)行用戶自己開發(fā)的軟中斷處理程序。軟中斷程序設(shè)計舉例例8:編寫輸出字符串“exampleforint”的中斷處理程序,設(shè)中斷號為5CODESEGMENTASSUMECS:CODEMAINPROCFARPUSHDSMOVAX,0PUSHAXCLIMOVAX,SEGNEWINT5MOVDS,AXMOVDX,OFFSETNEWINT5MOVAL,5MOVAH,25HINT21HSTIMOVCX,10L1:INT5H ;測試新中斷

LOOPL1RETMAINENDPHELLODB‘exampleforint’NEWINT5PROCFARPUSHBXPUSHCXPUSHAX

MOVBX,OFFSETHELLOMOVCX,15L2:MOVAL,CS:[BX]CALLDISPCHARINCBXLOOPL2MOVAL,0DH ;顯示回車

CALLDISPCHARMOVAL,0AH ;顯示換行

CALLDISP

溫馨提示

  • 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

提交評論