第9章-輸入輸出程序設(shè)計(jì)_第1頁(yè)
第9章-輸入輸出程序設(shè)計(jì)_第2頁(yè)
第9章-輸入輸出程序設(shè)計(jì)_第3頁(yè)
第9章-輸入輸出程序設(shè)計(jì)_第4頁(yè)
第9章-輸入輸出程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章

輸入/輸出程序設(shè)計(jì)

輸入/輸出指令

◆ 輸入/輸出控制方式

I/O程序舉例

◆ BIOS中斷調(diào)用

9.1輸入/輸出指令

9.1.1I/O端口尋址

當(dāng)設(shè)備通過(guò)接口與主機(jī)相連時(shí),CPU可以通過(guò)接口地址來(lái)訪問(wèn)I/O設(shè)備。通常將I/O設(shè)備碼視為地址碼,對(duì)I/O地址碼的編址可采用存儲(chǔ)器編址和I/O端口編址兩種方式。1.存儲(chǔ)器編址方法存儲(chǔ)器編址也叫統(tǒng)一編址,就是將I/O地址看作是存儲(chǔ)器地址的一部分。2.I/O端口編址方法I/O端口編址也稱(chēng)為不統(tǒng)一編址,就是指I/O地址和存儲(chǔ)器地址是分開(kāi)的,所有對(duì)I/O的訪問(wèn)必須有專(zhuān)用的I/O指令。00FFH0000H0100HFFFFH地址...M空間I/O空間...(64KB)整個(gè)地址空間(256個(gè))(65280個(gè))原則: M與I/O共用整個(gè)地址空間;I/O端口與存儲(chǔ)單元等同——M與I/O地址不

重疊;無(wú)專(zhuān)門(mén)的I/O指令優(yōu)點(diǎn): I/O可有較大編址空間,易擴(kuò)展;I/O操作指令類(lèi)型多、功能齊全;缺點(diǎn): M的地址空間受限;I/O指令較長(zhǎng),執(zhí)行速度較慢;采用機(jī)型:Motorola系列、Apple系列、部分小型機(jī)存儲(chǔ)器編址方法-獨(dú)立編址(I/O映象方式、專(zhuān)用I/O指令方式)FFH00H地址I/O空間...(256個(gè))原則: M與I/O分開(kāi)編址、互不干擾——M與I/O地址不重疊優(yōu)點(diǎn): M空間不受I/O空間影響;有專(zhuān)用I/O指令(程序清晰);I/O指令短,執(zhí)行速度快缺點(diǎn):

I/O指令種類(lèi)有限,I/O空間不易擴(kuò)展采用機(jī)型:PC系列、Z-80系列(64KB)M空間地址0000HFFFFH...9.1.2輸入/輸出指令

1.輸入指令格式:INAL/AX,PORT功能:將PORT端口內(nèi)容(字節(jié)或字)傳送給AL或AX中。2.輸出指令格式:OUTPORT,AL/AX功能:將AL或AX中的內(nèi)容輸出到端口PORT。

3.端口地址的尋址方式用上兩條指令時(shí),有直接和間接兩種尋址方式來(lái)確定端口地址。(1)直接端口尋址輸入/輸出指令的端口地址可以是直接給出,此時(shí)指令為雙字節(jié),第二字節(jié)即為一個(gè)具體的8位二進(jìn)制數(shù),可對(duì)0-255個(gè)8位端口尋。(2)間接端口尋址間接端口尋址是采用寄存器DX的內(nèi)容來(lái)指定端口地址,此尋址方式的指令是單字節(jié)指令。因?yàn)镈X是16位寄存器,所以這種尋址方式可對(duì)0-65535個(gè)16位端口進(jìn)行尋址。當(dāng)端口號(hào)大于255時(shí),就應(yīng)采用間接端口尋址。返回4、獨(dú)立編址方式的端口訪問(wèn)1、I/O指令輸入INAL,PORTINAL,DXINAX,PORTINAX,DX輸出OUTPORT,ALOUTDX,ALOUTPORT,AXOUTDX,AX注意事項(xiàng):PORT范圍(長(zhǎng)格式):00H~FFH數(shù)據(jù)寄存器:AL/AX端口間址寄存器(短格式):DX9.2輸入/輸出控制方式

9.2.1程序控制方式程序控制方式是在用戶(hù)程序的控制下實(shí)現(xiàn)主機(jī)(CPU)與外設(shè)交換信息,對(duì)哪個(gè)端口何時(shí)進(jìn)行輸入/輸出操作,都在程序中反映出來(lái)。具體實(shí)現(xiàn)時(shí)又有立即傳送和程序查詢(xún)兩種方法。1.立即傳送方式采用這種方法時(shí),應(yīng)該確定外設(shè)已經(jīng)準(zhǔn)備好,因此不再詢(xún)問(wèn)外設(shè)是否準(zhǔn)備情況,在程序中需要輸入/輸出時(shí),就向指定端口進(jìn)行輸入/輸出操作。

2.程序查詢(xún)方式若CPU與外設(shè)交換信息時(shí),根據(jù)外設(shè)的工作狀態(tài)來(lái)決定是否進(jìn)行交換,這就是程序查詢(xún)方法,這時(shí)CPU常常要查詢(xún)外設(shè)的某些標(biāo)記,然后再作出決定,就是程序查詢(xún)方式。

查詢(xún)方式-CPU反復(fù)地、主動(dòng)地查詢(xún)外設(shè)的狀態(tài)-特點(diǎn):無(wú)額外的硬件開(kāi)銷(xiāo),但CPU工作效率低-應(yīng)用:CPU不太忙、傳送速度不高無(wú)條件方式是查詢(xún)方式的特例讀狀態(tài)輸入/輸出準(zhǔn)備好?NY查詢(xún)方式傳送一個(gè)數(shù)據(jù)查詢(xún)方式動(dòng)態(tài)演示9.2.2中斷控制方式

程序控制方式的立即傳送方法,不能根據(jù)設(shè)備實(shí)時(shí)狀況操作,而程序查詢(xún)方式使這種問(wèn)題得以解決,但工作時(shí)CPU與外設(shè)相當(dāng)串聯(lián)工作,占用CPU大量時(shí)間,因此工作效率不可恭維。如果在外設(shè)已準(zhǔn)備好的情況下,通知CPU,這時(shí)CPU才停下原來(lái)的工作與外設(shè)實(shí)施數(shù)據(jù)交換,此次信息交換完成后CPU在繼續(xù)自己的原有工作,按此想法就產(chǎn)生了中斷工作方式。CPU啟動(dòng)外設(shè)后仍繼續(xù)執(zhí)行原程序,在第K條指令執(zhí)行結(jié)束后,CPU響應(yīng)了外設(shè)的請(qǐng)求,中斷了現(xiàn)行程序,轉(zhuǎn)至中斷服務(wù)程序,等處理完后又返回到原程序斷點(diǎn)處,繼續(xù)從第K+1條指令往下執(zhí)行。這種方式中斷了原程序的運(yùn)行,所以稱(chēng)為程序中斷方式。中斷方式-外設(shè)主動(dòng)向CPU提出中斷申請(qǐng);-CPU與外設(shè)并行工作-特點(diǎn):增加了硬件開(kāi)銷(xiāo)(設(shè)置中斷控制器),提高了CPU工作效率-應(yīng)用:CPU較忙、尤其是實(shí)時(shí)控制及緊急事件處理中斷方式動(dòng)態(tài)演示9.2.3直接存儲(chǔ)器存取方式如果外設(shè)能直接與主存交換信息而不占用CPU,CPU的資源利用率顯然又可進(jìn)一步提高,這就出現(xiàn)了直接存儲(chǔ)器存取的DMA(DirectMemoryAccess)方式。

DMA的數(shù)據(jù)塊傳送操作可以分為3個(gè)主要步驟:(1)預(yù)處理階段:由CPU執(zhí)行幾條輸入輸出指令,測(cè)試設(shè)備狀態(tài);向DMA控制器的設(shè)備地址寄存器中送入設(shè)備號(hào),并啟動(dòng)設(shè)備;向內(nèi)存地址計(jì)數(shù)器送入起始地址;向字計(jì)數(shù)器中送入交換的數(shù)據(jù)字的個(gè)數(shù)。(2)正式傳送階段:外設(shè)準(zhǔn)備好發(fā)送數(shù)據(jù)(輸入)或接收數(shù)據(jù)(輸出)時(shí),發(fā)出DMA請(qǐng)求,由DMA控制器向CPU發(fā)出總線使用權(quán)的請(qǐng)求;CPU在本機(jī)器周期執(zhí)行完畢后響應(yīng)該請(qǐng)求并使CPU的總線驅(qū)動(dòng)器處于高阻狀態(tài),然后與系統(tǒng)總線相脫離,DMA控制器接管數(shù)據(jù)總線和地址總線的控制,并向內(nèi)存提供地址;在內(nèi)存與外圍設(shè)備之間進(jìn)行數(shù)據(jù)交換,每交換一個(gè)字則地址計(jì)數(shù)器和字計(jì)數(shù)器減1,當(dāng)計(jì)數(shù)值到0時(shí),DMA操作結(jié)束并向CPU提出中斷申請(qǐng)。(3)DMA后處理工作:一旦DMA的中斷請(qǐng)求得到響應(yīng),CPU將停止主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序進(jìn)行DMA操作的后處理。包括校驗(yàn)送入內(nèi)存的數(shù)據(jù)是否正確;決定使用DMA方式傳送數(shù)據(jù)還是結(jié)束傳送;測(cè)試傳送過(guò)程中是否發(fā)生錯(cuò)誤。

直接存儲(chǔ)器存取方式(DMA方式)-M與I/O、I/O與I/O間直接快速傳送-快速性原因:硬件取代軟件;提供直接通路-特點(diǎn):電路結(jié)構(gòu)復(fù)雜,硬件開(kāi)銷(xiāo)大-應(yīng)用:高速外設(shè)進(jìn)行大量數(shù)據(jù)傳送DMA方式動(dòng)態(tài)演示返回9.3I/O程序舉例例9.1編制查詢(xún)方式打印字符的子程序。設(shè)打印機(jī)數(shù)據(jù)寄存器口地址378H,狀態(tài)寄存器口地址379H,控制寄存器口地址37AH.編制子程序說(shuō)明文件如下:子程序名:PRINT;子程序功能:打印一個(gè)字符;入口條件:打印字符在AL中;出口條件:無(wú)受影響的寄存器:F。圖9.4打印機(jī)控制寄存器位模式圖9.5打印機(jī)狀態(tài)寄存器位模式;查詢(xún)方式打印字符的子程序PRINT.ASMPRINTPROCNEARPUSHDXPUSHAXMOVDX,379HBUSY:INAL,DX;讀打印機(jī)狀態(tài)寄存器

TESTAL,80H;測(cè)試打印機(jī)忙否?

JEBUSY;忙則等待

POPAXPUSHAXMOVDX,378H;數(shù)據(jù)寄存器口地址→DXOUTDX,AL;輸出數(shù)據(jù)

MOVDX,37AHMOVAL,1DHOUTDX,AL;發(fā)選通信號(hào)

ANDAL,1EHOUTDX,ALPOPAXPOPDXRETPRINTENDP例9.2編制直接控制揚(yáng)聲器發(fā)出聲音的程序。程序通過(guò)I/O指令使設(shè)備控制寄存器(I/O端口地址為61H)的第1位交替為0和1,并使該位和揚(yáng)聲器的脈沖門(mén)相連,當(dāng)?shù)?位由0變?yōu)?,延遲一會(huì)又由0變?yōu)?時(shí),脈沖門(mén)就先打開(kāi)后關(guān)閉,產(chǎn)生了一個(gè)脈沖電流。這個(gè)脈沖電流被放大后送到揚(yáng)聲器使之發(fā)出了聲音。61H端口的第0位和一個(gè)揚(yáng)聲器(2號(hào)定時(shí)器)相連,現(xiàn)在不用振蕩器產(chǎn)生聲音,所以把第0位置零。圖9.5是控制揚(yáng)聲器發(fā)聲的原理示意圖。圖9.5例9.2發(fā)聲示意圖例9.2控制揚(yáng)聲器發(fā)聲程序sound.asmPROGRAMSEGMENTMAINPROCFARASSUMECS:PROGNAM,DS:PROGNAMORG 100HSTART:MOVDX,100 ;開(kāi)關(guān)100次

IN AL,61H;獲得端口61HANDAL,11111100B ;把發(fā)聲控制位變?yōu)?SOUND:XORAL,2 ;把發(fā)聲控制位取反

OUT61H,AL;輸出到端口61H MOVCX,140H ;循環(huán)等待延時(shí)WAITL:LOOPWAITL DECDX;發(fā)100個(gè)脈沖

JNESOUND RETMAINENDPPROGRAMENDSENDSTART9.3中斷

9.3.1中斷概念

1.中斷概念

計(jì)算機(jī)在執(zhí)行程序的過(guò)程中,在出現(xiàn)異常情況或特殊請(qǐng)求時(shí),計(jì)算機(jī)停止現(xiàn)行運(yùn)行程序,轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求的處理,處理結(jié)束后再返回到現(xiàn)行程序的間斷處,稱(chēng)之為計(jì)算機(jī)上的“中斷”。

2.中斷的應(yīng)用場(chǎng)合(1)及時(shí)處理計(jì)算機(jī)中的緊急事件突發(fā)故障在用戶(hù)程序中是無(wú)法反映的,但它的出現(xiàn)可導(dǎo)致運(yùn)行結(jié)果出錯(cuò),甚至出現(xiàn)意想不到的后果,為了及時(shí)處理這些故障,應(yīng)該采用中斷方式。

(2)協(xié)調(diào)主機(jī)與外設(shè)工作速度

大部分外設(shè)的工作速度均低于CPU,采用程序查詢(xún)方式,會(huì)占用了CPU的寶貴時(shí)間。采用中斷控制方式,可以很好的解決這一問(wèn)題。

(3)實(shí)時(shí)控制9.3.2中斷源、中斷類(lèi)型碼和中斷優(yōu)先級(jí)

1.中斷源

引起中斷的原因或來(lái)源稱(chēng)為中斷源(Interruptsource)。(1)

外部中斷不是因?yàn)镃PU內(nèi)部原因產(chǎn)生的中斷,稱(chēng)為外部中斷。而外部中斷又分為非屏蔽中斷NMI和可屏蔽中斷INTR兩種。(2)

內(nèi)部中斷由CPU內(nèi)部產(chǎn)生的中斷,稱(chēng)為內(nèi)部中斷。按引發(fā)情況可分為3類(lèi)。例如除法運(yùn)算出錯(cuò)、執(zhí)行軟中斷指令、單步中斷等。2.中斷類(lèi)型碼PC機(jī)為每一個(gè)中斷源分配一個(gè)號(hào)碼,稱(chēng)為中斷類(lèi)型碼。這些中斷類(lèi)型碼在PC機(jī)中是唯一的,有的是系統(tǒng)統(tǒng)一規(guī)定的,有的是由用戶(hù)指定中斷類(lèi)型碼。

3.中斷優(yōu)先級(jí)

在某時(shí)如只有一個(gè)中斷源提出中斷請(qǐng)求,若它是非屏蔽中斷源,那么CPU就會(huì)立即響應(yīng)它的請(qǐng)求;若它是可屏蔽中斷源,只要IF=1,CPU也會(huì)立即響應(yīng)它的請(qǐng)求。但是,如果在同一時(shí)刻有幾個(gè)中斷源同時(shí)提出中斷請(qǐng)求,CPU只能先響應(yīng)1個(gè)中斷源,如果CPU響應(yīng)了一個(gè)中斷源的中斷請(qǐng)求后,在執(zhí)行中斷處理程序的時(shí)候,又有一個(gè)中斷源提出中斷請(qǐng)求,CPU能否響應(yīng)這個(gè)新的中斷請(qǐng)求,這就引出了中斷優(yōu)先級(jí)問(wèn)題。

9.3.3中斷矢量表不同的中斷來(lái)自不同的中斷源,因此有著不同的處理任務(wù),PC機(jī)有256個(gè)不同的中斷,對(duì)每一個(gè)中斷源都要設(shè)計(jì)一個(gè)中斷處理程序,而且每一個(gè)中斷程序都有自己的入口地址,將256個(gè)中斷程序的入口地址放到一起,就形成了一個(gè)表,稱(chēng)之為中斷矢量表。PC機(jī)的中斷矢量表是在在內(nèi)存最小地址的1k字節(jié)(絕對(duì)地址為:00000H~003FFH)空間建立的,由此表確定了中斷類(lèi)型碼與該中斷源所對(duì)應(yīng)的中斷處理程序之間的一一對(duì)應(yīng)聯(lián)系。圖9.12給出中斷矢量表的安排,表內(nèi)存放有256個(gè)中斷處理程序入口地址。每個(gè)入口地址由4個(gè)字節(jié)組成,兩個(gè)低字節(jié)存放入口地址的偏移量,兩個(gè)高字節(jié)存放它的段基值。中斷響應(yīng)以后,表中對(duì)應(yīng)的4個(gè)字節(jié)的內(nèi)容分別被送人IP和CS,完成程序轉(zhuǎn)移。表中中斷類(lèi)型0、類(lèi)型1、類(lèi)型2等表示這個(gè)入口地址對(duì)應(yīng)的中斷類(lèi)型碼。如果已知現(xiàn)在響應(yīng)中斷的中斷類(lèi)型碼,就可以從中斷矢量表中找到該中斷源的處理程序入口地址。設(shè)中斷類(lèi)型碼為N,則有:中斷矢量地址=中斷類(lèi)型號(hào)*N也就是(4*N,4*N十1)→IP;(4*N+2,4*N十3)→CS這樣就把中斷處理程序的入口地址的偏移量和段基值分別送人IP和CS,然后到此地址執(zhí)行該中斷的服務(wù)子程序。9.3.4中斷過(guò)程一個(gè)完整的中斷過(guò)程,要先后經(jīng)歷中斷請(qǐng)求、中斷響應(yīng)、中斷處理及中斷返回等4步驟。1.中斷請(qǐng)求這是引起中斷的第1步。中斷源產(chǎn)生中斷請(qǐng)求的條件,對(duì)不同的中斷源是不一樣的。2.中斷響應(yīng)CPU在每執(zhí)行一條指令的后期,都要查詢(xún)是否有中斷請(qǐng)求。若有,就按照優(yōu)先順序給予響應(yīng)或不響應(yīng)。查詢(xún)中斷請(qǐng)求按優(yōu)先級(jí)從高到低的順序進(jìn)行。如果CPU響應(yīng),就識(shí)別并讀出得到響應(yīng)的中斷源的類(lèi)型碼。3.中斷處理由于每個(gè)中斷處理的任務(wù)不同,因此具體中斷處理不可能一樣,但是也存在一些共性。,簡(jiǎn)單的說(shuō)中斷處理一般可由四個(gè)部分組成,即:現(xiàn)場(chǎng)保護(hù)、具體中斷處理、現(xiàn)場(chǎng)恢復(fù)以及中斷返回指令。4.中斷返回每一個(gè)中斷處理子程序的最后要使用中斷返回指令I(lǐng)RET以退出中斷,返回原斷點(diǎn)處。該指令是無(wú)操作數(shù)指令,其功能是:首先從堆棧中彈出中斷斷點(diǎn)地址,分別送人IP和CS,然后恢復(fù)標(biāo)志寄存器內(nèi)容。9.3.5軟中斷及有關(guān)的中斷指令軟中斷屬于內(nèi)部中斷,軟中斷(SoftInterruptions)指令的格式為:INTn

其中n為中斷類(lèi)型號(hào)。PC機(jī)的軟中斷分為BIOS中斷、DOS中斷和自由中斷三部分。1.BIOS中斷(10H-1FH)固化在ROM中,稱(chēng)為ROMBIOS,常用中斷有:INT10H-屏幕顯示INT13H-磁盤(pán)讀寫(xiě)INT16H-鍵盤(pán)輸入2.DOS中斷(20H-3FH)其中22H、23H、24H號(hào)是DOS專(zhuān)用中斷,21H、20H、25H、26H、27H、2FH為用戶(hù)可調(diào)用中斷。3.自由中斷(40H-FFH)自由中斷主要供系統(tǒng)和用戶(hù)應(yīng)用程序擴(kuò)充使用。

返回9.4BIOS中斷調(diào)用

BIOS是BasicInput/OutputSystem的縮寫(xiě),是固化在PC機(jī)ROM中的基本輸入輸出系統(tǒng),它提供系統(tǒng)加電自檢、引導(dǎo)裝入、主要I/O設(shè)備的處理程序以及接口控制等功能模塊,一般以中斷處理程序的形式存在。BIOS可以處理所有的系統(tǒng)中斷,如鍵盤(pán)、顯示器、磁盤(pán)、打印、日期與時(shí)間等。BIOS是模塊化的結(jié)構(gòu)形式,每個(gè)功能模塊的入口地址都在中斷矢量表中。在1k中斷矢量表中,共有256個(gè)中斷調(diào)用的入口地址。對(duì)這些中斷調(diào)用是通過(guò)軟中斷指令I(lǐng)NT來(lái)實(shí)現(xiàn)的,軟中斷指令的操作數(shù)就是中斷類(lèi)型碼。使用BIOS功能調(diào)用,給程序員編程帶來(lái)很大的方便,程序員不必了解硬件I/O接口的特性,可直接用指令設(shè)置參數(shù),然后中斷調(diào)用BIOS中的程序,所以利用BIOS功能編寫(xiě)的程序可讀性好,易于移植。有時(shí)為了提高處理效率,應(yīng)用程序也可以通過(guò)輸入輸出指令直接操縱外設(shè)接口控制外設(shè),但這種情況下程序員要熟悉相關(guān)的硬件特性,而且應(yīng)用程序的設(shè)計(jì)比較復(fù)雜,這是BIOS不方便之處。9.4.1鍵盤(pán)輸入中斷調(diào)用

鍵盤(pán)中斷調(diào)用(1NT16H)現(xiàn)有9個(gè)子功能,其中0、1和2號(hào)功能較常用。鍵盤(pán)調(diào)用01H-03H子功能見(jiàn)下表。功能號(hào)輸入輸出功能01HAH=00HAH=鍵盤(pán)掃描代碼AL=字符的ASCII碼讀鍵盤(pán)鍵入的一個(gè)ASCII字符02HAH=01HAH=鍵盤(pán)掃描碼AL=字符的ASCII碼若有鍵按下ZF=0,

否則ZF=1讀鍵盤(pán)狀態(tài)并檢查鍵盤(pán)是否有字符輸入02HAH=02HAH=00HAL=鍵盤(pán)標(biāo)志字讀鍵盤(pán)標(biāo)志字D7D6D5D4D3D2D1D0InsertCapsLockNurnLockScrollLockAlt鍵Ctrl鍵Left-ShiftRight-Shift激活為1激活為1激活為1激活為1按下為1按下為1按下為1按下為1在AL中各狀態(tài)位意義如下

顯示器輸出控制中斷調(diào)用的中斷類(lèi)型號(hào)為10H,總共有00H-1CH的子調(diào)用,通過(guò)這些子功能子程序的調(diào)用,可以在屏幕指定位置上以字符方式或圖形方式顯示。在子程序的調(diào)用中00H、02H、03H、05H、06H、07H、08H、09H、0AH、0CH、0DH和0CH是基本的調(diào)用。1.視頻模式00H號(hào)子調(diào)用是指定視頻模式,PC機(jī)顯卡有文本和圖形兩種顯示模式。文本顯示方式,是指以字符為單位顯示的方式,字符通常是指字母、數(shù)字、普通符號(hào)和一些特殊符號(hào)(如矩形塊等)。在這種顯示方式下,顯示緩沖存儲(chǔ)區(qū)中存放的是字符的ASCII碼和對(duì)應(yīng)的顯示屬性,每個(gè)字符占用兩個(gè)字節(jié)的空間。文本模式可以顯示256種不同字符,如在3號(hào)文本顯示模式下,顯示器的屏幕被劃分成80列25行,因此一屏最多可以顯示80x25(2000)個(gè)字符。圖形顯示方式中,顯示緩沖存儲(chǔ)區(qū)中存放的是“像素”點(diǎn)的信息,每個(gè)像素對(duì)應(yīng)屏幕上的一點(diǎn)位置,它的值為“0”或者“1”,為“0”就不在屏幕上打點(diǎn),為“1”則在屏幕上打點(diǎn)。9.4.2顯示器輸出控制中斷調(diào)用2.字符的屬性

字符的顯示屬性是字符顯示時(shí)的特性,用一個(gè)描述顏色的字節(jié)信息來(lái)規(guī)定。文本方式的顯示屬性字節(jié),字符單色文本顯示和彩色文本顯示的屬性字節(jié)略有區(qū)別,對(duì)于單色顯示,位6、5、4或位2、1、0三位全為0是表示黑色,全是1時(shí)表示黑色白色,對(duì)于彩色顯示是由RGB這3位顏色組合給出的顏色。其中BL為0表示前景字符不閃爍,為1表示前景字符閃爍;I為0表示前景字符為一般強(qiáng)度,為1表示前景字符為高強(qiáng)度。單色文本方式的顯示屬性字節(jié)取值和采色(16色)文本方式的顏色組合請(qǐng)看書(shū)中表。

3.調(diào)用格式各子功能調(diào)用格式為:MOVAH,功能號(hào)┇ ;其他調(diào)用參數(shù)INT10H ;功能調(diào)用其他調(diào)用參數(shù)的一般規(guī)則是:要顯示的字符或像素值通常在AL中;X坐標(biāo)(列號(hào)):圖形方式在CX中,字符方式在DL中;Y坐標(biāo)(行號(hào)):圖形方式在DX中,字符方式在DH中;顯示的頁(yè)號(hào)在BH中。9.4.3時(shí)間中斷調(diào)用

INT1AH稱(chēng)為系統(tǒng)定時(shí)器和實(shí)時(shí)時(shí)鐘(RTC)服務(wù),包括11個(gè)子功能調(diào)用,其中常用的是00和01號(hào)子功能,下面主要介紹這兩個(gè)功能調(diào)用。

1.讀取時(shí)間計(jì)數(shù)器當(dāng)前值(00H)調(diào)用前:AH=00H子功能調(diào)用返回時(shí):CX=時(shí)間計(jì)數(shù)器的高位字DX時(shí)間計(jì)數(shù)器的低位字AL=0:未計(jì)滿(mǎn)24小時(shí)AL=1:已計(jì)滿(mǎn)24小時(shí)時(shí)間計(jì)數(shù)器約54.926ins計(jì)數(shù)一次,所以可按下列公式計(jì)算出當(dāng)前的時(shí)間:時(shí):時(shí)間計(jì)數(shù)器的值(CX:DX)/65543;時(shí)的余數(shù)=時(shí)間計(jì)數(shù)器的值MOD65543分:時(shí)的余數(shù)/1092;分的余數(shù)=時(shí)的余數(shù)MOD1092秒:分的余數(shù)/18.212.設(shè)置時(shí)間計(jì)數(shù)器的當(dāng)前值(01H)子功能調(diào)用前:AH=01HCX=時(shí)間計(jì)數(shù)器當(dāng)前值高位字

DX=時(shí)間計(jì)數(shù)器當(dāng)前值低位字按下列公式計(jì)算出當(dāng)前時(shí)間值:

CX:DX=(時(shí)*65543)十(分*1092)十(秒*18.21)返回9.4.4中斷調(diào)用程序舉例

1.

鍵盤(pán)

【例9.5】將用戶(hù)按的鍵盤(pán)顯示出來(lái),當(dāng)按下FHIFT鍵后結(jié)束運(yùn)行,請(qǐng)編寫(xiě)程序。

SHIFT_L=02H; SHIFT_R=01H STACK SEGMENTSTACK DB200DUP(0) STACK ENDS CODE SEGMENT ASSUMECS:CODE,SS:STACK BEGIN: MOVAH,02H ;取鍵盤(pán)狀態(tài)字節(jié)

INT16H TESTAL,SHIFT_L+SHIFT_R ;判斷是否按下SHIFT鍵

JNZEXIT ;按下,結(jié)束程序

MOVAH,01H ;判斷是否有鍵可讀

INT16H JZBEGIN ;沒(méi)有,轉(zhuǎn)去繼續(xù)讀鍵

MOVAH,00H ;讀鍵

INT16H MOVDL,AL ;顯示所讀鍵

MOVAH,02H INT21H JMPBEGIN ;繼續(xù)讀鍵

EXIT: MOVAH,4CH INT21H CODE ENDS ENDBEGIN9.4.4中斷調(diào)用程序舉例

2.顯示輸出【例9.6】在字符顯示方式下顯示'CollegeofComputerScience&Technology,BeiHuaUniversity'。 STACK SEGMENTPARASTACK DB60DUP(0) STACKENDS DATA SEGMENT CHAR DB'CollegeofComputerScience&Technology,BeiHuaUniversity' COL DB0 ;開(kāi)始的列號(hào)

ROW DB10 ;開(kāi)始的行號(hào)

DATAENDS CODE SEGMENT ASSUME

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論