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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

PUSHDS

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

MOVAX,2580H INT21H POPDS新的中斷向量在DS:DX中3.調(diào)用中斷服務(wù)程序

MOVDX,OFFSETINTMSG

INT80H

NEW80H PROC STI ;開中斷

PUSHAX ;保護(hù)寄存器

PUSHBX PUSHSI4.進(jìn)入中斷服務(wù)程序5.顯示字符串

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

NEW2: POPSI ;恢復(fù)寄存器

POPBX POPAX

IRET ;中斷返回

NEW80H ENDP7.主程序結(jié)束

MOVDX,INTOFF MOVAX,INTSEG MOVDS,AX

MOVAX,2580H INT21H MOVAX,4C00H INT21HAInstructionInterrupt!中斷調(diào)用舉例(3)時間中斷調(diào)用(1AH);(218頁)INT1AH中斷調(diào)用有2個功能,功能號在AH中,AH=0,1(1)AH=0的功能:讀取時間計數(shù)器的當(dāng)前值出口參數(shù):CX=計數(shù)值的高位字,DX=計數(shù)值的低位字,若上次讀它后,計數(shù)未超過24小時,AL=0,否則不為0。時間計數(shù)器每55MS自動加1,所以CX:DX中的數(shù)除以65536得小時數(shù),余數(shù)除1092得分?jǐn)?shù),所得余數(shù)再除18.2得秒數(shù)。(2)AH=1的功能設(shè)置時間計數(shù)器的當(dāng)前值入口參數(shù):AH=1,CX,DX出口參數(shù):時間計數(shù)器設(shè)為CX與DX中的值.將時間計數(shù)器的當(dāng)前值設(shè)置為0MOVAH,1MOVCX,0MOVDX,0INT1AH例:計算程序執(zhí)行時間STIMovah,1MOVCX,0MOVDX,0INT1AHCALLPROC1MOVAH,0INT1AH這樣時間計數(shù)器的值在CX:DX中,此數(shù)×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日期、時間功能調(diào)用讀取系統(tǒng)日期(220頁)

AH=2AHINT21H返回值(十六進(jìn)制數(shù)):

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

AH=2BH

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

設(shè)置成功

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

AH=2CH

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

AH=2DH

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

AL=0

成功,-1

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

①0CH和23FF:00H

0CH和F000:FF23H

0BH和00F0:23FFH

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

2、數(shù)制轉(zhuǎn)換:247.86=

H=______________BCD3.字長為8位的二進(jìn)制數(shù)10010100B,若它表示無符號數(shù),或原碼數(shù),或補(bǔ)碼數(shù),則該數(shù)的真值應(yīng)分別為:______D,______D或______D源程序如下:

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

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

二、輸入輸出指令

(累加器專用傳輸指令)

第十章I/O端口地址1.輸入指令I(lǐng)N

格式:

INACR,PORT

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

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

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

格式:OUTPORT,ACR

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

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

MOVDX,379H WT:

TESTAL,

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

INAL,27HTESTAL,00000100BJNZERROR

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論