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

下載本文檔

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

文檔簡(jiǎn)介

匯編語言程序設(shè)計(jì)第七周大課1本周主要內(nèi)容DOS和BIOS中斷鍵盤I/O

顯示器I/O2第9章DOS與BIOS中斷

DOS和BIOS中斷

鍵盤I/O

顯示器I/O

打印機(jī)I/O*

串行通信口I/O*主要內(nèi)容3DOS、BIOS與硬件的關(guān)系在用戶程序中,若直接通過端口來操作硬件或外設(shè),其處理速度顯然是最快的,但這樣做使用戶程序具有了很大的局限性。硬件環(huán)境的改變將直接影響程序的正常運(yùn)行。若用戶程序通過調(diào)用DOS功能來實(shí)現(xiàn)其所需功能,那么,應(yīng)用程序與低層硬件相距較遠(yuǎn),操作最終的對(duì)象需要經(jīng)過中間環(huán)節(jié),處理速度受到一定的損失;但這種應(yīng)用程序適應(yīng)性強(qiáng),應(yīng)用范圍廣,對(duì)硬件的依賴性最小。4由于BIOS介于DOS和具體硬件之間,所以調(diào)用BIOS的功能是一個(gè)很好的折中方案??稍谝韵氯N情況下考慮使用BIOS的功能:BIOS提供的功能,而DOS沒有提供該功能的情況;因?yàn)槟承┚唧w應(yīng)用的限制不能利用DOS功能調(diào)用的情況;基于處理速度的考慮,需要繞過DOS層的情況。DOS、BIOS與硬件的關(guān)系結(jié)論:使用中斷的層次越高,它與硬件設(shè)備相關(guān)程度就越低,處理速度也就越低,但用戶程序的適用范圍較廣。反之亦然。5調(diào)用DOS或BIOS功能的基本步驟將調(diào)用參數(shù)裝入指定寄存器中如需要功能號(hào),把它裝入AH如需要子功能號(hào),把它裝入AL中斷按中斷號(hào)調(diào)用DOS或BIOS中斷檢查返回參數(shù)是否正確DOS中斷類型和BIOS中斷類型參見p.316表格。6常用DOS與BIOS中斷調(diào)用1.DOS系統(tǒng)功能調(diào)用:INT21H

與鍵盤相關(guān)的功能號(hào)(AH=1、6、7、8、A、B、C) 與顯示器相關(guān)的功能號(hào)(AH=2、6、9)

與打印機(jī)相關(guān)的功能號(hào)(AH=5)

與串行接口通信相關(guān)的功能號(hào)(AH=3、4)

2.BIOS功能調(diào)用

INT16H:鍵盤輸入

INT10H:顯示器輸出(功能號(hào)參見p.328表格)

INT12H:內(nèi)存檢驗(yàn) INT17H:打印機(jī)輸出

INT13H:磁盤 INT1AH:時(shí)鐘

INT14H:串行通信 INT40H:軟盤01H——帶回顯的鍵盤輸入06H——控制臺(tái)的輸入/輸出:當(dāng)DL=0FFH,表示鍵盤輸入07H——不回顯、不過濾的鍵盤輸入08H——不回顯的鍵盤輸入0AH——鍵盤輸入字符串0BH——檢查鍵盤輸入狀態(tài)0CH——清除輸入緩沖區(qū)的輸入功能02H——顯示一個(gè)字符DL=字符,光標(biāo)隨字符移動(dòng)06H——控制臺(tái)的輸入/輸出當(dāng)DL≠0FFH,表示顯示字符DL=字符,光標(biāo)隨字符移動(dòng)09H——在屏幕上顯示一個(gè)字符串DS:DS=串地址,必須以$結(jié)束,光標(biāo)隨字符移動(dòng)00H——從鍵盤讀一個(gè)字符AL=字符碼,AH=掃描碼01H——判斷鍵盤緩沖區(qū)內(nèi)是否有字符可讀IfZF=0,則AL=字符碼,AH=掃描碼IfZF=1,緩沖區(qū)空02H——取當(dāng)前鍵盤狀態(tài)字節(jié)AL=鍵盤狀態(tài)字節(jié)7第9章DOS與BIOS中斷

DOS和BIOS中斷

鍵盤I/O

顯示器I/O

打印機(jī)I/O*

串行通信口I/O*主要內(nèi)容8PC機(jī)的鍵盤構(gòu)成鍵盤是計(jì)算機(jī)最基本的輸入設(shè)備,通過五芯電纜與主機(jī)相連;PC鍵盤的觸點(diǎn)電路按16x8矩陣排列,用Intel8048芯片來控制對(duì)鍵盤的掃描;按鍵的識(shí)別用行列掃描法,確定按下鍵的位置,將掃描碼送主機(jī)。9DBPB6PB7PAIRQ1T1P10P21P11P22P204GND1CLOCK2DATA5+5V3RESETPC機(jī)鍵盤系統(tǒng)板80488255A8259ALS322串并轉(zhuǎn)換器鍵盤陣列按鍵選通PC機(jī)鍵盤的工作原理10鍵盤中斷的處理過程

當(dāng)用戶按鍵時(shí),鍵盤接口會(huì)得到一個(gè)代表該按鍵的鍵盤掃描碼,同時(shí)產(chǎn)生一個(gè)中斷請(qǐng)求。鍵盤中斷服務(wù)程序先從鍵盤接口取得按鍵的掃描碼,然后根據(jù)其掃描碼判斷用戶所按的鍵并作相應(yīng)的處理,最后通知中斷控制器本次中斷結(jié)束并實(shí)現(xiàn)中斷返回。字符碼與掃描碼(見p.317)

當(dāng)按下和放開一個(gè)鍵時(shí),若中斷允許(IMR的D1=0),就會(huì)產(chǎn)生一個(gè)類型9的8259中斷,并轉(zhuǎn)入鍵盤BIOS中斷處理程序,它從8255鍵盤接口芯片的60h端口讀入單字節(jié)掃描碼,根據(jù)按下和放開狀態(tài),使掃描碼的最高位為0或1,對(duì)應(yīng)的字節(jié)稱為通碼和斷碼;BIOS鍵盤處理程序根據(jù)掃描碼再來轉(zhuǎn)換成相應(yīng)字符碼(一般是ASCII碼),一起存放在鍵盤緩沖區(qū)的KBBuff中。字符碼與掃描碼11按鍵操作后的系統(tǒng)處理12在計(jì)算機(jī)鍵盤上除了可輸入各種字符(字母、數(shù)字和符號(hào)等)的按鍵之外,還有一些功能鍵、控制鍵、雙態(tài)鍵和特殊請(qǐng)求鍵。鍵盤中的控制鍵和雙態(tài)鍵是非打印按鍵,它們是起控制或轉(zhuǎn)換作用的。當(dāng)使用者按下控制鍵或雙態(tài)鍵時(shí),系統(tǒng)要記住其所按下的按鍵。為此,在計(jì)算機(jī)系統(tǒng)中,特意安排的一個(gè)字來標(biāo)志這些按鍵的狀態(tài),我們稱該字為鍵盤狀態(tài)字。鍵盤狀態(tài)字13鍵盤緩沖區(qū)鍵盤緩沖區(qū)是一個(gè)先進(jìn)先出的環(huán)形隊(duì)列,其所占內(nèi)存區(qū)域如下:雖然緩沖區(qū)的本身長(zhǎng)度為16個(gè)字,但出于判斷“隊(duì)列滿”的考慮,它最多只能保存15個(gè)鍵盤信息。當(dāng)緩沖區(qū)滿時(shí),系統(tǒng)將不再接受按鍵信息,而會(huì)發(fā)出“嘟”的聲音,表示要暫緩按鍵。當(dāng)KBHead與KBTail指針值相等時(shí),表示無鍵盤輸入14隊(duì)列空kbheadkbtail隊(duì)列中無字符,隊(duì)列頭指針等于隊(duì)列尾指針隊(duì)列始端隊(duì)列末端15進(jìn)隊(duì)列kbhead數(shù)據(jù)進(jìn)入由隊(duì)列尾指針指示的單元同時(shí)尾指針增量,指向下一個(gè)單元隊(duì)列始端隊(duì)列末端kbtail16出隊(duì)列kbhead數(shù)據(jù)從隊(duì)列頭指針指示的單元取出同時(shí)頭指針增量,指向下一個(gè)單元隊(duì)列始端隊(duì)列末端kbtail17隊(duì)列滿kbheadkbtail尾指針與頭指針再次相等表明隊(duì)列已滿隊(duì)列始端隊(duì)列末端尾指針指向隊(duì)列末端時(shí),需要循環(huán)重新繞回隊(duì)列始端。18BIOS中的鍵盤輸入在BIOS系統(tǒng)中,提供了中斷16H來實(shí)現(xiàn)鍵盤輸入功能。其具體的功能如下:00H從鍵盤讀一個(gè)字符,輸入字符不回顯AL=字符ASCII碼,AH=鍵盤掃描碼01H判斷鍵盤緩沖區(qū)內(nèi)是否有字符可讀IfZF=0則AL=字符碼,AH=掃描碼;IfZF=1,緩沖區(qū)空02H讀取當(dāng)前鍵盤狀態(tài)字節(jié)AL=鍵盤狀態(tài)字節(jié)19鍵盤輸入例:例1:從鍵盤讀入一個(gè)字符,顯示其掃描碼和字符碼MOV

AH,0H

INT

16H MOV

BX,AX CALLbinihex ;參見p.201例2:讀鍵盤狀態(tài),并以十六進(jìn)制形式顯示again:

movah,02h int16h mov

bx,ax callbinihex movdl,0dh movah,2 int21h jmpagainbinihex procnear movch,4

;循環(huán)次數(shù)rotate: movcl,4

;一次移位數(shù)

rolbx,cl moval,bl addal,0fh addal,30h cmpal,3ah jlprintit addal,7hprintit: movdl,al;顯示一個(gè)數(shù)字

movah,2 int21h decch;循環(huán)控制

jnzrotateretbinihex endp20例3、用鍵盤最多輸入10個(gè)字符,并存入內(nèi)存變量Buff中,若按“Enter”鍵,則表示輸入結(jié)束。21DOS功能中的鍵盤輸入在DOS操作系統(tǒng)中,提供了能實(shí)現(xiàn)各種鍵盤輸入的功能(Windows操作系統(tǒng)中仍然能用)。INT21H中的相關(guān)功能如下:22INT21H的功能01H、07H和08H23INT21H的功能0AH24INT21H的功能0BHINT21H的功能0CH25.MODEL

SMALL.DATA

Buff

DB

11,?,11DUP(?);注意緩沖區(qū)的定義方式.CODE

.STARTUP

LEA

DX,Buff

MOV

AH,0AH

INT

21H;用DOS中的功能調(diào)用

.EXIT

0

END例3、用鍵盤最多輸入10個(gè)字符,并存入內(nèi)存變量Buff中,若按“Enter”鍵,則表示輸入結(jié)束。

——用DOS中的功能調(diào)用結(jié)論:用DOS中斷的鍵盤處理比用BIOS中斷的鍵盤處理要簡(jiǎn)單些。26 .code movax,3509h int21h pushes pushbx ;保存原中斷向量?jī)?nèi)容

cli ;關(guān)中斷

pushds ;設(shè)置新中斷向量?jī)?nèi)容

movax,2509h movdx,segscancode movds,dx movdx,offsetscancode int21h popds鍵盤中斷主程序127 inal,21h ;讀出IMR pushax ;保存原IMR內(nèi)容

andal,0fdh ;允許鍵盤中斷(D1)

out21h,al ;設(shè)置新IMR內(nèi)容

movbyteptresccode,0 sti ;開中斷waiting: cmpbyteptresccode,81h

;循環(huán)等待按下并釋放ESC鍵

jnewaiting ;中斷服務(wù)程序設(shè)置esccode單元內(nèi)容

... ;恢復(fù)、返回鍵盤中斷主程序228scancode procfar sti ;鍵盤中斷服務(wù)程序

pushax pushbx

inal,60h ;讀取掃描碼

pushax inal,61h ;通過PB7應(yīng)答鍵盤

oral,80h

out61h,al ;使PB7=1 andal,7fh

out61h,al ;使PB7=0 popax cmpal,81h jnescan1 ;不是ESC鍵斷開掃描碼,顯示鍵盤中斷服務(wù)程序1/329 pushds ;是ESC鍵斷開掃描碼,則設(shè)置esccode單元

movbx,@data ;設(shè)置數(shù)據(jù)段地址

movds,bx

movesccode,al ;設(shè)置esccode單元為其掃描碼

popdsscan1: pushax ;顯示掃描代碼

shral,1 ;先顯示高4位

shral,1 shral,1 shral,1 cmpal,0ah jbscan2 addal,7scan2: addal,30h ;轉(zhuǎn)換成ASCII碼鍵盤中斷服務(wù)程序2/330 movbx,0 movah,0eh int10h popax;后顯示低4位

andal,0fh cmpal,0ah jbscan3 addal,7scan3: addal,30h;轉(zhuǎn)換成ASCII碼

movah,0eh int10h鍵盤中斷服務(wù)程序3/3 movax,0e20h;顯示兩個(gè)空格

int10h movax,0e20h int10h moval,20h;發(fā)送EOI命令

out20h,al popbx popax

iret

;中斷返回scancode endp31第9章DOS與BIOS中斷

DOS和BIOS中斷

鍵盤I/O

顯示器I/O

打印機(jī)I/O*

串行通信口I/O*主要內(nèi)容32顯示模式顯示器是一個(gè)重要的輸出設(shè)備,它通過顯示卡與計(jì)算機(jī)系統(tǒng)相連。顯示器的顯示屏通常稱之為屏幕,常用的顯示卡類型為VGA、SVGA、EVGA和TVGA等,顯示卡上也都帶有大量的顯示存儲(chǔ)器,能快速顯示精美的圖象。 計(jì)算機(jī)系統(tǒng)中的顯示器都有二種顯示方式:文本顯示方式和圖形顯示方式。 在DOS操作系統(tǒng)環(huán)境下,其默認(rèn)的顯示方式為文本顯示方式;在Windows操作系統(tǒng)環(huán)境下,其顯示方式是圖形顯示方式,其絕大多數(shù)操作界面是以圖形界面的窗口形式出現(xiàn)的。33文本顯示方式文本顯示方式是指以字符為最小單位的顯示方式,每個(gè)字符都是以矩形塊形式顯示的。在BIOSROM中存有多種不同大小的字符集,主要的顯示字符集大小為:8×8(標(biāo)準(zhǔn))、8×14和8×16等。在常用的文本顯示模式(模式3)下,屏幕被劃分成25行,每行可顯示80個(gè)字符,所以,每屏最多可顯示2000(80×25)個(gè)字符。為了便于標(biāo)識(shí)屏幕上的每個(gè)顯示位置,我們就用其所在行和列來表示之,并規(guī)定:屏幕的左上角坐標(biāo)為(0,0),右下角坐標(biāo)為(24,79)。34文本顯示方式在顯示字符時(shí),用一個(gè)字節(jié)存儲(chǔ)該字符的ASCII碼,用另一個(gè)字節(jié)存儲(chǔ)的顯示屬性,即:顯示顏色。字符顯示屬性的定義存儲(chǔ)內(nèi)容與顯示位置的對(duì)應(yīng)關(guān)系0正常000黑0正常亮000黑1閃爍111白1高亮111白35文本顯示方式BGRIBGRBL閃爍背景前景彩色字符顯示屬性單色顯示屬性的組合:16種顏色的組合:顏色I(xiàn)RGB顏色I(xiàn)RGB顏色I(xiàn)RGB顏色I(xiàn)RGB黑0000紅0100灰1000淺紅1100蘭0001品紅0101淺藍(lán)1001淺品紅1101綠0010宗0110淺綠1010黃1110青0011灰白0111淺青1011白1111屏幕上字符元素的位置(row,column),在顯存中的偏移量為:Char_offset=page_offset+(row×80+column)×236圖形顯示方式圖形顯示方式是目前最常用的一種顯示方式,也是Windows操作系統(tǒng)的默認(rèn)顯示方式。在該顯示方式下,我們可以看到優(yōu)美的圖象、VCD、瀏覽豐富多彩的網(wǎng)頁等。圖形顯示的最小單位是象素,對(duì)每個(gè)象素可用不同的顏色來顯示。所以,在顯示緩沖區(qū)內(nèi)記錄的信息是屏幕各象素的顯示顏色。由于各種圖形顯示模式所能顯示的顏色和象素是不同的,它決定了顯示緩沖區(qū)的存儲(chǔ)方式也是不同的。下面給出三個(gè)具體的圖形顯示模式及其存儲(chǔ)方式,通過它們可看出各種顯示模式在顯示緩沖區(qū)存儲(chǔ)方式上的明顯差異。374色320×200圖形顯示模式04由于每個(gè)象素只能是四種顏色之一,而四種情況用2位二進(jìn)制就可表示,所以,一個(gè)字節(jié)可表示4個(gè)象素的顯示顏色,存儲(chǔ)一行上的所有象素信息就需要80個(gè)字節(jié)。在具體存儲(chǔ)過程中,它又把偶數(shù)行象素和奇數(shù)行分開來存儲(chǔ)。偶數(shù)行和奇數(shù)行的象素總數(shù)各有32000個(gè),也都需要8000個(gè)字節(jié)來存儲(chǔ),并規(guī)定:偶數(shù)行象素從0B800:0000H開始存儲(chǔ),奇數(shù)行象素從0B800:2000H開始存儲(chǔ)。

圖形顯示方式一3816色640×480圖形顯示模式12該圖形顯示模式共有307200個(gè)象素,每個(gè)象素可選用16種顏色,它需要用4位二進(jìn)制來表示。該顯示模式在存儲(chǔ)顯示信息時(shí),把該4位分在四個(gè)位平面P1、P2、P3和P4上,所以,位平面Pi(i=1,2,3,4)共有307200個(gè)二進(jìn)制位,即有38400個(gè)字節(jié)。

圖形顯示方式二39256色320×200圖形顯示模式13表達(dá)256種不同顏色需要8位二進(jìn)制,即一個(gè)字節(jié)。在該模式下,其顯示緩沖區(qū)的存儲(chǔ)方式是非常簡(jiǎn)單的,即:第一個(gè)字節(jié)存儲(chǔ)第一個(gè)象素的顏色,第二個(gè)字節(jié)存儲(chǔ)第二個(gè)象素的顏色,以此類推,所以,存儲(chǔ)滿屏象素所需要的字節(jié)數(shù)為:320×200×1=64000。

從上面三種不同圖形顯示模式的介紹,不難看出:各種顯示模式在顯示緩沖區(qū)存儲(chǔ)方式上的明顯差異,操作象素方法的難易程度相差也很大,所以,再次建議:程序員不要用直接操作顯示緩沖區(qū)的辦法來達(dá)到改變顯示象素的目的,最好是通過BIOS內(nèi)的中斷功能來實(shí)現(xiàn)相應(yīng)的功能,這樣,所編寫的程序能很方便地適應(yīng)不同的圖形顯示模式。圖形顯示方式三40BIOS系統(tǒng)提供了中斷10H來實(shí)現(xiàn)各種屏幕處理功能00H——設(shè)置顯示器模式01H——設(shè)置光標(biāo)形狀02H——設(shè)置光標(biāo)位置03H——讀取光標(biāo)信息05H——設(shè)置顯示頁06H、07H——初始化或滾屏(向上滾屏和向下滾屏)08H——讀光標(biāo)處的字符及其屬性09H——在當(dāng)前光標(biāo)處按指定屬性顯示字符0AH——在當(dāng)前光標(biāo)處顯示字符0CH——寫圖形象素0DH——讀圖形象素0EH——在Teletype模式下顯示字符0FH——讀取顯示器模式10H——顏色13H——在Teletype模式下顯示字符串41可用的顯示模式42擴(kuò)展的顯示模式對(duì)于超級(jí)VGA顯示卡,我們可用AX=4F02H和下列BX的值來設(shè)置其顯示模式。4300H—設(shè)置顯示器模式0CH—寫圖形象素01H—設(shè)置光標(biāo)形狀0DH—讀圖形象素02H—設(shè)置光標(biāo)位置0EH—在Teletype模式下顯示字符03H—讀取光標(biāo)信息0FH—讀取顯示器模式04H—讀取光筆位置10H—顏色05H—設(shè)置顯示頁11H—字體06H、07H—初始化或滾屏12H—顯示器的配置08H—讀光標(biāo)處的字符及其屬性13H—在Teletype模式下顯示字符串09H—在光標(biāo)處按指定屬性顯示字符1AH—讀取/設(shè)置顯示組合編碼0AH—在當(dāng)前光標(biāo)處顯示字符1BH—讀取功能/狀態(tài)信息0BH—設(shè)置調(diào)色板、背景色或邊框1CH—保存/恢復(fù)顯示器狀態(tài)BIOS中斷10H的功能返44顯示緩沖區(qū)顯示緩沖區(qū)是用來記錄屏幕顯示信息的。在文本顯示方式下,這些顯示信息包括:每個(gè)顯示字符的ASCII碼及其顯示屬性。在圖形顯示方式下,顯示緩沖區(qū)內(nèi)存儲(chǔ)每個(gè)象素的顯示顏色。在常用的VGA顯示方式下,計(jì)算機(jī)系統(tǒng)規(guī)定:文本顯示方式下,單色顯示器的顯示緩沖區(qū)段地址為0B000H;文本顯示方式下,彩色顯示器的顯示緩沖區(qū)段地址為0B800H;圖形顯示方式下,其顯示緩沖區(qū)段地址為0A000H。45屏幕輸出的舉例 例2——1/2例2、用直接寫屏方式在屏幕第5行、第10列以黃色(0EH)顯示字符串內(nèi)容。解:在文本顯示方式下,每行顯示80個(gè)字符,每個(gè)字符占2個(gè)字節(jié),所以,顯示一行需要160個(gè)字節(jié)。若在第m行、第n列位置顯示字符,則該位置所對(duì)應(yīng)存儲(chǔ)單元的偏移量為:m×160+n×2。.MODELSMALL

.DATA

Yellow

EQU

0EH

MSG1

DB

"Welcome..."

Count

EQU

$-MSG1

.CODE

.STARTUP

MOVAX,0B800H 46屏幕輸出的舉例 例2——2/2

MOVES,AX;彩色顯示器的顯示緩沖區(qū)段地址

MOVDI,5

IMULDI,160;5行所跳過的顯示存儲(chǔ)單元

MOVCX,10

SHLCX,1;10列所跳過的顯示存儲(chǔ)單元

ADDDI,CX;第5行、第10列之前所跳過的所有顯示單元

MOVCX,Count

LEASI,MSG1;CX:字符個(gè)數(shù),SI:顯示字符首地址

MOVAH,Yellow;設(shè)置顯示屬性,即顯示顏色NEXT:

LODSB;取顯示字符到AL

STOSW;向顯示緩沖區(qū)設(shè)置顯示字符和屬性AX

LOOPNEXT

.EXIT

0

END47例3、用“霓虹燈”的顯示方式顯示字符串"Hello",按ESC鍵時(shí)結(jié)束程序的運(yùn)行。.MODELSMALL,C.DATA

KBEsc

EQU

1BH

BUFF

DB

"H",15,"e",15,"l",15,"l",15,"o",15.CODEClearPROCNearUsesAXBXCXDX;清屏幕,并保護(hù)所用寄存器MOVCL,0MOVCH,0MOVDL,79MOVDH,24;(0,0)-(24,79)是屏幕的左上角和右下角MOVBH,7MOVAL,0MOVAH,6INT10HRETClearENDP顯示顏色的變化來模擬霓虹燈,即用顏色15(亮白)作為字符的主要顯示顏色,再用顏色12(亮紅)從左到右逐個(gè)掃描。繼續(xù)48LEABP,BUFFMOVAL,2MOVAH,13HINT10H;調(diào)用中斷顯示字符串MOVAH,1INT16H;檢查是否有按鍵JZagain;若無字符可讀則繼續(xù)MOVAH,0INT16HCMPAL,KBEscJNZagain;若按鍵不是Escape,則繼續(xù)循環(huán).EXIT

0END顯示開始位置字符屬性地址循環(huán)續(xù)例349例4、編寫一個(gè)輸入密碼的程序,該程序的具體要求如下:

1、每輸入一個(gè)字符,顯示字符"#"表示之;

2、密碼最多只有10個(gè)字符,多余的按鍵被丟棄;

3、若輸入的字符串為"HELLO",則以藍(lán)色顯示"Welcome…",否則,以閃爍、亮紅色在顯示"InvalidPassword"。50續(xù)例4:編寫一個(gè)輸入密碼的程序——2/4MOVBUFF[BX],ALINCBX;保存當(dāng)前輸入,并移動(dòng)有關(guān)指針MOVDL,'#'MOVAH,2INT21H;在屏幕上顯示字符”#”JMPagain51續(xù)例4:編寫一個(gè)輸入密碼的程序——3/452續(xù)例4:編寫一個(gè)輸入密碼的程序——4/453例5、在256色320×200的圖形顯示模式下,從屏幕最左邊向最右邊,依次畫豎線(從頂?shù)降?,線的顏色從1依次加1。要求用中斷調(diào)用的方法來畫線。;畫一條豎線,CX—豎線所在的列,AL—線的顏色54例5——2/355MOVAL,modeMOVAH,0INT10H;恢復(fù)原來的屏幕顯示模式.EXIT

0END例5——3/356DOS功能中的屏幕輸出屏幕輸出是最常用的一種輸出形式,DOS操作系統(tǒng)提供了幾種實(shí)現(xiàn)屏幕輸出的功能調(diào)用。INT21H中的相關(guān)功能如下:

02H——顯示的字符,dl放要顯示的字符碼

06H——控制臺(tái)的輸入/輸出:當(dāng)DL≠0FFH,表示顯示字符

09H——在屏幕上顯示一個(gè)字符串參數(shù):DS:DX指向字符串首地址,以‘$’結(jié)束57作業(yè)與練習(xí)第九章習(xí)題p.353~354

9.2、9.3、9.4、9.5、

9.6、9.7、9.9、9.10。58第9章DOS與BIOS中斷

DOS和BIOS中斷

鍵盤I/O

顯示器I/O

打印機(jī)I/O*

串行通信口I/O*主要內(nèi)容59打印機(jī)狀態(tài)字打印機(jī)狀態(tài)字記錄著打印機(jī)的當(dāng)前工作情況(或狀態(tài)),它相當(dāng)于CPU中的程序狀態(tài)字和鍵盤狀態(tài)字。若在某個(gè)程序中要包含打印功能,那么,程序員可通過打印狀態(tài)字來了控制打印過程,并向使用者提供各種有用信息。比如:提示使用者“打印機(jī)無紙了”或打印機(jī)處于脫機(jī)狀態(tài)(OffLine)等。60打印控制命令在打印時(shí),程序員往往要控制文本的輸出格式,比如:換頁、換行、字體或字號(hào)等。若要實(shí)現(xiàn)對(duì)打印格式的控制,就必須要知道控制打印機(jī)的控制字符和控制命令。常用的打印控制字符字符值功能描述09H水平制表符,跳到下一個(gè)制表位置0AH換行0CH換頁0DH回車打印機(jī)還有其它的控制命令,如:ESC命令序列,該序列由字符ESC(其ASCII為1BH)和一些數(shù)值組成。對(duì)于各類打印機(jī)的控制命令,要參閱其使用手冊(cè)。61DOS&BIOS中的打印輸出DOS功能中的打印輸出在DOS操作系統(tǒng)中,INT21H提供了一種打印輸出的功能調(diào)用,其具體功能如下:05H——向連接在LPT1端口上的打印機(jī)輸出一個(gè)字符40H——向先前打開的文件寫入指定數(shù)量的字節(jié),可以把打印機(jī)看作為標(biāo)準(zhǔn)的輸出文件BIOS中的打印輸出BIOS系統(tǒng)提供中斷17H來實(shí)現(xiàn)打印輸出功能,其具體的功能如下:00H——向指定的打印機(jī)輸出一個(gè)字符01H——初始化指定的打印機(jī)02H——讀取指定打印機(jī)的狀態(tài)62例1、在每頁的開始處打印“AssemberLanguage”字符串,并空一行才打印其它內(nèi)容。繼續(xù)63again:

MOVAH,5H

MOVDL,Title1[BX]

INT21H;調(diào)用DOS功能打印字符

INCBX

LOOPagain

……;可在此打印其它任意字符

.EXIT

0

END續(xù)1在每頁的開始處打印“AssemberLanguage”字符串,并空一行才打印其它內(nèi)容。64例2、當(dāng)打印機(jī)不能正常打印(非硬件故障)時(shí),提示使用者其原因,以便解決打印問題。繼續(xù)65續(xù)例2當(dāng)打印機(jī)不能正常打印(非硬件故障)時(shí),提示使用者其原因,以便解決打印問題。66第9章DOS與BIOS中斷

DOS和BIOS中斷

鍵盤I/O

顯示器I/O

打印機(jī)I/O

串行通信口I/O*主要內(nèi)容67串行通信基礎(chǔ)串行通信:將數(shù)據(jù)分解成二進(jìn)制位,用一條信號(hào)線,一位一位順序傳送的方式串行通信的優(yōu)勢(shì):用于通信的線路少,因而在遠(yuǎn)距離通信時(shí)可以極大地降低成本串行通信適合于遠(yuǎn)距離數(shù)據(jù)傳送,也常用于速度要求不高的近距離數(shù)據(jù)傳送PC系列機(jī)上有兩個(gè)串行異步通信接口、鍵盤、鼠標(biāo)器與主機(jī)間采用串行數(shù)據(jù)傳送68異步通信串行通信時(shí)的數(shù)據(jù)、控制和狀態(tài)信息都使用同一根信號(hào)線傳送收發(fā)雙方必須遵守共同的通信協(xié)議(通信規(guī)程),才能解決傳送速率、信息格式、位同步、字符同步、數(shù)據(jù)校驗(yàn)等問題串行異步通信以字符為單位進(jìn)行傳輸,其通信協(xié)議是起止式異步通信協(xié)議69起止式異步通信協(xié)議起始位——每個(gè)字符開始傳送的標(biāo)志,起始位采用邏輯0電平起始位校驗(yàn)位停止位空閑位數(shù)據(jù)位低位高位字符0/10/10/10/110111…數(shù)據(jù)位——數(shù)據(jù)位緊跟著起始位傳送。由5~8個(gè)二進(jìn)制位組成,低位先傳送校驗(yàn)位——用于校驗(yàn)是否傳送正確;可選擇奇檢驗(yàn)、偶校驗(yàn)或不傳送校驗(yàn)位停止位——表示該字符傳送結(jié)束。停止位采用邏輯1電平,可選擇1、1.5或2位空閑位——傳送字符之間的邏輯1電平,表示沒有進(jìn)行傳送70數(shù)據(jù)傳輸速率數(shù)據(jù)傳輸速率也稱比特率(BitRate)每秒傳輸?shù)亩M(jìn)制位數(shù)bps字符中每個(gè)二進(jìn)制位持續(xù)的時(shí)間長(zhǎng)度都一樣,為數(shù)據(jù)傳輸速率的倒數(shù)當(dāng)進(jìn)行二進(jìn)制數(shù)碼傳輸,且每位時(shí)間長(zhǎng)度相等時(shí),比特率還等于波特率(BaudRate)過去,串行異步通信的數(shù)據(jù)傳輸速率限制在50bps到9600bps之間。現(xiàn)在,可以達(dá)到115200bps或更高71同步通信以一個(gè)數(shù)據(jù)塊(幀)為傳輸單位,每個(gè)數(shù)據(jù)塊附加1個(gè)或2個(gè)同步字符,最后以校驗(yàn)字符結(jié)束同步通信的數(shù)據(jù)傳輸效率和傳輸速率較高,但硬件電路比較復(fù)雜串行同步通信主要應(yīng)用在網(wǎng)絡(luò)當(dāng)中最常使用高級(jí)數(shù)據(jù)鏈路控制協(xié)議HDLC~~~~同步字符數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)校驗(yàn)字符72傳輸制式全雙工站A站B站A站B站A站B半雙工單工示例73串行通信口的中斷功能計(jì)算機(jī)的通信功能是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)的最基本功能。如果計(jì)算機(jī)沒有通信功能,計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境也就無從談起。一臺(tái)計(jì)算機(jī)與其它計(jì)算機(jī)(或設(shè)備)之間通信除了必要的物理連接之外,它們之間通信接口的功能就是另一個(gè)極其重要的功能模塊。從計(jì)算機(jī)通信的本質(zhì)來看,通信就是發(fā)送或接受具有一定格式的二進(jìn)制位。這些二進(jìn)制位通過一些應(yīng)用程序——如瀏覽器——的解釋顯示成具有不同表達(dá)形式的文字或圖象。74DOS中的通信功能DOS中的通信功能INT21H提供了對(duì)通信口COM1操作的功能調(diào)用。03H——從串形通信口讀入一個(gè)字符, 返回8位數(shù)據(jù)到AL04H——向串形通信口輸出一個(gè)字符,輸出參數(shù)放在DL中MS-DOS有一條命令可以設(shè)置COM端口的參數(shù)。格式:

MODECOMm:b,p,d,s其中:m=1~4(端口號(hào)) b=xx

(取波特率的高兩位數(shù)字)

p是校驗(yàn)位:N無校驗(yàn),O奇校驗(yàn),E偶校驗(yàn)

d默認(rèn)為7,表示數(shù)據(jù)的字長(zhǎng)(5~8) s是終止位數(shù)(1,1.5,2)75BIOS中的通信功能BIOS中的通信功能BIOS系統(tǒng)提供了中斷14H來實(shí)現(xiàn)對(duì)通信端口的控制能。AH功能調(diào)用參數(shù)返回參數(shù)0—初始化通信口AL=初始化參數(shù)DX=通信口號(hào)AH=通信口狀態(tài)1—向通信口輸出字符AL=輸出字符DX=通信口號(hào)成功AH=0;失敗AH7=1AH0~6=狀態(tài)2—從通信口讀入字符DX=通信口號(hào)成功AH=0AL=字符失敗AH7=1AH0~6=狀態(tài)3—讀取通信口狀態(tài)DX=通信口號(hào)AH=通信口狀態(tài)76DOS&BIOS中的通信功能

串行通訊口初始化參數(shù)串行通訊口狀態(tài)字節(jié)(置1時(shí)的含義)波特率7654321010=7位11=8位校驗(yàn)字長(zhǎng)終止位0=1位1=2位01=奇校驗(yàn)11=偶校驗(yàn)X0=無校驗(yàn)76543210超時(shí)間斷(BI)發(fā)送保存寄存器空(THRE)數(shù)據(jù)準(zhǔn)備好(DR)幀格式錯(cuò)(FE)奇偶錯(cuò)(PE)超越錯(cuò)(OE)發(fā)送移位寄存器空(TSRE)77例1.把字符串"Hello,World"從COM1端口傳輸出去。在傳輸過程中,要求傳輸速率為9600波特,字長(zhǎng)為8位,1位停止位,無齊偶校驗(yàn)。78續(xù)例1.:79例2.把從COM1端口讀入的字符顯示在屏幕上。如果通信端口數(shù)據(jù)未準(zhǔn)備好,則程序處于等待狀態(tài);若傳輸出錯(cuò),則用紅色顯示字符"?"。80續(xù)例2..ELSE

MOV

AL,'?';顯示字符"?"

MOV

BL,12;錯(cuò)誤顏色:紅

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論