微機(jī)原理答案解析_第1頁(yè)
微機(jī)原理答案解析_第2頁(yè)
微機(jī)原理答案解析_第3頁(yè)
已閱讀5頁(yè),還剩16頁(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)介

1、習(xí)題與思考題(參考答案)第一章1.6 將下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。256D =10000000B 237.135D=11101101.0010001B12.58D=1100.100101B 0.374D=0.0101B1.7 寫出下列二進(jìn)制數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)。1101110B=110D=156Q=6EH 111011000B=472D=730Q=1D8H 1101111.1001B=111.5625D=157.44Q=6F.9H1.8 填空:10101.001B =( 21.125) D =( 25.1) Q =( 15.2) H2DE.6H =( 1011011110.

2、011) B =( 1336.3) Q=( 734.375) D1.9 試寫出下列用補(bǔ)碼表示的二進(jìn)制數(shù)的真值。00111010 t 00111010 t +58 10000000 12810000101 t 11111011 * 12311111110 t 10000010 201111110 t 01111110 t +1261.10已知X= 35 ,Y = 89,試用補(bǔ)碼運(yùn)算法則,求出:X + Y = ?乂補(bǔ)=00100011丫原=11011001丫補(bǔ)=10100111:X + 丫補(bǔ)=X補(bǔ) + 丫補(bǔ)=00100011+10100111 = 11001010X + Y= 10110110B

3、= 541.11 已知乂補(bǔ)=10011011, X + 丫補(bǔ)=10111001,試求: X Y 補(bǔ)=?(有溢出,結(jié)果出錯(cuò)。)因?yàn)閄 + 丫補(bǔ)=X補(bǔ) + 丫補(bǔ)=10111001 所以丫補(bǔ)=乂+ Y補(bǔ)乂補(bǔ)=00011110Y 補(bǔ)=11100010X Y 補(bǔ)=X補(bǔ) + Y 補(bǔ)=10011011+11100010= 01111101 X、Y的真值各為多少?乂原=11100101,X的真值為一101 ; 丫原=00011110,Y 的真值為 30 第二章2.3 8086CPU 的 ALE 信號(hào)的功能是什么?答:ALE (Address Latch Enable)是8086CPU提供給地址鎖存器的控制信號(hào)

4、,在任何一個(gè) 總線周期的 T1 狀態(tài), ALE 輸出有效電平(正脈沖) ,以表示當(dāng)前地址數(shù)據(jù)、地址狀態(tài) 復(fù)用總線上輸出的是地址信息,鎖存器可利用它的下降沿將地址鎖存起來(lái)。ALE 信號(hào)不能浮空。2.4 8086CPU 內(nèi)部的寄存器由哪幾種類型組成?各自的作用是什么?答:8086CPU內(nèi)部有14個(gè)16位寄存器,可以分為以下三組:分別是通用寄存器組,段寄 存器組,控制寄存器。通用寄存器組可以分為兩組:數(shù)據(jù)寄存器和地址指針與變址寄存器。 數(shù)據(jù)寄存器主要用來(lái)保存算術(shù)、邏輯運(yùn)算的操作數(shù)、中間結(jié)果和地址。地址指針與變址寄存器主要用于存放或指示操作數(shù)的偏移地址。段寄存器組: 80868088CPU 內(nèi)部設(shè)置了

5、 4 個(gè) 16 位段寄存器,它們分別是代碼段寄存器 CS、數(shù)據(jù)段寄存器 DS、堆棧段寄存器 SS、附加段寄存器 ES,由它們給出相應(yīng)邏輯段的首 地址,稱為 “段基址 ”??刂萍拇嫫鳎汉噶钪羔?IP 及標(biāo)志位寄存器 FR。IP 用來(lái)存放將要執(zhí)行的下一條指令在現(xiàn)行代碼段中的偏移地址。標(biāo)志寄存器 FR 用來(lái)存放運(yùn)算結(jié)果的特征。2.6 8086 的存儲(chǔ)器采用什么結(jié)構(gòu)?答:8086 的存儲(chǔ)器采用分體結(jié)構(gòu)。 1M 的存儲(chǔ)空間分成兩個(gè)存儲(chǔ)體: 偶地址存儲(chǔ)體和奇地址 存儲(chǔ)體,各為 512K 字節(jié)。2.7 8086CPU 訪問(wèn)存儲(chǔ)器時(shí)物理地址是如何形成的?答:8086CPU訪問(wèn)存儲(chǔ)器時(shí)根據(jù)所執(zhí)行的操作, 自動(dòng)

6、選擇某個(gè)段寄存器, 將其中的內(nèi)容(16 位)自動(dòng)左移 4位形成 20 位地址的高 16位,而 20位地址的低 4位自動(dòng)添 0,然后通過(guò) 20 位地址加法器再與 16 位偏移量相加,形成對(duì)應(yīng)的物理地址。2.10 名詞解釋(1)時(shí)鐘周期:一個(gè)時(shí)鐘脈沖的時(shí)間長(zhǎng)度,CPU的時(shí)鐘頻率的倒數(shù),也稱 T狀態(tài)。(2)總線周期: CPU 中, BIU 完成一次訪問(wèn)存儲(chǔ)器或 I/O 端口操作所需要的時(shí)間,稱作 一個(gè)總線周期,也稱機(jī)器周期( Machine Cycle ) 。(3)指令周期:執(zhí)行一條指令所需的時(shí)間稱為指令周期。(4)等待周期:在 T3 和 T4 之間插入的周期。(4)空閑狀態(tài): CPU 不執(zhí)行總線周

7、期時(shí)的狀態(tài)。(5)時(shí)序:計(jì)算機(jī)操作運(yùn)行的時(shí)間順序。2.12 如果 8086 的 CLK 引腳輸入的時(shí)鐘脈沖頻率為 4MHz ,那么一個(gè)基本的總線周期是多 少?答:T = 1/4卩§那么一個(gè)基本的總線周期是4T = 1ys第三章3.5已知某個(gè)系統(tǒng)的 ROM容量為6K字節(jié),首地址為2800H,求其最后一個(gè)單元的地址。答:最后一個(gè)單元的地址=2800H+17FFH = 3FFFH3.6采用In tel 2114 (1KX4位)RAM 芯片,組成64KX8位的存儲(chǔ)器,需要多少片 2114? 答:需要 128 塊。注:擴(kuò)展時(shí)需要的芯片數(shù)量可以這樣計(jì)算:要構(gòu)成一個(gè)容量為MX N位的存儲(chǔ)器,若使用

8、p *位的芯片(p<M,k<N ),則構(gòu)成這個(gè)存儲(chǔ)器需要(M/p ) X N/k )個(gè)這樣的存儲(chǔ)器芯片。3.7某RAM芯片的存儲(chǔ)容量為 4096 X位,則該芯片的引腳中有幾條數(shù)據(jù)線和幾條地址線? 已知某 RAM 芯片引腳中有 8條數(shù)據(jù)線, 12條地址線,那么該芯片的存儲(chǔ)容量是多少? 答:該芯片的外部引腳應(yīng)有 8條數(shù)據(jù)線,12條地址線。RAM芯片引腳中有8條數(shù)據(jù)線,12條地址線,那么該芯片的存儲(chǔ)容量是4KX8位。3.8在8086存儲(chǔ)器系統(tǒng)的最高地址區(qū)組成32KB的ROM,要求采用2764芯片(8KX8的EPROM ),以及利用74LS138譯碼器進(jìn)行全譯碼,請(qǐng)畫出這些芯片與系統(tǒng)總線連

9、接的示意 圖。74LS138G1G2AG2B&OA19A18A17A16A15A14A13ABC2764(1)2764(2)2764(3)2764(4)A12A0CECECECEY4Y5Y6Y7O第四章4.1 試出指令 MOV BX ,3040H 和 MOV BX , 3040H 有什么不同? 1、尋址方式不同:立即數(shù)尋址和直接尋址。2、運(yùn)行結(jié)果不同:MOV BX , 3040H ; BX=3040HMOV BX , 3040H;將 DS 段 3040H 和 3041H 的內(nèi)容送 BX4.2 指出下列指令是否有錯(cuò),并說(shuō)明理由。(1)MOV DI , SI ;錯(cuò),內(nèi)存單元之間不能直接進(jìn)行

10、數(shù)據(jù)傳送(2)MOV CS,AX;錯(cuò), CS 不能做目的操作數(shù)(3)MOV 1200, AX ;錯(cuò),立即數(shù)不能做目的操作數(shù)(4)MOV DS, CS;錯(cuò),段寄存器之間不能互相傳送(5)POP CS;錯(cuò), CS 不能做目的操作數(shù)(6)MOV CL, AX;錯(cuò),源、目的操作數(shù)長(zhǎng)度不一致(7)MOV 5000H ,1000H ;錯(cuò),內(nèi)存單元之間不能直接進(jìn)行數(shù)據(jù)傳送4.3 在 8086 中,堆棧操作是字操作還是字節(jié)操作?已知SS=1050H,SP=0006H,AX=1234H ,若對(duì) AX 執(zhí)行壓棧操作(即執(zhí)行 PUSH AX );試問(wèn) AX 的內(nèi)容存放在何處? 答:堆棧操作是字操作。入棧時(shí) 先減后壓

11、” SP先減2,再壓入操作數(shù)),執(zhí)行壓棧操作后 AL的內(nèi)容存放在10504H,AH 的內(nèi)容存放在 10505H 。4.4 假如要從 200 中減去 AL 中的內(nèi)容,用 SUB 200, AL 對(duì)嗎?如果不對(duì),應(yīng)采用什么方法? 答:不對(duì),立即數(shù)不能作為目的操作數(shù)。先把立即數(shù)傳送到一個(gè)存儲(chǔ)器或寄存器當(dāng)中。例如: MOV BL ,200SUB BL, AL或: NEG ALADD AL, 2004.5 編程求 AX 累加器和 BX 寄存器中兩個(gè)無(wú)符號(hào)數(shù)之差的絕對(duì)值,結(jié)果放內(nèi)存( 2800H ) 單元中。解: CMP AX , BXCMP AX , BX CLCJA PT1JA PT1 SUB AX

12、, BXSUB BX , AXXCHG AX , BX JC PT1MOV DX , 2800HMOV DX ,BXPT1:SUB AX , BXMOV 2800H , AXMOV DI , 2800H MOV DI , AXHLT HLT HLTPT1: SUB AX , BXMOV DX ,2800HPT1:SUB BX ,AXMOV DI ,2800HMOV DX , AXHLTMOV DI , BXHLT4.6 若有兩個(gè) 4 字節(jié)的無(wú)符號(hào)數(shù)相加,這兩個(gè)數(shù)分別存放在2000H 和 3000H 開(kāi)始的存儲(chǔ)單元,將所求的和存放在 2000H 開(kāi)始的內(nèi)存單元中,試編制程序。MOV DI , 2

13、000H LEA SI , 3000HMOV AX , DIMOV DX , DI+2ADD AX , SIADC DX , SI+2MOV DI, AX88H 端口讀入信息的指令,再用兩種方法寫出從方法二: MOV DX ,0088H44H 端口輸出數(shù)據(jù)MOV DI+2 , DX4.7 用兩種方法寫出從56H 的指令。 方法一: IN AL , 88HIN AX , DXMOV AL , 56H MOV AL ,56HOUT 44H , ALMOV DX ,0044HOUT DX , AL4.19 指出以下四條指令的作用( HEX 為數(shù)據(jù)段的一個(gè)變量名) MOV BX, HEX ;將變量 H

14、EX 的內(nèi)容傳送到 BX 寄存器 LEA BX, HEX ;取變量 HEX 的偏移地址送 BX MOV BX, OFFSEG HEX ; BX 指向變量 HEX 的偏移地址 MOV BX, SEG HEX ;將變量 HEX 所在段的段地址傳送到 BX 4.20 下面是變量定義偽指令,DATA SEGMENTBUF DW 3 DUP(5,2 DUP(8)CED DB Welcome to you ', ODH , OAH , $'ADDR DW BUFCOUNT EQU $-CEDDATA ENDS問(wèn): 按內(nèi)存單元存放的先后次序 ,按字節(jié)寫出數(shù)據(jù)段中的數(shù)據(jù)。05H, 00H, 0

15、8H, 00H, 08H, 00H,05H, 00H, 08H, 00H, 08H, 00H,05H, 00H, 08H, 00H, 08H, 00H,57H, 65H, 6CH, 63H, 6FH, 6DH, 65H, 20H, 74H, 6FH, 20H, 79H, 6FH, 75H,0DH, 0AH, 24H, 00H, 00H 說(shuō)明 對(duì) BUF, CED, ADDR 等變量施行 TYPE, LENGTH SIZE 運(yùn)算符后,其結(jié)果分別為 多少?TYPE BUF = 2 LENGTH BUF = 3SIZE BUF = 6TYPE CED = 1 LENGTH CED = 1SIZE C

16、ED = 1TYPE ADDR = 2 LENGTH ADDR = 1 COUNT 的值為多少?SIZE ADDR = 2194.22 編寫一個(gè)將 16 位二進(jìn)制數(shù)轉(zhuǎn)換成 BCD 碼數(shù)的程序。 DATA SEGMENTBIN DB 5C0EH ;待轉(zhuǎn)換數(shù)為 23567ADEC DB 5 DUP(?)TAB DW 10000,1000,100,10,1DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA, BXEDC PROC FARSTART: MOVAX, DATAMOVDS,AXLEASI,TABLEADI,ADECMOVAX,BINLOP0: XOR

17、 CL, CL MOV BX, SILOP1: SUB AX, BX JB NEXT INC CL JMP LOP1NEXT: ADD AX, BXMOVDI, CLINCSIINCSIINC DICMP BX, 1JNZ LOP0RETBXEDC ENDP CODE ENDSEND START并將十六進(jìn)制數(shù)的各位顯示4.24 編寫一個(gè)將 16 位二進(jìn)制數(shù)轉(zhuǎn)化為四位十六進(jìn)制數(shù)的程序, 出來(lái)。注:答案中給了一個(gè)假定的 16 位二進(jìn)制數(shù)。DATA SEGMENT4 DUP(20H)DB $'DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)ST

18、ACKl ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA, SS: STACKl BINHEX: MOV CH, 4 ;十六進(jìn)制數(shù)的位數(shù)MOVBX ,BIN;取待轉(zhuǎn)移數(shù)據(jù)MOVDI ,OFFSET HEXASC ;取存放 ASCII 碼首地址CONV1:MOV CL , 4ROLBX ,CL;取 4 位二進(jìn)制數(shù)MOVAL ,BLANDAL ,0FHCMPAL ,09H;是 0-9 嗎?JBEASCI;是,轉(zhuǎn)移ADDAL ,07H;是 A-F ,先加 07HASCI:ADDAL,30H ;加 30HMOVDI ,AL;存結(jié)果INCDI;修改指針DECCHJNEC

19、ONVI;計(jì)數(shù)未完,繼續(xù)LEADX,HEXASCMOV AH ,09HINT21HCODE ENDSEND BINHEX 很多同學(xué)的答案:DATA SEGMENTA DW 4X DW ( 16 位二進(jìn)制數(shù))Y DB 4 DUP(?)DATA ENDSSTART: MOV CX, ALEADI, YAGAIN:MOV BX, XPUSHCXDECCXMOVING:SHR BX, 4LOOPMOVINGPOPCXANDBL, 0FHCMPBL, 09HJGDAYUADDBL, 30HJMPXIAOYUDAYU:ADD BL, 37HXIAOYU:MOV DI, BLINCDILOOP AGAINL

20、EADX, YMOVAH, 09HINT21HCODE ENDSENDSTART4.26 從 BUF 單元開(kāi)始有 10 個(gè)帶符號(hào)數(shù): -1,3, 248, 90,42,9042, -4539,0,-28792。 試找出它們的最大值、最小值和平均值,并分別送MAX 、 MIN 和 AVG 單元。試編寫完整的匯編語(yǔ)言程序。DATA SEGMENTBUFER DW -1, 3,248,90,42,9042,-4539,0,-28792MAX DW 0MIN DW 0AVG DW 0DATA ENDSSTACK SEGMENT PARA STACK STACK'DW 100 DUP (?)ST

21、ACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS: STACKSTART PROC FARBEGIN : PUSH DSMOV AX , 0PUSHMOVAXAX , DATAMOVDS,AXLEASI , BUFFERMOVAX ,SI;和清 0MOVBX,AX;最大值MOVDX,AX;最小值INCSIINCSIMOVCX,9LOP1: ADD AX , SICMP DX ,SI;與最小值單元中的值相比較JE NEXT1;相等轉(zhuǎn)至 NEXT1JG NEXT2 ;若大于轉(zhuǎn)至 NEXT2MOV DX , SI;把小的值送至 DXNEXT1: CMP BL

22、 , DI ;JB NEXT2 ; 若低于轉(zhuǎn)移MOV BL, DI; 小值?BL (2 分)NEXT2: MOV DL , DI ;取一字節(jié)數(shù)據(jù)ADD AX , DX ; 累加和INC DILOOP LOP1MOV MAX , BH ;送大值MOVMIN ,BL ;送小值MOVDL,6DIVDL ,;求平均值MOVAVI ,AL ;送平均值RETSTART ENDPCODE ENDSEND BEGIN5.1 8086CPU 對(duì)其 I/O 端口的尋址采用哪種方式?它的四條輸入指令:IN AL, PORT; IN AL, DX ; IN AX, PORT; IN AX, DX 的作用有何區(qū)別? 答

23、:8086CPU對(duì)其I/O端口的尋址采用I/O端口單獨(dú)尋址方式。IN AL , PORT;直接尋址,從 PORT端口讀入(輸入)一個(gè)字節(jié)到 AL。IN AL, DX ;間接尋址,從 DX 所指端口讀入(輸入)一個(gè)字節(jié)到 AL。IN AX,PORT;直接尋址,從 PORT和PORT + 1兩個(gè)端口讀入(輸入)一個(gè)字到 AX。IN AX ,DX ;間接尋址,從 DX 和 DX1 兩個(gè)端口讀入(輸入)一個(gè)字到 AX。5.5某輸入設(shè)備的接口電路中,其數(shù)據(jù)端口的地址為3F8H ;狀態(tài)端口地址為 3FEH,當(dāng)其D7 位為 1 時(shí),表示輸入數(shù)據(jù)已準(zhǔn)備好。試編寫采用查詢方式的數(shù)據(jù)傳送程序段,要求從該設(shè)備讀取

24、100 個(gè)字節(jié),并存放到自 2000H:2000H 開(kāi)始的內(nèi)存單元之中。MOV AX, 2000HMOV DS, AX;設(shè)定段基址MOV DI , 2000H;目的地址送 DIMOV CX , 100;字節(jié)數(shù)READ : MOV DX, 3FEH;指向狀態(tài)口IN AL , DX;讀入狀態(tài)位TEST AL , 80H;數(shù)據(jù)準(zhǔn)備好否 ?JZ READ;否,循環(huán)檢測(cè)MOV DX, 3F8H;指向數(shù)據(jù)口IN AL , DX;已準(zhǔn)備好,讀入數(shù)據(jù)MOV DI , AL;存到內(nèi)存緩沖區(qū)中INC DI ;修改地址指針LOOP READ;未傳送完,繼續(xù)傳送5.6 設(shè)計(jì)一個(gè)采用 74LS138 的 I/O 端口地

25、址譯碼器,要求能尋址的端口地址范圍分別是:340H 347H : 348H 34FH : 350H 357H : 378H 37FH。答案不唯一。340H 347H74LS138G1G2AG2B&A9A8A7A2A1A0ABCY0Y7A6A5A4A3&5.16 某 8086 系統(tǒng)中有三片 8259A 安排為非緩沖、級(jí)連使用,兩從片A 、B 分別接主片的IR2、IR4 ;三片8259A的端口地址分別為 20H、22H、30H、32H、40H、42H ;主片及從片A、從片B的IR5上各接有一個(gè)外部中斷源,其中斷類型號(hào)分別為75H、7DH、85H ;所有中斷都采用電平觸發(fā)方式、全嵌套

26、、非自動(dòng) EOI 方式。試完成: 畫出該系統(tǒng)中三片 8259A 級(jí)連部分簡(jiǎn)要的電器原理圖; 編寫出全部初始化程序8259A8259ACSCSINTINTY3Y2A0G1G2AG2BAB6AB5AB4AB7&M/IOAB3AB2AB0138A08259ACSINTA0CBAY4AB1IR2IR4WRIORIOW&INTR去 CPU主片ABRDWRRDRD 主片WRICW2=01110000B=70HICW3=00010100B=14HICW4=00000001B=01H從片A:ICW1=00011001B=19HICW2=01111000B=78HICW3=00000010B=0

27、2HICW4=00000001B=01H從片B:ICW1=00011001B=19HICW2=10000000B=80HICW3=00000100B=04HICW4=00000001B=01HICW1=00011001B=19H主片初始化程序:ICW1 寫入到偶端口地址 20H; ICW2 寫入到奇端口地址 22H MOV AL, 19HOUT 20H, AL ;寫入 ICW1MOV AL, 70HOUT 22H, AL ;寫入 ICW2 MOV AL, 02HOUT 22H, ALMOV AL, 01HOUT 22H, AL6.4 設(shè) 8253計(jì)數(shù)器 用。02和控制字寄存器的I/O 地址依次

28、為F8HFBH ,說(shuō)明如下程序的作MOV AL ,33H;00110011B 計(jì)數(shù)器0,先低位后高位,方式1,BCD 碼計(jì)數(shù)OUT 0FBH , AL;寫控制字MOV AL ,80H;置計(jì)數(shù)初值低位字節(jié)80HOUT 0F8H , AL;先寫低位字節(jié)MOV AL ,50H;置計(jì)數(shù)初值高位字節(jié)50HOUT 0F8H , AL;寫高位字節(jié)程序的作用為:使計(jì)數(shù)器 0 工作在方式 1,用 BCD 碼計(jì)數(shù),計(jì)數(shù)初值為 5080。6.5設(shè)8253的4個(gè)端口地址分別為 300H、302H、304H和306H,由CLKO輸入計(jì)數(shù)脈沖頻 率為2MHz。要求通道0輸出1.5kHz的方波,通道1、通道2均用通道0的輸

29、出作計(jì)數(shù)脈沖, 通道1輸出頻率為300Hz的序列負(fù)脈沖,通道 2每秒鐘向CPU發(fā)50次中斷請(qǐng)求。試編寫 初始化程序,并畫出 8253 相關(guān)引腳的連線圖。通道0:輸出方波則工作在方式3;計(jì)數(shù)初值為 no=2MHz/1.5kHn 1334=536H (1.499kHz)控制字為: 00110110B=36H通道 1:輸出序列負(fù)脈沖則工作在方式 2;計(jì)數(shù)初值為 n1=1.5kHz/300Hz=5=05H 控制字為: 01010100B=54H通道 2:每秒鐘向 CPU 發(fā) 50 次中斷請(qǐng)求則工作在方式 2;計(jì)數(shù)初值為 n2=1500/50=30=1EH控制字為:10010100B=94H初始化程序:

30、通道 0:MOV DX , 306HMOV AL , 36HOUT DX , ALMOV DX , 300HMOV AL , 36HOUT DX , ALMOV AL , 05HOUT DX , ALGATE0GATE1GATE2OUT0CLK1CLK22MHz1.5KHz 方波300Hz 序列負(fù)脈沖每秒 50 次中斷信號(hào)CSA1A0D7D0I/O譯碼M/IOA7 AOA2A1D7DO+5VOUT2CLKOOUT1WRRDWRRD7.3 編程使 8255A 的 PC5 端輸出一個(gè)負(fù)跳變。如果要求 PC5 端輸出一個(gè)負(fù)脈沖,則程序又 如何編寫?設(shè)端口地址分別為: BOH B2H B4H B6H

31、。系統(tǒng)復(fù)位后 8255A 的所有端口都被置為輸入。 控制字為: 1OOOOOOOB=8OH輸出負(fù)跳變:MOV AL, 8OHOUT B6H, ALMOV AL, OBHOUT B6H, ALMOV AL, OAHOUT B6H, AL 輸出負(fù)脈沖:MOV AL, 8OHOUT B6H, ALMOV AL, 0BHOUT B6H, ALMOV AL, 0AHOUT B6H, ALMOV AL, 0BHOUT B6H, AL7.4假設(shè)圖7.15鍵盤接口電路中 8255A的A、B、C 口和控制口地址為 218H21BH,寫出 完整的行反轉(zhuǎn)法鍵盤掃描子程序。KEY1:;設(shè)置行線接輸出端口ROWPORT

32、,列線接輸入端口 COLPORT ,并判斷是否有鍵按下KEY2: MOV AL, 00HMOV DX, ROWPORTOUT DX, AL;行線全為低MOV DX, COLPORTIN AL, DX;讀取列值CMP AL,0FFHJZ KEY2;無(wú)閉合鍵,循環(huán)等待PUSH AX;有閉合鍵,保存列值PUSH AX;設(shè)置行線接輸入端口 ROWPORT,列線接輸出端口 COLPORTMOV DX, COLPORTPOP AXOUT DX,AL;輸出列值MOV DX, ROWPORTIN AL,DXPOP BXMOV AH ,BL;查找鍵代碼MOV SI, OFFSET TABLEMOV DI, OFFSET CHARMOV CX, 64KEY3: CMP AX, SIJZ KEY4INC SIINC SIINC DILOOP KEY3JMP KEY1;讀取行值結(jié)合行列值,此時(shí)AL= 行值, AH= 列值;TABLE 為鍵值表;CHAR 為鍵對(duì)應(yīng)的代碼 鍵的個(gè)數(shù);與鍵值比較相同,說(shuō)明查到 不相同,繼續(xù)比較KEY4: MOV AL,DICALL DELAY;全部比較完,仍無(wú)相同,說(shuō)明是重鍵;獲取鍵代碼送 AL 判斷按鍵是否釋放,沒(méi)

溫馨提示

  • 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)論