匯編語(yǔ)言程序設(shè)計(jì)+第6章輸入輸出程序設(shè)計(jì)_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)+第6章輸入輸出程序設(shè)計(jì)_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)+第6章輸入輸出程序設(shè)計(jì)_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)+第6章輸入輸出程序設(shè)計(jì)_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)+第6章輸入輸出程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

8086/8088和ARM核匯編語(yǔ)言程序設(shè)計(jì)第6章輸入/輸出程序設(shè)計(jì)

教學(xué)要求

1.了解I/O設(shè)備的數(shù)據(jù)傳送方式

2.掌握I/O程序的設(shè)計(jì)方法2/3/20231第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1輸入/輸出指令6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計(jì)

6.4中斷傳送方式

2/3/20232第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)中央處理機(jī)

CPU總線控制邏輯接口接口存儲(chǔ)器大容量存儲(chǔ)器I/O設(shè)備I/O子系統(tǒng)系統(tǒng)總線......2/3/20233第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)為什么需要I/O接口(電路)?微機(jī)的外部設(shè)備多種多樣工作原理、驅(qū)動(dòng)方式、信息格式、以及工作速度方面彼此差別很大它們不能與CPU直接相連必須經(jīng)過(guò)中間電路再與系統(tǒng)相連這部分電路被稱為I/O接口電路多種外設(shè)2/3/20234第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)多種多樣的外設(shè)工作原理不同機(jī)械、電子、機(jī)電、電磁……傳送信息類型多樣數(shù)字量、模擬量、開關(guān)量傳送速度差別極大傳送方式不盡相同串行、并行編碼方式不同二進(jìn)制、BCD碼、ASCII碼……返回2/3/20235第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)什么是I/O接口(電路)?I/O接口是位于系統(tǒng)與外設(shè)間、用來(lái)協(xié)助完成數(shù)據(jù)傳送和控制任務(wù)的邏輯電路PC機(jī)系統(tǒng)板的可編程接口芯片、I/O總線槽的電路板(適配器)都是接口電路CPU接口電路

I/O設(shè)備2/3/20236第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)控制總線CB地址總線ABI/O接口電路數(shù)據(jù)控制狀態(tài)數(shù)據(jù)總線DBCPU外設(shè)控制寄存器狀態(tài)寄存器數(shù)據(jù)寄存器2/3/20237第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1.1I/O端口編址方式

6.1輸入/輸出指令(1)統(tǒng)一編址:

I/O地址空間獨(dú)立于存儲(chǔ)地址空間如8086/8088(2)獨(dú)立編址: 它們共享一個(gè)地址空間 如M6800接口電路占用的I/O端口有兩類編排形式2/3/20238第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:⑴I/O端口單獨(dú)編址優(yōu)點(diǎn):I/O端口的地址空間獨(dú)立控制和地址譯碼電路相對(duì)簡(jiǎn)單專門的I/O指令使程序清晰易讀缺點(diǎn):I/O指令沒(méi)有存儲(chǔ)器指令豐富內(nèi)存空間I/O空間FFFFF0FFFF80x86采用I/O端口獨(dú)立編址2/3/20239第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:⑵I/O端口與存儲(chǔ)器統(tǒng)一編址優(yōu)點(diǎn):不需要專門的I/O指令I(lǐng)/O數(shù)據(jù)存取與存儲(chǔ)器數(shù)據(jù)存取一樣靈活缺點(diǎn):I/O端口要占去部分存儲(chǔ)器地址空間程序不易閱讀(不易分清訪存和訪問(wèn)外設(shè))內(nèi)存部分I/O部分存儲(chǔ)器空間00000FFFFF2/3/202310第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1.2輸入/輸出指令

6.1輸入/輸出指令輸入指令(IN:將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的AL/AX)INAL,PORT ;字節(jié)輸入INAL,DX ;字節(jié)輸入INAX,PORT ;字輸入INAX,DX ;字輸入輸出指令(OUT:將CPU內(nèi)的AL/AX數(shù)據(jù)傳送給外設(shè))OUTPORT,AL ;字節(jié)輸出OUTDX,AL ;字節(jié)輸出OUTPORT,AX ;字輸出OUTDX,AX ;字輸出2/3/202311第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)8088/8086的端口有64K個(gè),無(wú)需分段,設(shè)計(jì)有兩種尋址方式直接尋址:只用于尋址00H~FFH前256個(gè)端口,操作數(shù)i8表示端口號(hào)間接尋址:可用于尋址全部64K個(gè)端口,DX寄存器的值就是端口號(hào)對(duì)大于FFH的端口只能采用間接尋址方式2/3/202312第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:IN指令實(shí)例(從20H端口輸入一個(gè)字);方法1:直接尋址,字量輸入

inax,20h;方法2:間接尋址,字量輸入

movdx,20h

inax,dx2/3/202313第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:OUT指令實(shí)例(向300H端口輸出一個(gè)字節(jié));唯一的方法:間接尋址,字節(jié)量輸出

mov

al,bvar

;bvar是字節(jié)變量

movdx,300h

outdx,al2/3/202314第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1.3

I/O端口尋址方式

6.1輸入/輸出指令1.直接I/O端口尋址方式這種尋址方式就是直接書寫端口地址,由于這種尋址方式的指令編碼是兩字節(jié)的,其中第一字節(jié)是操作碼,第二字節(jié)存放端口地址。所以這種尋址方式僅能對(duì)256個(gè)8位或16位端進(jìn)行輸入/輸出。例如:

INAL,nINAX,nOUTn,ALOUTn,AX其中,n=0~255

2/3/202315第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1.3

I/O端口尋址方式

6.1輸入/輸出指令

2.間接I/O端口尋址方式這種尋址方式是用寄存器DX表示端口地址。采用這種尋址方式的輸入/輸出指令是單字節(jié)編碼。由于DX是16位寄存器,所以這種尋址方式可對(duì)0~65535個(gè)端口地址進(jìn)行訪問(wèn):

INAL,DXINAX,DXOUT

DX,ALOUTDX,AX在程序設(shè)計(jì)中,這種尋址方式比較靈活。因?yàn)樵诔绦蛑校灰薷腄X的內(nèi)容就可以用同一條輸入/輸出指令去訪問(wèn)不同的端口,實(shí)現(xiàn)可變端口的輸入/輸出。2/3/202316第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1輸入/輸出指令6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計(jì)

6.4中斷傳送方式

6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式

2/3/202317第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式主機(jī)與外設(shè)之間的數(shù)據(jù)傳送(控制)方式有:●程序查詢傳送方式●程序中斷傳送方式●直接存儲(chǔ)器存取(DMA)方式●

I/O處理機(jī)方式(簡(jiǎn)稱IOP協(xié)處理機(jī)方式)。2/3/202318第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)1.查詢方式CPU需要先了解(查詢)外設(shè)的工作狀態(tài),然后在外設(shè)可以交換信息的情況下(就緒)實(shí)現(xiàn)數(shù)據(jù)輸入或輸出對(duì)多個(gè)外設(shè)的情況,則CPU按一定順序依次查詢(輪詢)。先查詢的外設(shè)將優(yōu)先進(jìn)行數(shù)據(jù)交換查詢傳送的特點(diǎn)是:工作可靠,適用面寬,但傳送效率低2/3/202319第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)查詢傳送的兩個(gè)環(huán)節(jié)⑴查詢環(huán)節(jié)尋址狀態(tài)口讀取狀態(tài)寄存器的標(biāo)志位若不就緒就繼續(xù)查詢,直至就緒⑵傳送環(huán)節(jié)尋址數(shù)據(jù)口是輸入,通過(guò)輸入指令從數(shù)據(jù)端口讀入數(shù)據(jù)是輸出,通過(guò)輸出指令向數(shù)據(jù)端口輸出數(shù)據(jù)輸入狀態(tài)就緒?數(shù)據(jù)交換YN流程2/3/202320第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)2.程序中斷傳送方式CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預(yù)先安排好的中斷服務(wù)程序;服務(wù)結(jié)束后,又返回原來(lái)的斷點(diǎn),繼續(xù)執(zhí)行原來(lái)的程序2/3/202321第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)主程序與中斷服務(wù)程序主程序?qū)ν庠O(shè)進(jìn)行處理IRET中斷服務(wù)程序斷點(diǎn)中斷請(qǐng)求中斷請(qǐng)求可以來(lái)自處理器外部的中斷源,也可以由處理器執(zhí)行指令引起:例如執(zhí)行INTi8指令。繼續(xù)執(zhí)行流程2/3/202322第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:

中斷傳送中斷傳送是一種效率更高的程序傳送方式進(jìn)行傳送的中斷服務(wù)程序是預(yù)先設(shè)計(jì)好的中斷請(qǐng)求是外設(shè)隨機(jī)向CPU提出的CPU對(duì)請(qǐng)求的檢測(cè)是有規(guī)律的:一般是在每條指令的最后一個(gè)時(shí)鐘周期采樣中斷請(qǐng)求輸入引腳本書主要論述中斷在輸入和輸出方面的應(yīng)用中斷還有著非常廣泛的應(yīng)用2/3/202323第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)3.直接存儲(chǔ)器存取(DMA)傳送方式希望克服程序控制傳送的不足:外設(shè)→CPU→存儲(chǔ)器外設(shè)←CPU←存儲(chǔ)器直接存儲(chǔ)器存取DMA:外設(shè)→存儲(chǔ)器外設(shè)←存儲(chǔ)器CPU釋放總線,由DMA控制器管理2/3/202324第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:DMA傳送的工作過(guò)程⑴CPU對(duì)DMA控制器進(jìn)行初始化設(shè)置⑵外設(shè)、DMAC和CPU三者通過(guò)應(yīng)答信號(hào)建立聯(lián)系:CPU將總線交給DMAC控制⑶DMA傳送DMA讀存儲(chǔ)器:存儲(chǔ)器→外設(shè)DMA寫存儲(chǔ)器:存儲(chǔ)器←外設(shè)⑷自動(dòng)增減地址和計(jì)數(shù),判斷傳送完成否2/3/202325第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:DMA傳送流程HLDA發(fā)存儲(chǔ)器地址傳送數(shù)據(jù)傳送結(jié)束?DMA結(jié)束修改地址指針流程2/3/202326第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:傳送方式的比較無(wú)條件傳送:慢速外設(shè)需與CPU保持同步查詢傳送:簡(jiǎn)單實(shí)用,效率較低中斷傳送:外設(shè)主動(dòng),可與CPU并行工作,但每次傳送需要大量額外時(shí)間開銷DMA傳送:DMAC控制,外設(shè)直接和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送,適合大量、快速數(shù)據(jù)傳送2/3/202327第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式圖6.2主機(jī)與外設(shè)間傳送的信息2/3/202328第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)C

P

U打

機(jī)

器打印機(jī)DBSTBBUSYCB

DB

AB圖

打印機(jī)連接示意圖

【例】向打印機(jī)輸出字符。6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式2/3/202329第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1輸入/輸出指令第6章輸入/輸出程序設(shè)計(jì)

6.4中斷傳送方式

6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式

6.3程序查詢傳送方式

第十八講2/3/202330第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.3程序查詢傳送方式

問(wèn)題分析:發(fā)送給打印機(jī)的字符,暫存于控制器中的數(shù)據(jù)鎖存器。打印機(jī)的狀態(tài)存放在控制器的緩沖器中,使用查詢方式控制打印過(guò)程時(shí),在每把一個(gè)字符送到控制器后,都要先查詢打印機(jī)的狀態(tài)信息是否為忙(BUSY為0)。如不忙,則發(fā)送選通信號(hào),啟動(dòng)打印機(jī)取走字符并打印。若為忙,則重新查詢,直到不忙時(shí)為止。例6.1

輸出字符至打印機(jī)。設(shè)打印機(jī)控制器有3個(gè)端出:數(shù)據(jù)端口的端口地址為378H,狀態(tài)端口地址為379H,控制端口地址為37AH。在PC機(jī)中,打印機(jī)通過(guò)打印控制器與CPU連接。2/3/202331第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)程序如下:

MOVBX,OFFSETBUFFERMOVCX,COUNTBG:MOVAL,[BX];取字符

MOVDX,378HOUTDX,AL

;輸出字符到控制器

MOVDX,379HWT:INAL,DX;讀入打印機(jī)狀態(tài)

TESTAL,80H;判忙否

JZWT

MOVDX,37AHMOVAL,0DH;令打印機(jī)打印字符

OUTDX,ALMOVAL,0CHOUTDX,ALINCBX;指向下一個(gè)輸出字符

LOOPBG6.3程序查詢傳送方式

2/3/202332第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例2:采用查詢方式的打印字符程序BUSY

DATA0~78255APC7PC2PA0~PA7打印機(jī)STROBE2/3/202333第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:打印機(jī)接口的信號(hào)與時(shí)序BUSYDATA0~7ACKSTROBE主機(jī)把數(shù)據(jù)送給引腳DATA0~DATA7同時(shí)送出數(shù)據(jù)選通信號(hào)STROBE*打印機(jī)在BUSY信號(hào)線上發(fā)出忙信號(hào)打印機(jī)處理好輸入的數(shù)據(jù)時(shí)撤消忙信號(hào)同時(shí)又送出一個(gè)響應(yīng)信號(hào)ACK*2/3/202334第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例2:(續(xù));8255A初始化

mov

dx,0fffeh

;控制端口地址:FFFEH

moval,10000001b

;方式控制字:91H

outdx,al

;A端口方式0輸出,C端口上輸出、下輸入

moval,00001111b;端口C的復(fù)位置位控制字,使PC7=1

outdx,al;打印子程序:查詢Printcproc

pushaxpushdxprn:mov

dx,0fffch

;讀取端口C

inal,dx

;查詢打印機(jī)狀態(tài)

andal,04h

;PC2=BUSY=0?

jnz

prn

;PC2=1,打印機(jī)忙,則循環(huán)等待2/3/202335第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例2:(續(xù));打印子程序:輸出

mov

dx,0fff8h

;PC2=0,打印機(jī)不忙,則輸出數(shù)據(jù)

moval,ahoutdx,al;將打印數(shù)據(jù)從端口A輸出

:打印子程序:打印

mov

dx,0fffeh

;從PC7送出控制低脈沖

moval,00001110B

;置STROBE*=0outdx,al

nop

;產(chǎn)生一定寬度的低電平

nop

moval,00001111B

;置STROBE*=1outdx,al;最終,STROBE*產(chǎn)生低脈沖信號(hào)

popdxpopaxretprintc

endp2/3/202336第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)問(wèn)題分析:為了采集具有8個(gè)模擬量輸入的數(shù)據(jù),通過(guò)端口4的低3位的值選通模擬量IN0,IN1至IN7中的一個(gè),使其通過(guò)多路開關(guān)把一個(gè)被選擇的模擬量送至A/D轉(zhuǎn)換器。

A/D轉(zhuǎn)換器的啟停則由端口4的D4位加以控制,若D4=1,則啟動(dòng)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換;若D4=0,使A/D轉(zhuǎn)換器停止轉(zhuǎn)換。

A/D轉(zhuǎn)換器的狀態(tài)信號(hào)EOC是由端口2的D0位輸入CPU的,A/D轉(zhuǎn)換后的數(shù)字量由端口3送入CPU。因此,端口4為控制端口,端口2為狀態(tài)端口,端口3為數(shù)據(jù)端口。6.3程序查詢傳送方式

例6.2采用程序查詢的數(shù)據(jù)采集程序。2/3/202337第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.3程序查詢傳送方式

DATASEGMENTBUFFDB8DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDL,10H;設(shè)置AD啟動(dòng)轉(zhuǎn)換

MOVDI,OFFSETBUFF;DI指向輸入緩沖區(qū)

MOVCX,8AGAIN:MOVAL,DLANDAL,0EFH;使端口4的D4為0OUT4,AL;停止A/D轉(zhuǎn)換

CALLDELAY;延時(shí)等待A/D停止操作

MOVAL,DLOUT4,AL

程序如下所示。2/3/202338第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.3程序查詢傳送方式

A1:INAL,2;讀入狀態(tài)

TESTAL,01H;將EOC送CFJZA1;為0,則未推備好

INAL,3;讀入一個(gè)A/D轉(zhuǎn)換值

MOV[DI],AL INCDI INCDL;選擇下一個(gè)模擬量

LOOPAGAIN MOVAH,4CH INT21H CODEENDSENDSTART2/3/202339第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.1輸入/輸出指令6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計(jì)

6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式

6.4中斷傳送方式

2/3/202340第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

8088的中斷系統(tǒng)采用向量中斷機(jī)制能夠處理256個(gè)中斷用中斷向量號(hào)0~255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實(shí)現(xiàn)優(yōu)先權(quán)管理2/3/202341第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.48086的中斷分類非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯(cuò)誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源

INTA內(nèi)部中斷除法錯(cuò)中斷指令中斷溢出中斷單步中斷外部中斷非屏蔽中斷可屏蔽中斷2/3/202342第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)1.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時(shí)異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用2/3/202343第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑴

除法錯(cuò)中斷在執(zhí)行除法指令時(shí),若除數(shù)為0或商超過(guò)了寄存器所能表達(dá)的范圍,則產(chǎn)生一個(gè)向量號(hào)為0的內(nèi)部中斷,稱為除法錯(cuò)中斷例如:movbl,0idiv

bl

;除數(shù)BL=0,產(chǎn)生除法錯(cuò)中斷movax,200hmovbl,1divbl

;商=200H,不能用AL表達(dá) ;產(chǎn)生除法錯(cuò)中斷2/3/202344第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑵

指令中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時(shí)產(chǎn)生的一個(gè)向量號(hào)為n(0~255)的內(nèi)部中斷,稱為指令中斷其中向量號(hào)為3的指令中斷比較特別(生成一個(gè)字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點(diǎn)中斷例如:DEBUG.EXE調(diào)試程序的運(yùn)行命令G設(shè)置的斷點(diǎn),就是利用INT3指令實(shí)現(xiàn)的2/3/202345第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑶

溢出中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時(shí),若溢出標(biāo)志OF為1,則產(chǎn)生一個(gè)向量號(hào)為4的內(nèi)部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into ;因?yàn)镺F=1,所以產(chǎn)生溢出中斷2/3/202346第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑷

單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個(gè)向量號(hào)為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實(shí)現(xiàn)對(duì)程序的單步調(diào)試2/3/202347第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)2.外部中斷外部中斷是由于8088外部提出中斷請(qǐng)求引起的程序中斷利用外部中斷,微機(jī)系統(tǒng)可以實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請(qǐng)求,能夠及時(shí)處理外部意外或緊急事件外部中斷的原因是處理器外部隨機(jī)產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)2/3/202348第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑴

非屏蔽中斷通過(guò)非屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷請(qǐng)求,微處理器無(wú)法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個(gè)中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號(hào)為2,非屏蔽中斷請(qǐng)求信號(hào)為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調(diào)電前的數(shù)據(jù)保護(hù)存儲(chǔ)器讀寫錯(cuò)誤的處理2/3/202349第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)⑵

可屏蔽中斷外部通過(guò)可屏蔽中斷請(qǐng)求信號(hào)向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時(shí)輸出可屏蔽中斷響應(yīng)信號(hào),這個(gè)中斷就是可屏蔽中斷8088的可屏蔽中斷請(qǐng)求和響應(yīng)信號(hào)分別是INTR和INTA*;由IF標(biāo)志控制可屏蔽中斷是否允許響應(yīng);向量號(hào)來(lái)自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機(jī)與外設(shè)交換數(shù)據(jù)2/3/202350第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:中斷標(biāo)志IF的狀態(tài)IF=0:可屏蔽中斷不會(huì)被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個(gè)中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會(huì)被響應(yīng)開中斷、允許中斷、中斷開放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標(biāo)志的狀態(tài)是關(guān)鍵2/3/202351第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:8088的中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個(gè)中斷向量的低字是偏移地址、高字是段地址,需占用4個(gè)字節(jié)8088微處理器從物理地址000H開始,依次安排各個(gè)中斷向量,向量號(hào)也從0開始256個(gè)中斷占用1KB區(qū)域,就形成中斷向量表向量號(hào)為N的中斷向量的物理地址=N×42/3/202352第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:

中斷過(guò)程N(yùn)MIN軟件中斷INTRTF=1中斷響應(yīng)周期讀中斷向量號(hào)下條指令現(xiàn)行指令I(lǐng)F=1NNNNYYYYY查詢中斷的順序,決定了各種中斷源的優(yōu)先權(quán)軟件中斷除法錯(cuò)中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低2/3/202353第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:中斷過(guò)程(續(xù))Y還有NMITEMP=1標(biāo)志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標(biāo)志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)8088各種中斷源的優(yōu)先權(quán),實(shí)際上是指被識(shí)別出來(lái)的先后多種中斷同時(shí)請(qǐng)求時(shí),最先響應(yīng)的則可能是單步中斷或NMI中斷2/3/202354第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:

內(nèi)部中斷服務(wù)程序編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似利用過(guò)程定義偽指令PROC/ENDP第1條指令通常為開中斷指令STI最后用中斷返回指令I(lǐng)RET通常采用寄存器傳遞參數(shù)主程序需要調(diào)用中斷服務(wù)程序調(diào)用前,需要設(shè)置中斷向量設(shè)置必要的入口參數(shù)利用INTn指令調(diào)用中斷服務(wù)程序處理出口參數(shù)2/3/202355第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:內(nèi)部中斷服務(wù)程序編寫80H號(hào)中斷服務(wù)程序,并調(diào)用功能:具有顯示以“0”結(jié)尾字符串的功能,利用顯示器功能調(diào)用INT10H實(shí)現(xiàn)字符顯示字符串緩沖區(qū)首地址為入口參數(shù):

DS:DX(段地址:偏移地址)傳遞參數(shù)2/3/202356第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的數(shù)據(jù)段;數(shù)據(jù)段intoff

dw? ;用于保存偏移地址intseg

dw? ;用于保存段基地址intmsg db‘AInstructionInterrupt!’,0dh,0ah,0以“0”結(jié)尾回車、換行2/3/202357第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的獲取原中斷向量;代碼段movax,3580h ;利用DOS功能35H號(hào)int21h ;獲取原80H中斷向量mov

intoff,bx

;保存偏移地址mov

intseg,es

;保存段基地址獲取中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=35H入口參數(shù):AL=中斷向量號(hào)出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)2/3/202358第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的設(shè)置新中斷向量pushdsmov

dx,offsetnew80h ;取中斷程序偏移地址mov

ax,segnew80h ;取中斷程序段地址mov

ds,axmovax,2580hint21hpopds設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=25H入口參數(shù):AL=中斷向量號(hào)DS:DX=中斷向量(段地址:偏移地址)說(shuō)明:也可以按照課本的方法來(lái)設(shè)置自己的中斷功能。2/3/202359第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的中斷調(diào)用;設(shè)置入口參數(shù): DS=段地址(已設(shè)置)

DX=偏移地址mov

dx,offset

intmsg

int80h

;調(diào)用80H中斷服務(wù)程序AInstructionInterrupt!程序功能2/3/202360第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的主程序返回mov

dx,intoff

;恢復(fù)原中斷向量mov

ax,intsegmov

ds,ax

;改變DSmovax,2580hint21h ;因緊接著返回DOSmovax,4c00h ;故無(wú)需恢復(fù)DSint21h設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號(hào):AH=25H入口參數(shù):AL=中斷向量號(hào)DS:DX=中斷向量(段地址:偏移地址)2/3/202361第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的中斷服務(wù)程序(1);80H號(hào)內(nèi)部中斷服務(wù)程序:;顯示字符串(以“0”結(jié)尾);入口參數(shù):DS:DX=緩沖器首地址new80h proc

;過(guò)程定義

sti

;開中斷

pushax

;保護(hù)寄存器

pushbx pushsi2/3/202362第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的中斷服務(wù)程序(2)

mov

si,dxnew1: mov

al,[si] ;讀取欲一個(gè)顯示字符

cmpal,0 ;為結(jié)尾“0”,則結(jié)束

jznew2

movbx,0 ;采用ROM-BIOS功能調(diào)用

movah,0eh

int10h incsi

;準(zhǔn)備顯示下一個(gè)字符

jmpnew12/3/202363第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)第6章:例1:的中斷服務(wù)程序(3)new2: popsi

;恢復(fù)寄存器

popbx popax

iret

;中斷返回new80h endp

;過(guò)程(中斷服務(wù)程序)結(jié)束AInstructionInterrupt!程序功能2/3/202364第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.1中斷的概念

1.中斷的引入中斷功能已經(jīng)成為計(jì)算機(jī)不可缺少的組成部分。中斷的引入具有較多的優(yōu)點(diǎn):(1)分時(shí)操作(2)實(shí)現(xiàn)實(shí)時(shí)處理(3)故障處理2/3/202365第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)3.中斷系統(tǒng)的功能6.4中斷傳送方式

6.4.1中斷的概念實(shí)現(xiàn)中斷及返回(2)實(shí)現(xiàn)優(yōu)先級(jí)處理(3)中斷嵌套2.中斷源引起中斷的原因或能發(fā)出中斷申請(qǐng)的來(lái)源,稱為中斷源。通常中斷源有以下4種:(1)輸入/輸出設(shè)備(2)實(shí)時(shí)時(shí)鐘(3)故障源(4)為調(diào)試程序而設(shè)置的中斷源2/3/202366第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

1.中斷源非屏蔽中斷請(qǐng)求中斷邏輯軟中斷溢出中斷單步中斷除法錯(cuò)誤2n014CPUNMIIR00IR10IR20IR30IR40IR50IR60IR70825908系統(tǒng)定時(shí)器09鍵盤0ACRT0B保留(通訊)0C串行通訊0D保留(ALT)0E軟盤0F保留(打印機(jī))INTR2/3/202367第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)8086中斷的分類:內(nèi)部中斷和硬件中斷(1)內(nèi)部中斷內(nèi)部中斷簡(jiǎn)稱內(nèi)中斷,又稱軟件中斷。它不需要外部硬件支持。并且不受中斷標(biāo)志位狀態(tài)的影響。8086/8088內(nèi)部中斷有以下5種:

除數(shù)為0中斷——類型0中斷

溢出中斷——類型4中斷單步中斷——類型1中斷

斷點(diǎn)中斷——類型3中斷

中斷指令——指令I(lǐng)NTn中斷由cpu的某些錯(cuò)誤引起為調(diào)試程序而設(shè)置的中斷6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202368第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

(2)硬件中斷:來(lái)自處理機(jī)的外條件所以又稱外中斷

硬件中斷主要有兩種來(lái)源——非屏蔽中斷NMI和可屏蔽中斷INTR。?非屏蔽中斷NMI。非屏蔽中斷來(lái)源于三方:系統(tǒng)板的RAM在讀寫時(shí)產(chǎn)生奇偶校驗(yàn)錯(cuò);

I/O通道中的擴(kuò)展選件出現(xiàn)奇偶校驗(yàn)錯(cuò);協(xié)處理器8087的異常狀態(tài)產(chǎn)生的中斷。?可屏蔽中斷INTR。由外部設(shè)備通過(guò)一片8259A產(chǎn)生的中斷請(qǐng)求。2/3/202369第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)外部設(shè)備向cpu發(fā)出中斷請(qǐng)求,cpu是否相應(yīng)還與IF有關(guān)STI——開中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF置1,允許CPU響應(yīng)來(lái)自INTR引腳的中斷請(qǐng)求CLI——關(guān)中斷指令將標(biāo)志寄存器中的中斷標(biāo)志位IF清0,使CPU不響應(yīng)來(lái)自INTR引腳的中斷請(qǐng)求6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

從外設(shè)發(fā)出的中斷請(qǐng)求到cpu相應(yīng)中斷,用兩個(gè)控制條件起決定作用:1)外設(shè)的中斷請(qǐng)求是否被屏蔽,2)cpu是否允許相應(yīng)中斷。2/3/202370第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)2.中斷矢量表6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

●中斷向量表在8086系統(tǒng)中,內(nèi)存最低端的1K字節(jié)地址范圍內(nèi)(從00000-003FFH),放置256個(gè)中斷的中斷向量(入口地址),即稱為中斷向量表。每個(gè)中斷矢量在表中占據(jù)4個(gè)字節(jié),地址較高的兩個(gè)字節(jié)放入口地址的段地址,地址較低的兩個(gè)字節(jié)放偏移地址。中斷向量表中的存儲(chǔ)地址=中斷類型碼n×42/3/202371第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)●中斷類型號(hào)的獲取凡與0~5號(hào)中斷類型號(hào)對(duì)應(yīng)的中斷請(qǐng)求,一旦被響應(yīng),系統(tǒng)將自動(dòng)提供中斷類型號(hào),并自動(dòng)地轉(zhuǎn)到中斷處理程序中去。對(duì)于可屏蔽的外部中斷INTR,則是經(jīng)過(guò)中斷控制器8259,在CPU中斷響應(yīng)的第二個(gè)周期,通過(guò)中斷響應(yīng)信號(hào),將對(duì)應(yīng)的中斷類型號(hào)送至數(shù)據(jù)總線。內(nèi)部中斷是通過(guò)INTn指令將中斷號(hào)直接發(fā)送給CPU。6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202372第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)用指令來(lái)為中斷類型N設(shè)置中斷向量:MOV AX,0MOV ES,AXMOV BX,N*4;中斷入口地址MOV AX,OFFSETINTHANDMOV ES:WORDPRT[BX],AX ;設(shè)置中斷處理程序INTHANDMOV AX,SEGINTHAND ;的入口地址MOV ES:WORDPRT[BX+2],AX

┆INTHAND: ;中斷處理程序

IRET

●用戶可以為保留的中斷類型號(hào)擴(kuò)充自己的需要的中斷功能,對(duì)新增加的中斷功能要在中斷向量表中建立相應(yīng)的中斷向量。6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202373第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

●用戶在編寫自己的中斷處理程序代替系統(tǒng)中的某個(gè)中斷處理功能時(shí),要注意保留原來(lái)的中斷向量。程序結(jié)束時(shí),要恢復(fù)原來(lái)的中斷向量??梢允褂胐os功能調(diào)用來(lái)存取中斷向量取中斷向量預(yù)置AH=35H,AL=中斷類型號(hào)執(zhí)行INT21H——把類型號(hào)為AL的中斷向量取出到ES:BX中設(shè)置中斷向量預(yù)置AH=25H,AL=中斷類型號(hào),DS:DX=中斷向量執(zhí)行INT21H——把DS:DX指向的中斷向量放置到中斷向量表中類型號(hào)為AL的中斷向量處說(shuō)明:也可以按照課本的方法來(lái)設(shè)置自己的中斷功能。2/3/202374第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)3.中斷處理程序結(jié)構(gòu)6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

中斷處理程序的結(jié)構(gòu)與子程序(即過(guò)程)相似,可用定義過(guò)程的方式來(lái)定義中斷處理程序。所有編寫過(guò)程的一些規(guī)定和要求均適用于中斷處理程序,包括用偽指令PROC/ENDP定義過(guò)程為遠(yuǎn)類型。中斷處理程序的典型結(jié)構(gòu)

(1)現(xiàn)場(chǎng)保護(hù)(2)中斷返回(3)中斷嵌套(4)發(fā)中斷結(jié)束命令

2/3/202375第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)例6.4中斷處理程序的一般結(jié)構(gòu)的程序如下。INTPRGPROCFARSTIPUSHDSPUSHDXPUSHAXPUSHBXSTI;開中斷

CLI;關(guān)中斷

MOVAL,20H;發(fā)中斷結(jié)束命令EOIOUT20H,ALPOPDI;恢復(fù)現(xiàn)場(chǎng)

POPBXPOPAXPOPDXPOPDSIRET;中斷返回

INTPRGENDP由于IRET將恢復(fù)中斷前的標(biāo)志,故IF也被恢復(fù)。6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202376第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)4.用戶軟中斷的設(shè)置6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

通常增加一個(gè)新的軟中斷,應(yīng)完成下面一些操作。·選擇一個(gè)可用的中斷類型號(hào)n?!ぞ帉懶碌能浿袛嗵幚沓绦?。·將新的軟中斷處理程序的入口地址寫入到中斷矢量表的4×n起的4個(gè)字節(jié)中。

2/3/202377第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)程序如下:DATASEGMENTMESSDB‘Thisisanexampleaboutsoftinterrupt.$’ERRDB0AH,ODH,’ERROR!$’DATAENDSEXTRNINT4AHFARCODESEGMENTASSUMECS:CODE,DS:DATABG:MOVAX,SEGINT4AH;添加中斷矢量表例6.5

利用空閑中斷類型號(hào)4AH實(shí)現(xiàn)軟中斷設(shè)置。6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202378第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

MOVDS,AXMOVDX,OFFSETINT4AHMOVAX,254AH;置AH為25H,AL為4AHINT21HMOVAX,DATAMOVDS,AXMOVAX,OFFSETMESSINT4AHCMPAH,0FFH;判超過(guò)256個(gè)字符否

JEER;超過(guò)轉(zhuǎn)ERMOVAH,4CHINT21HER:LEADX,ERR;顯示錯(cuò)誤信息

MOVAH,9INT21HMOVAH,4CHINT21HCODEENDS

ENDBG2/3/202379第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)INT4AH處理程序如下所示。CSEGSEGMENTASSUMECS:CSEGPUBLICINT4AHINT4AHPROCFARPUSHDX;保護(hù)現(xiàn)場(chǎng)

PUSHCXPUSHSIMOVCX,0;CX為字符數(shù)計(jì)數(shù)器

MOVSI,AX;SI為字符串首地址LP:MOVAL,[SI]CMPAL,‘$’;判是否是字符串尾

JZOVERMOVDL,AL;顯示字符

MOVAH,2INT21HINCSIINCCX;字符計(jì)數(shù)

JMPLP6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202380第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)OVER:MOVAX,CXCMPAH,0JEDONE;未超過(guò)256字符

MOVAH,0FFH;超過(guò)256字符DONE:POPSI;恢復(fù)現(xiàn)場(chǎng)

POPCXPOPDXIRET;中斷返回

INT4AHENDPCSEGENDSEND6.4中斷傳送方式

6.4.28088/8086中斷系統(tǒng)

2/3/202381第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.3中斷傳送方式程序舉例問(wèn)題分析:·本例利用中斷方式編寫中斷處理程序,類型為70H,實(shí)現(xiàn)打印機(jī)輸出功能?!び捎诰帉懙氖?0H類型的軟中斷,因而應(yīng)在主程序中將處理程序的入口地址寫入中斷矢量表中,然后利用INT70H便進(jìn)入軟中斷,執(zhí)行中斷處理程序。例6.6

設(shè)打印機(jī)的數(shù)據(jù)端口地址為378H,狀態(tài)端口地址為379H,狀態(tài)D7為0時(shí)則忙,控制端口地址為37AH。當(dāng)打印機(jī)不工作在中斷方式時(shí),控制字為0CH,表示可對(duì)打印機(jī)進(jìn)行讀取和輸出,啟動(dòng)打印機(jī),向打印機(jī)送數(shù)據(jù)。當(dāng)控制字為0DH,給打印機(jī)送數(shù)據(jù).選通位置1。2/3/202382第1章匯編語(yǔ)言基礎(chǔ)知識(shí)6章輸入/輸出程序設(shè)計(jì)6.4中斷傳送方式

6.4.3中斷傳送方式程序舉例SSEGSEGMENTSTACKDW100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEGPRINTO PROCFARSTI PUSHESPUSHDI

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論