匯編語言第九章_第1頁
匯編語言第九章_第2頁
匯編語言第九章_第3頁
匯編語言第九章_第4頁
匯編語言第九章_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章中斷程序設計教學重點中斷分類及中斷編程斷點主程序中斷服務程序中斷請求對外設進行處理繼續(xù)執(zhí)行返回斷點CPU在執(zhí)行程序中,被內部或外部的事件所打斷,轉去執(zhí)行一段預先安排好的中斷服務程序;服務結束后,又返回原來的斷點,繼續(xù)執(zhí)行原來的程序。9.1中斷概念9.1.3一、二、一個完整中斷處理過程

1、中斷請求2、中斷判優(yōu)3、中斷響應

4、執(zhí)行中斷處理保留斷點,CS和IP入棧開中斷,形成中斷入口地址保護現(xiàn)場執(zhí)行中斷處理關中斷、恢復現(xiàn)場5、中斷返回9.2定制中斷處理程序編寫中斷處理子程序步驟:(1)保存現(xiàn)場,CS和IP入棧(2)開中斷,形成中斷入口地址(STI)(3)處理中斷,執(zhí)行中斷處理(4)關中斷(CLI)

(5)恢復現(xiàn)場(6)中斷返回(IRET)主程序需要調用中斷服務程序調用前,需要設置中斷向量利用INTn指令調用中斷服務程序1、設置新的中斷向量(1)首先用AH=35H的DOS系統(tǒng)調用得到原中斷處理程序地址(返回地址在ES:BX)MOVAH,35HMOVAL,80H;原中斷號INT21HMOVAX,ESMOVCSR,AX;保存原中斷程序段地址

;CS:IPMOVIPR,BX(2)其次用AH=25H的DOS系統(tǒng)調用設置新的中斷向量MOVDX,SEGINTRMOVDS,DXMOVDX,OFFSETINTRMOVAH,25HMOVAL,80H;INT21H例9.1內部中斷服務程序編寫80H號中斷服務程序(neiint.asm)功能:顯示以“0”結尾字符串的功能利用顯示器功能調用INT10H字符串緩沖區(qū)首地址為入口參數DS:DX(段地址:偏移地址)傳遞參數程序為NEIINT.ASM定義數據段例9.1

INTOFF DW? INTSEG DW? INTMSG DB‘AINSTRUCTIONINTERRUPT!’ DB0DH,0AH,01.保存中斷向量

MOVAX,3580H INT21H MOVINTOFF,BX ;保存偏移地址

MOVINTSEG,ES ;保存段基地址返回參數為中斷向量,在ES:BX中2.設置中斷向量

PUSHDS

MOVDX,OFFSETNEW80H MOVAX,SEGNEW80H MOVDS,AX;DS:DX傳遞中斷向量

MOVAX,2580H INT21H POPDS新的中斷向量在DS:DX中3.調用中斷服務程序

MOVDX,OFFSETINTMSG

INT80H

NEW80H PROC STI ;開中斷

PUSHAX ;保護寄存器

PUSHBX PUSHSI4.進入中斷服務程序5.顯示字符串

MOVSI,DXNEW1: MOVAL,[SI] CMPAL,0 JZNEW2 MOVBX,0 MOVAH,0EH INT10H INCSI JMPNEW1INT10H中的功能0EH的作用:顯示單個字符。入口參數為:BL:前景色BH:頁號AL:要顯示字符6.退出中斷服務程序

NEW2: POPSI ;恢復寄存器

POPBX POPAX

IRET ;中斷返回

NEW80H ENDP7.主程序結束

MOVDX,INTOFF MOVAX,INTSEG MOVDS,AX

MOVAX,2580H INT21H MOVAX,4C00H INT21HAInstructionInterrupt!中斷調用舉例(3)時間中斷調用(1AH);(218頁)INT1AH中斷調用有2個功能,功能號在AH中,AH=0,1(1)AH=0的功能:讀取時間計數器的當前值出口參數:CX=計數值的高位字,DX=計數值的低位字,若上次讀它后,計數未超過24小時,AL=0,否則不為0。時間計數器每55MS自動加1,所以CX:DX中的數除以65536得小時數,余數除1092得分數,所得余數再除18.2得秒數。(2)AH=1的功能設置時間計數器的當前值入口參數:AH=1,CX,DX出口參數:時間計數器設為CX與DX中的值.將時間計數器的當前值設置為0MOVAH,1MOVCX,0MOVDX,0INT1AH例:計算程序執(zhí)行時間STIMovah,1MOVCX,0MOVDX,0INT1AHCALLPROC1MOVAH,0INT1AH這樣時間計數器的值在CX:DX中,此數×0.055或除18.2即可得程序執(zhí)行時間。例:每隔5.5S從鍵盤讀一個字符,并將字符的ASCII碼存入緩沖區(qū),共讀50個字符

利用INT16H的0功能讀取字符,返回值在AL中X1DB100DUP(?)STR:MOVCX,50LEABX,X1STILOP1:MOVAH,1PUSHCXMOVCX,0MOVDX,0INT1AH

LOP2:MOVAH,0INT1AHCMPDL,100JNZLOP2

MOVAH,0INT16HMOV[BX],ALINCBXPOPCXLOOPLOP1HLT9.4.3DOS日期、時間功能調用讀取系統(tǒng)日期(220頁)

AH=2AHINT21H返回值(十六進制數):

CX=年、DH=月、DL=日、AL=星期9.4.3DOS日期、時間功能調用(2)設置系統(tǒng)日期

AH=2BH

CX=年DH=月DL=日AL=星期INT21H返回值:AL=0

設置成功

AL=-1(FFH),無效。9.4.3DOS日期、時間功能調用(3)讀取系統(tǒng)時間

AH=2CH

INT21H返回值:在cx:dx(時、分、秒、百分秒)(4)設置系統(tǒng)時間

AH=2DH

在cx:dx中分別設置(時、分、……)INT21H返回值:

AL=0

成功,-1

無效。練習:PC/XT機采用向量中斷方式處理級外中斷,中斷號依次為08H~0FH。在RAM0:30H單元開始依次存放23H,F(xiàn)FH,00H和F0H四個字節(jié),問該向量對應的中斷號和中斷程序入口是()。

①0CH和23FF:00H

0CH和F000:FF23H

0BH和00F0:23FFH

0BH和F000:FF23H.1.設字長為八位,有x=1,y=124,則有:[xy]補=(),[xy]補=();

2、數制轉換:247.86=

H=______________BCD3.字長為8位的二進制數10010100B,若它表示無符號數,或原碼數,或補碼數,則該數的真值應分別為:______D,______D或______D源程序如下:

MOVCX,9MOVAL,01HMOVSI,1000HNEXT:MOV[SI],ALINCSISHLAL,1LOOPNEXT

試問:執(zhí)行本程序后有:AL=_____;SI=______;CX=______;本程序的功能是________________一、I/O端口地址空間以16位為基礎,尋址范圍在64KB

二、輸入輸出指令

(累加器專用傳輸指令)

第十章I/O端口地址1.輸入指令IN

格式:

INACR,PORT

功能:把外設端口(PORT)的內容傳送給累加器(ACR),完成從I/O到CPU的數據傳送。

說明:可以傳送8位、16位,相應的累加器選擇AL、AX。若端口號在0~255之間,則端口號直接寫在指令中(長格式);若端口號大于255(1個字節(jié)),則端口號通過DX寄存器間接尋址,即端口號應先放入DX中。

(短格式)例.INAL,61H ;AL(61H端口)長格式INAX,20H ;AX(20H端口)MOVDX,3F8H;短格式INAL,DX ;AL(3F8H端口)演示2.輸出指令OUT

格式:OUTPORT,ACR

功能:把累加器的內容傳送給外設端口。 說明:對累加器和端口號的選擇限制同IN指令。例.OUT61H,AL ;61H端口(AL)OUT20H,AX ;20H端口(AX)MOVDX,3F8H

OUTDX,AL ;3F8H端口(AL)演示例.設某并行打印機的狀態(tài)端口是379H,其D7位是忙閑位,若D7=0表示忙,為1表示閑,測試該打印機當前狀態(tài),若為忙繼續(xù)測試,否則順序執(zhí)行下一條指令。

MOVDX,379H WT:

TESTAL,

JZWT;ZF=1,忙,等待INAX,DX80H*例:測試某狀態(tài)寄存器(端口號27H)的D2位是否為1,為1,則轉ERROR處理

INAL,27HTESTAL,00000100BJNZERROR

9.3BIOS顯示中斷看教材4.4.2(84頁)用來控制光標和顏色的211頁列出了中斷類型為10H的部分操作功能1、控制光標主要定義光標的大小和是否顯示光標入口參數CH,CL表示光標行開始和結束的,數據分放在CH,CL的低4位,當CH的第四位為1,光標不顯示,0顯示單色顯示器光標范圍,在0~13.功能2、設置光標位置行、列分別在DH,DL中BH中保存輸出頁號,必有,單色顯示器的值總是0例9.8置光標開始行為5,結束行為7,并把它設置到第5行第6列.MOVCH,5MOVCL,7MOVAH,1INT10H;置光標大小MOVDH,4MOVDL,5MOVBH,0MOVAH,2INT10H;置光標位置功能3、讀光標位置行列回送給DH,DL,光標大小送CH,CL功能6、卷屏使屏幕上卷指定行,需7個參數如起始行不為(0,0)。結束的行列不為(24,79),則屏幕只上卷一部分區(qū)域,這部分區(qū)域叫窗口,如上卷超指定窗

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論