版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
8086/8088和ARM核匯編語言程序設(shè)計第6章輸入/輸出程序設(shè)計
教學(xué)要求
1.了解I/O設(shè)備的數(shù)據(jù)傳送方式
2.掌握I/O程序的設(shè)計方法2/3/20231第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1輸入/輸出指令6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計
6.4中斷傳送方式
2/3/20232第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計中央處理機
CPU總線控制邏輯接口接口存儲器大容量存儲器I/O設(shè)備I/O子系統(tǒng)系統(tǒng)總線......2/3/20233第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計為什么需要I/O接口(電路)?微機的外部設(shè)備多種多樣工作原理、驅(qū)動方式、信息格式、以及工作速度方面彼此差別很大它們不能與CPU直接相連必須經(jīng)過中間電路再與系統(tǒng)相連這部分電路被稱為I/O接口電路多種外設(shè)2/3/20234第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計多種多樣的外設(shè)工作原理不同機械、電子、機電、電磁……傳送信息類型多樣數(shù)字量、模擬量、開關(guān)量傳送速度差別極大傳送方式不盡相同串行、并行編碼方式不同二進制、BCD碼、ASCII碼……返回2/3/20235第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計什么是I/O接口(電路)?I/O接口是位于系統(tǒng)與外設(shè)間、用來協(xié)助完成數(shù)據(jù)傳送和控制任務(wù)的邏輯電路PC機系統(tǒng)板的可編程接口芯片、I/O總線槽的電路板(適配器)都是接口電路CPU接口電路
I/O設(shè)備2/3/20236第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計控制總線CB地址總線ABI/O接口電路數(shù)據(jù)控制狀態(tài)數(shù)據(jù)總線DBCPU外設(shè)控制寄存器狀態(tài)寄存器數(shù)據(jù)寄存器2/3/20237第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1.1I/O端口編址方式
6.1輸入/輸出指令(1)統(tǒng)一編址:
I/O地址空間獨立于存儲地址空間如8086/8088(2)獨立編址: 它們共享一個地址空間 如M6800接口電路占用的I/O端口有兩類編排形式2/3/20238第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:⑴I/O端口單獨編址優(yōu)點:I/O端口的地址空間獨立控制和地址譯碼電路相對簡單專門的I/O指令使程序清晰易讀缺點:I/O指令沒有存儲器指令豐富內(nèi)存空間I/O空間FFFFF0FFFF80x86采用I/O端口獨立編址2/3/20239第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:⑵I/O端口與存儲器統(tǒng)一編址優(yōu)點:不需要專門的I/O指令I(lǐng)/O數(shù)據(jù)存取與存儲器數(shù)據(jù)存取一樣靈活缺點:I/O端口要占去部分存儲器地址空間程序不易閱讀(不易分清訪存和訪問外設(shè))內(nèi)存部分I/O部分存儲器空間00000FFFFF2/3/202310第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計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章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計8088/8086的端口有64K個,無需分段,設(shè)計有兩種尋址方式直接尋址:只用于尋址00H~FFH前256個端口,操作數(shù)i8表示端口號間接尋址:可用于尋址全部64K個端口,DX寄存器的值就是端口號對大于FFH的端口只能采用間接尋址方式2/3/202312第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:IN指令實例(從20H端口輸入一個字);方法1:直接尋址,字量輸入
inax,20h;方法2:間接尋址,字量輸入
movdx,20h
inax,dx2/3/202313第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:OUT指令實例(向300H端口輸出一個字節(jié));唯一的方法:間接尋址,字節(jié)量輸出
mov
al,bvar
;bvar是字節(jié)變量
movdx,300h
outdx,al2/3/202314第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1.3
I/O端口尋址方式
6.1輸入/輸出指令1.直接I/O端口尋址方式這種尋址方式就是直接書寫端口地址,由于這種尋址方式的指令編碼是兩字節(jié)的,其中第一字節(jié)是操作碼,第二字節(jié)存放端口地址。所以這種尋址方式僅能對256個8位或16位端進行輸入/輸出。例如:
INAL,nINAX,nOUTn,ALOUTn,AX其中,n=0~255
2/3/202315第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1.3
I/O端口尋址方式
6.1輸入/輸出指令
2.間接I/O端口尋址方式這種尋址方式是用寄存器DX表示端口地址。采用這種尋址方式的輸入/輸出指令是單字節(jié)編碼。由于DX是16位寄存器,所以這種尋址方式可對0~65535個端口地址進行訪問:
INAL,DXINAX,DXOUT
DX,ALOUTDX,AX在程序設(shè)計中,這種尋址方式比較靈活。因為在程序中,只要修改DX的內(nèi)容就可以用同一條輸入/輸出指令去訪問不同的端口,實現(xiàn)可變端口的輸入/輸出。2/3/202316第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1輸入/輸出指令6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計
6.4中斷傳送方式
6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式
2/3/202317第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式主機與外設(shè)之間的數(shù)據(jù)傳送(控制)方式有:●程序查詢傳送方式●程序中斷傳送方式●直接存儲器存取(DMA)方式●
I/O處理機方式(簡稱IOP協(xié)處理機方式)。2/3/202318第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計1.查詢方式CPU需要先了解(查詢)外設(shè)的工作狀態(tài),然后在外設(shè)可以交換信息的情況下(就緒)實現(xiàn)數(shù)據(jù)輸入或輸出對多個外設(shè)的情況,則CPU按一定順序依次查詢(輪詢)。先查詢的外設(shè)將優(yōu)先進行數(shù)據(jù)交換查詢傳送的特點是:工作可靠,適用面寬,但傳送效率低2/3/202319第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計查詢傳送的兩個環(huán)節(jié)⑴查詢環(huán)節(jié)尋址狀態(tài)口讀取狀態(tài)寄存器的標志位若不就緒就繼續(xù)查詢,直至就緒⑵傳送環(huán)節(jié)尋址數(shù)據(jù)口是輸入,通過輸入指令從數(shù)據(jù)端口讀入數(shù)據(jù)是輸出,通過輸出指令向數(shù)據(jù)端口輸出數(shù)據(jù)輸入狀態(tài)就緒?數(shù)據(jù)交換YN流程2/3/202320第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計2.程序中斷傳送方式CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預(yù)先安排好的中斷服務(wù)程序;服務(wù)結(jié)束后,又返回原來的斷點,繼續(xù)執(zhí)行原來的程序2/3/202321第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計主程序與中斷服務(wù)程序主程序?qū)ν庠O(shè)進行處理IRET中斷服務(wù)程序斷點中斷請求中斷請求可以來自處理器外部的中斷源,也可以由處理器執(zhí)行指令引起:例如執(zhí)行INTi8指令。繼續(xù)執(zhí)行流程2/3/202322第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:
中斷傳送中斷傳送是一種效率更高的程序傳送方式進行傳送的中斷服務(wù)程序是預(yù)先設(shè)計好的中斷請求是外設(shè)隨機向CPU提出的CPU對請求的檢測是有規(guī)律的:一般是在每條指令的最后一個時鐘周期采樣中斷請求輸入引腳本書主要論述中斷在輸入和輸出方面的應(yīng)用中斷還有著非常廣泛的應(yīng)用2/3/202323第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計3.直接存儲器存取(DMA)傳送方式希望克服程序控制傳送的不足:外設(shè)→CPU→存儲器外設(shè)←CPU←存儲器直接存儲器存取DMA:外設(shè)→存儲器外設(shè)←存儲器CPU釋放總線,由DMA控制器管理2/3/202324第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:DMA傳送的工作過程⑴CPU對DMA控制器進行初始化設(shè)置⑵外設(shè)、DMAC和CPU三者通過應(yīng)答信號建立聯(lián)系:CPU將總線交給DMAC控制⑶DMA傳送DMA讀存儲器:存儲器→外設(shè)DMA寫存儲器:存儲器←外設(shè)⑷自動增減地址和計數(shù),判斷傳送完成否2/3/202325第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:DMA傳送流程HLDA發(fā)存儲器地址傳送數(shù)據(jù)傳送結(jié)束?DMA結(jié)束修改地址指針流程2/3/202326第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:傳送方式的比較無條件傳送:慢速外設(shè)需與CPU保持同步查詢傳送:簡單實用,效率較低中斷傳送:外設(shè)主動,可與CPU并行工作,但每次傳送需要大量額外時間開銷DMA傳送:DMAC控制,外設(shè)直接和存儲器進行數(shù)據(jù)傳送,適合大量、快速數(shù)據(jù)傳送2/3/202327第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式圖6.2主機與外設(shè)間傳送的信息2/3/202328第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計C
P
U打
印
機
控
制
器打印機DBSTBBUSYCB
DB
AB圖
打印機連接示意圖
【例】向打印機輸出字符。6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式2/3/202329第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1輸入/輸出指令第6章輸入/輸出程序設(shè)計
6.4中斷傳送方式
6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式
6.3程序查詢傳送方式
第十八講2/3/202330第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.3程序查詢傳送方式
問題分析:發(fā)送給打印機的字符,暫存于控制器中的數(shù)據(jù)鎖存器。打印機的狀態(tài)存放在控制器的緩沖器中,使用查詢方式控制打印過程時,在每把一個字符送到控制器后,都要先查詢打印機的狀態(tài)信息是否為忙(BUSY為0)。如不忙,則發(fā)送選通信號,啟動打印機取走字符并打印。若為忙,則重新查詢,直到不忙時為止。例6.1
輸出字符至打印機。設(shè)打印機控制器有3個端出:數(shù)據(jù)端口的端口地址為378H,狀態(tài)端口地址為379H,控制端口地址為37AH。在PC機中,打印機通過打印控制器與CPU連接。2/3/202331第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計程序如下:
MOVBX,OFFSETBUFFERMOVCX,COUNTBG:MOVAL,[BX];取字符
MOVDX,378HOUTDX,AL
;輸出字符到控制器
MOVDX,379HWT:INAL,DX;讀入打印機狀態(tài)
TESTAL,80H;判忙否
JZWT
MOVDX,37AHMOVAL,0DH;令打印機打印字符
OUTDX,ALMOVAL,0CHOUTDX,ALINCBX;指向下一個輸出字符
LOOPBG6.3程序查詢傳送方式
2/3/202332第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例2:采用查詢方式的打印字符程序BUSY
DATA0~78255APC7PC2PA0~PA7打印機STROBE2/3/202333第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:打印機接口的信號與時序BUSYDATA0~7ACKSTROBE主機把數(shù)據(jù)送給引腳DATA0~DATA7同時送出數(shù)據(jù)選通信號STROBE*打印機在BUSY信號線上發(fā)出忙信號打印機處理好輸入的數(shù)據(jù)時撤消忙信號同時又送出一個響應(yīng)信號ACK*2/3/202334第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第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
;查詢打印機狀態(tài)
andal,04h
;PC2=BUSY=0?
jnz
prn
;PC2=1,打印機忙,則循環(huán)等待2/3/202335第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例2:(續(xù));打印子程序:輸出
mov
dx,0fff8h
;PC2=0,打印機不忙,則輸出數(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)生低脈沖信號
popdxpopaxretprintc
endp2/3/202336第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計問題分析:為了采集具有8個模擬量輸入的數(shù)據(jù),通過端口4的低3位的值選通模擬量IN0,IN1至IN7中的一個,使其通過多路開關(guān)把一個被選擇的模擬量送至A/D轉(zhuǎn)換器。
A/D轉(zhuǎn)換器的啟停則由端口4的D4位加以控制,若D4=1,則啟動A/D轉(zhuǎn)換器進行轉(zhuǎn)換;若D4=0,使A/D轉(zhuǎn)換器停止轉(zhuǎn)換。
A/D轉(zhuǎn)換器的狀態(tài)信號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章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.3程序查詢傳送方式
DATASEGMENTBUFFDB8DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDL,10H;設(shè)置AD啟動轉(zhuǎn)換
MOVDI,OFFSETBUFF;DI指向輸入緩沖區(qū)
MOVCX,8AGAIN:MOVAL,DLANDAL,0EFH;使端口4的D4為0OUT4,AL;停止A/D轉(zhuǎn)換
CALLDELAY;延時等待A/D停止操作
MOVAL,DLOUT4,AL
程序如下所示。2/3/202338第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.3程序查詢傳送方式
A1:INAL,2;讀入狀態(tài)
TESTAL,01H;將EOC送CFJZA1;為0,則未推備好
INAL,3;讀入一個A/D轉(zhuǎn)換值
MOV[DI],AL INCDI INCDL;選擇下一個模擬量
LOOPAGAIN MOVAH,4CH INT21H CODEENDSENDSTART2/3/202339第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.1輸入/輸出指令6.3程序查詢傳送方式第6章輸入/輸出程序設(shè)計
6.2CPU與外設(shè)傳送數(shù)據(jù)的控制方式
6.4中斷傳送方式
2/3/202340第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
8088的中斷系統(tǒng)采用向量中斷機制能夠處理256個中斷用中斷向量號0~255區(qū)別可屏蔽中斷還需要借助專用中斷控制器Intel8259A實現(xiàn)優(yōu)先權(quán)管理2/3/202341第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.48086的中斷分類非屏蔽中斷源中斷邏輯INTO指令單步中斷除法錯誤INTN指令CPUINTRNMI可屏蔽中斷源8259A中斷控制器IR0IR1IR2IR3IR4IR5IR6IR7外設(shè)中斷源
INTA內(nèi)部中斷除法錯中斷指令中斷溢出中斷單步中斷外部中斷非屏蔽中斷可屏蔽中斷2/3/202342第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計1.內(nèi)部中斷內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時異常情況的有效途徑例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用2/3/202343第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑴
除法錯中斷在執(zhí)行除法指令時,若除數(shù)為0或商超過了寄存器所能表達的范圍,則產(chǎn)生一個向量號為0的內(nèi)部中斷,稱為除法錯中斷例如:movbl,0idiv
bl
;除數(shù)BL=0,產(chǎn)生除法錯中斷movax,200hmovbl,1divbl
;商=200H,不能用AL表達 ;產(chǎn)生除法錯中斷2/3/202344第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑵
指令中斷在執(zhí)行中斷調(diào)用指令I(lǐng)NTn時產(chǎn)生的一個向量號為n(0~255)的內(nèi)部中斷,稱為指令中斷其中向量號為3的指令中斷比較特別(生成一個字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點中斷例如:DEBUG.EXE調(diào)試程序的運行命令G設(shè)置的斷點,就是利用INT3指令實現(xiàn)的2/3/202345第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑶
溢出中斷在執(zhí)行溢出中斷指令I(lǐng)NTO時,若溢出標志OF為1,則產(chǎn)生一個向量號為4的內(nèi)部中斷,被稱為溢出中斷例如:movax,2000haddax,7000h
;2000H+7000H=9000H,溢出:OF=1into ;因為OF=1,所以產(chǎn)生溢出中斷2/3/202346第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑷
單步中斷若單步中斷TF為1,則在每條指令執(zhí)行結(jié)束后產(chǎn)生一個向量號為1的內(nèi)部中斷,稱為單步中斷例如:DEBUG.EXE調(diào)試程序的單步命令T就利用單步中斷實現(xiàn)對程序的單步調(diào)試2/3/202347第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計2.外部中斷外部中斷是由于8088外部提出中斷請求引起的程序中斷利用外部中斷,微機系統(tǒng)可以實時響應(yīng)外部設(shè)備的數(shù)據(jù)傳送請求,能夠及時處理外部意外或緊急事件外部中斷的原因是處理器外部隨機產(chǎn)生的,所以是真正的中斷(Interrupt)內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)2/3/202348第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑴
非屏蔽中斷通過非屏蔽中斷請求信號向微處理器提出的中斷請求,微處理器無法禁止,將在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),這個中斷被稱為非屏蔽中斷8088的非屏蔽中斷的向量號為2,非屏蔽中斷請求信號為NMI非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如:電源調(diào)電前的數(shù)據(jù)保護存儲器讀寫錯誤的處理2/3/202349第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計⑵
可屏蔽中斷外部通過可屏蔽中斷請求信號向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當(dāng)前指令執(zhí)行結(jié)束予以響應(yīng),同時輸出可屏蔽中斷響應(yīng)信號,這個中斷就是可屏蔽中斷8088的可屏蔽中斷請求和響應(yīng)信號分別是INTR和INTA*;由IF標志控制可屏蔽中斷是否允許響應(yīng);向量號來自外部中斷控制器8088通常需要配合中斷控制器8259A共同處理可屏蔽中斷可屏蔽中斷主要用于主機與外設(shè)交換數(shù)據(jù)2/3/202350第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:中斷標志IF的狀態(tài)IF=0:可屏蔽中斷不會被響應(yīng)關(guān)中斷、禁止中斷、中斷屏蔽系統(tǒng)復(fù)位,使IF=0任何一個中斷被響應(yīng),使IF=0執(zhí)行指令CLI,使IF=0IF=1:可屏蔽中斷會被響應(yīng)開中斷、允許中斷、中斷開放執(zhí)行指令STI,使IF=1執(zhí)行指令I(lǐng)RET恢復(fù)原IF狀態(tài)明確IF標志的狀態(tài)是關(guān)鍵2/3/202351第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:8088的中斷向量表中斷向量:中斷服務(wù)程序的入口地址(首地址)邏輯地址含有段地址CS和偏移地址IP(32位)每個中斷向量的低字是偏移地址、高字是段地址,需占用4個字節(jié)8088微處理器從物理地址000H開始,依次安排各個中斷向量,向量號也從0開始256個中斷占用1KB區(qū)域,就形成中斷向量表向量號為N的中斷向量的物理地址=N×42/3/202352第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:
中斷過程NMIN軟件中斷INTRTF=1中斷響應(yīng)周期讀中斷向量號下條指令現(xiàn)行指令I(lǐng)F=1NNNNYYYYY查詢中斷的順序,決定了各種中斷源的優(yōu)先權(quán)軟件中斷除法錯中斷指令中斷溢出中斷非屏蔽中斷可屏蔽中斷單步中斷高低2/3/202353第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:中斷過程(續(xù))Y還有NMITEMP=1標志寄存器入棧TEMP=TF,IF=TF=0CS:IP入棧獲取中斷向量執(zhí)行服務(wù)程序彈出CS:IP彈出標志寄存器返回被中斷程序(1)(2)(3)(4)(5)NNY(6)8088各種中斷源的優(yōu)先權(quán),實際上是指被識別出來的先后多種中斷同時請求時,最先響應(yīng)的則可能是單步中斷或NMI中斷2/3/202354第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:
內(nèi)部中斷服務(wù)程序編寫內(nèi)部中斷服務(wù)程序與編寫子程序類似利用過程定義偽指令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章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:內(nèi)部中斷服務(wù)程序編寫80H號中斷服務(wù)程序,并調(diào)用功能:具有顯示以“0”結(jié)尾字符串的功能,利用顯示器功能調(diào)用INT10H實現(xiàn)字符顯示字符串緩沖區(qū)首地址為入口參數(shù):
DS:DX(段地址:偏移地址)傳遞參數(shù)2/3/202356第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的數(shù)據(jù)段;數(shù)據(jù)段intoff
dw? ;用于保存偏移地址intseg
dw? ;用于保存段基地址intmsg db‘AInstructionInterrupt!’,0dh,0ah,0以“0”結(jié)尾回車、換行2/3/202357第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的獲取原中斷向量;代碼段movax,3580h ;利用DOS功能35H號int21h ;獲取原80H中斷向量mov
intoff,bx
;保存偏移地址mov
intseg,es
;保存段基地址獲取中斷向量(DOS功能調(diào)用INT21H)功能號:AH=35H入口參數(shù):AL=中斷向量號出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)2/3/202358第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的設(shè)置新中斷向量pushdsmov
dx,offsetnew80h ;取中斷程序偏移地址mov
ax,segnew80h ;取中斷程序段地址mov
ds,axmovax,2580hint21hpopds設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號:AH=25H入口參數(shù):AL=中斷向量號DS:DX=中斷向量(段地址:偏移地址)說明:也可以按照課本的方法來設(shè)置自己的中斷功能。2/3/202359第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的中斷調(diào)用;設(shè)置入口參數(shù): DS=段地址(已設(shè)置)
DX=偏移地址mov
dx,offset
intmsg
int80h
;調(diào)用80H中斷服務(wù)程序AInstructionInterrupt!程序功能2/3/202360第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的主程序返回mov
dx,intoff
;恢復(fù)原中斷向量mov
ax,intsegmov
ds,ax
;改變DSmovax,2580hint21h ;因緊接著返回DOSmovax,4c00h ;故無需恢復(fù)DSint21h設(shè)置中斷向量(DOS功能調(diào)用INT21H)功能號:AH=25H入口參數(shù):AL=中斷向量號DS:DX=中斷向量(段地址:偏移地址)2/3/202361第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的中斷服務(wù)程序(1);80H號內(nèi)部中斷服務(wù)程序:;顯示字符串(以“0”結(jié)尾);入口參數(shù):DS:DX=緩沖器首地址new80h proc
;過程定義
sti
;開中斷
pushax
;保護寄存器
pushbx pushsi2/3/202362第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的中斷服務(wù)程序(2)
mov
si,dxnew1: mov
al,[si] ;讀取欲一個顯示字符
cmpal,0 ;為結(jié)尾“0”,則結(jié)束
jznew2
movbx,0 ;采用ROM-BIOS功能調(diào)用
movah,0eh
int10h incsi
;準備顯示下一個字符
jmpnew12/3/202363第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計第6章:例1:的中斷服務(wù)程序(3)new2: popsi
;恢復(fù)寄存器
popbx popax
iret
;中斷返回new80h endp
;過程(中斷服務(wù)程序)結(jié)束AInstructionInterrupt!程序功能2/3/202364第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.1中斷的概念
1.中斷的引入中斷功能已經(jīng)成為計算機不可缺少的組成部分。中斷的引入具有較多的優(yōu)點:(1)分時操作(2)實現(xiàn)實時處理(3)故障處理2/3/202365第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計3.中斷系統(tǒng)的功能6.4中斷傳送方式
6.4.1中斷的概念實現(xiàn)中斷及返回(2)實現(xiàn)優(yōu)先級處理(3)中斷嵌套2.中斷源引起中斷的原因或能發(fā)出中斷申請的來源,稱為中斷源。通常中斷源有以下4種:(1)輸入/輸出設(shè)備(2)實時時鐘(3)故障源(4)為調(diào)試程序而設(shè)置的中斷源2/3/202366第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
1.中斷源非屏蔽中斷請求中斷邏輯軟中斷溢出中斷單步中斷除法錯誤2n014CPUNMIIR00IR10IR20IR30IR40IR50IR60IR70825908系統(tǒng)定時器09鍵盤0ACRT0B保留(通訊)0C串行通訊0D保留(ALT)0E軟盤0F保留(打印機)INTR2/3/202367第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計8086中斷的分類:內(nèi)部中斷和硬件中斷(1)內(nèi)部中斷內(nèi)部中斷簡稱內(nèi)中斷,又稱軟件中斷。它不需要外部硬件支持。并且不受中斷標志位狀態(tài)的影響。8086/8088內(nèi)部中斷有以下5種:
除數(shù)為0中斷——類型0中斷
溢出中斷——類型4中斷單步中斷——類型1中斷
斷點中斷——類型3中斷
中斷指令——指令I(lǐng)NTn中斷由cpu的某些錯誤引起為調(diào)試程序而設(shè)置的中斷6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202368第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
(2)硬件中斷:來自處理機的外條件所以又稱外中斷
硬件中斷主要有兩種來源——非屏蔽中斷NMI和可屏蔽中斷INTR。?非屏蔽中斷NMI。非屏蔽中斷來源于三方:系統(tǒng)板的RAM在讀寫時產(chǎn)生奇偶校驗錯;
I/O通道中的擴展選件出現(xiàn)奇偶校驗錯;協(xié)處理器8087的異常狀態(tài)產(chǎn)生的中斷。?可屏蔽中斷INTR。由外部設(shè)備通過一片8259A產(chǎn)生的中斷請求。2/3/202369第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計外部設(shè)備向cpu發(fā)出中斷請求,cpu是否相應(yīng)還與IF有關(guān)STI——開中斷指令將標志寄存器中的中斷標志位IF置1,允許CPU響應(yīng)來自INTR引腳的中斷請求CLI——關(guān)中斷指令將標志寄存器中的中斷標志位IF清0,使CPU不響應(yīng)來自INTR引腳的中斷請求6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
從外設(shè)發(fā)出的中斷請求到cpu相應(yīng)中斷,用兩個控制條件起決定作用:1)外設(shè)的中斷請求是否被屏蔽,2)cpu是否允許相應(yīng)中斷。2/3/202370第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計2.中斷矢量表6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
●中斷向量表在8086系統(tǒng)中,內(nèi)存最低端的1K字節(jié)地址范圍內(nèi)(從00000-003FFH),放置256個中斷的中斷向量(入口地址),即稱為中斷向量表。每個中斷矢量在表中占據(jù)4個字節(jié),地址較高的兩個字節(jié)放入口地址的段地址,地址較低的兩個字節(jié)放偏移地址。中斷向量表中的存儲地址=中斷類型碼n×42/3/202371第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計●中斷類型號的獲取凡與0~5號中斷類型號對應(yīng)的中斷請求,一旦被響應(yīng),系統(tǒng)將自動提供中斷類型號,并自動地轉(zhuǎn)到中斷處理程序中去。對于可屏蔽的外部中斷INTR,則是經(jīng)過中斷控制器8259,在CPU中斷響應(yīng)的第二個周期,通過中斷響應(yīng)信號,將對應(yīng)的中斷類型號送至數(shù)據(jù)總線。內(nèi)部中斷是通過INTn指令將中斷號直接發(fā)送給CPU。6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202372第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計用指令來為中斷類型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
●用戶可以為保留的中斷類型號擴充自己的需要的中斷功能,對新增加的中斷功能要在中斷向量表中建立相應(yīng)的中斷向量。6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202373第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
●用戶在編寫自己的中斷處理程序代替系統(tǒng)中的某個中斷處理功能時,要注意保留原來的中斷向量。程序結(jié)束時,要恢復(fù)原來的中斷向量??梢允褂胐os功能調(diào)用來存取中斷向量取中斷向量預(yù)置AH=35H,AL=中斷類型號執(zhí)行INT21H——把類型號為AL的中斷向量取出到ES:BX中設(shè)置中斷向量預(yù)置AH=25H,AL=中斷類型號,DS:DX=中斷向量執(zhí)行INT21H——把DS:DX指向的中斷向量放置到中斷向量表中類型號為AL的中斷向量處說明:也可以按照課本的方法來設(shè)置自己的中斷功能。2/3/202374第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計3.中斷處理程序結(jié)構(gòu)6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
中斷處理程序的結(jié)構(gòu)與子程序(即過程)相似,可用定義過程的方式來定義中斷處理程序。所有編寫過程的一些規(guī)定和要求均適用于中斷處理程序,包括用偽指令PROC/ENDP定義過程為遠類型。中斷處理程序的典型結(jié)構(gòu)
(1)現(xiàn)場保護(2)中斷返回(3)中斷嵌套(4)發(fā)中斷結(jié)束命令
2/3/202375第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計例6.4中斷處理程序的一般結(jié)構(gòu)的程序如下。INTPRGPROCFARSTIPUSHDSPUSHDXPUSHAXPUSHBXSTI;開中斷
CLI;關(guān)中斷
MOVAL,20H;發(fā)中斷結(jié)束命令EOIOUT20H,ALPOPDI;恢復(fù)現(xiàn)場
POPBXPOPAXPOPDXPOPDSIRET;中斷返回
INTPRGENDP由于IRET將恢復(fù)中斷前的標志,故IF也被恢復(fù)。6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202376第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計4.用戶軟中斷的設(shè)置6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
通常增加一個新的軟中斷,應(yīng)完成下面一些操作。·選擇一個可用的中斷類型號n。·編寫新的軟中斷處理程序?!⑿碌能浿袛嗵幚沓绦虻娜肟诘刂穼懭氲街袛嗍噶勘淼?×n起的4個字節(jié)中。
2/3/202377第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計程序如下:DATASEGMENTMESSDB‘Thisisanexampleaboutsoftinterrupt.$’ERRDB0AH,ODH,’ERROR!$’DATAENDSEXTRNINT4AHFARCODESEGMENTASSUMECS:CODE,DS:DATABG:MOVAX,SEGINT4AH;添加中斷矢量表例6.5
利用空閑中斷類型號4AH實現(xiàn)軟中斷設(shè)置。6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202378第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
MOVDS,AXMOVDX,OFFSETINT4AHMOVAX,254AH;置AH為25H,AL為4AHINT21HMOVAX,DATAMOVDS,AXMOVAX,OFFSETMESSINT4AHCMPAH,0FFH;判超過256個字符否
JEER;超過轉(zhuǎn)ERMOVAH,4CHINT21HER:LEADX,ERR;顯示錯誤信息
MOVAH,9INT21HMOVAH,4CHINT21HCODEENDS
ENDBG2/3/202379第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計INT4AH處理程序如下所示。CSEGSEGMENTASSUMECS:CSEGPUBLICINT4AHINT4AHPROCFARPUSHDX;保護現(xiàn)場
PUSHCXPUSHSIMOVCX,0;CX為字符數(shù)計數(shù)器
MOVSI,AX;SI為字符串首地址LP:MOVAL,[SI]CMPAL,‘$’;判是否是字符串尾
JZOVERMOVDL,AL;顯示字符
MOVAH,2INT21HINCSIINCCX;字符計數(shù)
JMPLP6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202380第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計OVER:MOVAX,CXCMPAH,0JEDONE;未超過256字符
MOVAH,0FFH;超過256字符DONE:POPSI;恢復(fù)現(xiàn)場
POPCXPOPDXIRET;中斷返回
INT4AHENDPCSEGENDSEND6.4中斷傳送方式
6.4.28088/8086中斷系統(tǒng)
2/3/202381第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.3中斷傳送方式程序舉例問題分析:·本例利用中斷方式編寫中斷處理程序,類型為70H,實現(xiàn)打印機輸出功能?!び捎诰帉懙氖?0H類型的軟中斷,因而應(yīng)在主程序中將處理程序的入口地址寫入中斷矢量表中,然后利用INT70H便進入軟中斷,執(zhí)行中斷處理程序。例6.6
設(shè)打印機的數(shù)據(jù)端口地址為378H,狀態(tài)端口地址為379H,狀態(tài)D7為0時則忙,控制端口地址為37AH。當(dāng)打印機不工作在中斷方式時,控制字為0CH,表示可對打印機進行讀取和輸出,啟動打印機,向打印機送數(shù)據(jù)。當(dāng)控制字為0DH,給打印機送數(shù)據(jù).選通位置1。2/3/202382第1章匯編語言基礎(chǔ)知識6章輸入/輸出程序設(shè)計6.4中斷傳送方式
6.4.3中斷傳送方式程序舉例SSEGSEGMENTSTACKDW100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEGPRINTO PROCFARSTI PUSHESPUSHDI
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人養(yǎng)老金投資管理合同4篇
- 2025版專業(yè)舞蹈鞋訂購與租賃合同3篇
- 2025版木質(zhì)墻板供貨與安裝服務(wù)合同4篇
- 2025年度城市軌道交通建設(shè)項目工程總承包合同4篇
- 2025版土地儲備土地使用權(quán)流轉(zhuǎn)合同3篇
- 五金行業(yè)電子商務(wù)應(yīng)用考核試卷
- 安徽省黃山市高三第一次質(zhì)量檢測語文試卷(含答案)
- 2025版升級版土方工程勞務(wù)承包合同范本2篇
- 2025版危險化學(xué)品運輸安全責(zé)任合同3篇
- 二零二五版海運出口運輸代理合同貨物跟蹤查詢協(xié)議3篇
- 無人化農(nóng)場項目可行性研究報告
- 《如何存款最合算》課件
- 社區(qū)團支部工作計劃
- 拖欠工程款上訪信范文
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語試題(原卷版)
- 《wifi協(xié)議文庫》課件
- 2025年新高考語文復(fù)習(xí) 文言文速讀技巧 考情分析及備考策略
- 2024年??谑羞x調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題及答案1套
- 一年級下冊數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號發(fā)射的激光武器設(shè)計
評論
0/150
提交評論