微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(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)介

1、.微型計(jì)算機(jī)原理 實(shí)驗(yàn)指導(dǎo)書(shū)楊鵬 陳玲玲 張雪萍 編寫(xiě)河北工業(yè)大學(xué) 自動(dòng)化系二零零六年八月目 錄實(shí)驗(yàn)一 簡(jiǎn)單程序調(diào)試(1)1實(shí)驗(yàn)二 簡(jiǎn)單程序調(diào)試(2)4實(shí)驗(yàn)三 匯編程序設(shè)計(jì)及調(diào)試(1)6實(shí)驗(yàn)四 匯編程序設(shè)計(jì)及調(diào)試(2)12實(shí)驗(yàn)五 32位微機(jī)接口技術(shù)實(shí)驗(yàn)17實(shí)驗(yàn)六 8254定時(shí)/計(jì)數(shù)器應(yīng)用實(shí)驗(yàn)23實(shí)驗(yàn)七 并行接口8255 34附錄1 TD-PIT+實(shí)驗(yàn)系統(tǒng)的硬件環(huán)境44附錄2 Tddebug集成操作軟件56*;微型計(jì)算機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)一 簡(jiǎn)單程序調(diào)試(1)一 實(shí)驗(yàn)?zāi)康模?. 熟悉8086常用指令;2. 掌握Tddebug集成操作軟件的操作指令。二 實(shí)驗(yàn)內(nèi)容:1. 在Tddebug集成操作軟件

2、環(huán)境下輸入下列程序片段,用Trace命令單步執(zhí)行并記錄結(jié)果。程序片段 運(yùn)行結(jié)果1) DATASEGMENTDATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, 2000HMOV DS, AXDS=MOV DX, 0100HMOV SI, 0000HMOV BYTE PTRSI+0100H, 0AAHDS: 0100=MOV AL, SI+0100HAL=MOV BX, 0100HMOV WORD PTRSI+BX, 1234HMOV AX, SI+BX+0HAX=INT 20HCODEENDSEND START2)DATASEGME

3、NTDATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART: MOV AL, 0FFHMOV AH, 00HAX=XCHG AL, AHAX=MOV AL, 07HMOV AH, 00HMOV BL, 08HADD AL, BLAH= AL=AAAAH= AL=MOV AX, 0FFFFHMOV BX, 8080HSUB AX, BXAX=MOV AX, 0FFFFHMOV BX, 0FFFFHMUL BXDX= AX=MOV AX, 1000HMOV DX, 2000HMOV CX, 4000HDIV CXDX= AX=INT 20HCODEEND

4、SEND START2. 自編程序段實(shí)現(xiàn)兩個(gè)兩字節(jié)無(wú)符號(hào)數(shù)相加。要求:已將1234H和5678H分別放在DATA1和DATA2開(kāi)始的存儲(chǔ)單元中,低位在前,高位在后,計(jì)算1234H+5678H,運(yùn)算結(jié)果放在DATA1開(kāi)始的單元。用Trace命令單步執(zhí)行,并查看有關(guān)存儲(chǔ)單元。DATASEGMENTDATA1DB 34H, 12HDATA2DB 78H, 56HDATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AX在此處輸入自編的程序HLTCODE ENDSEND START三 選修實(shí)驗(yàn)在Tddebug集成操作

5、軟件環(huán)境下輸入下列帶符號(hào)數(shù)乘法程序片段,單步執(zhí)行并記錄結(jié)果。程序片段 運(yùn)行結(jié)果CODESEGMENTASSUME CS: CODESTART:MOV AX, 04E8HMOV BX, 4E20HIMUL BXDX= AX=MOV AX, 8100HMOV BX, 0050HIMUL BXDX= AX=INT 20HCODEENDSEND START實(shí)驗(yàn)二 簡(jiǎn)單程序調(diào)試(2)一 實(shí)驗(yàn)?zāi)康模?. 熟悉8086常用指令;2. 掌握Tddebug集成操作軟件操作指令。二 實(shí)驗(yàn)內(nèi)容:1. 在Tddebug集成操作軟件環(huán)境下輸入下列程序片段,用Trace命令單步執(zhí)行,單步執(zhí)行并記錄結(jié)果。程序片段 運(yùn)行結(jié)果

6、1) CODESEGMENTASSUME CS: CODESTART:MOVAL, 09HORAL, 30HAL=ANDAL, 0FHAL=INT20HCODE ENDSEND START2) CODESEGMENTASSUME CS: CODESTART:MOVAX, 0001HSHLAX, 1AX=MOVBX, AXSHLAX, 1AX=SHLAX, 1AX=ADDAX, BXAX=INT20HCODEENDSEND START3) CODESEGMENTASSUME CS: CODESTART:MOVAX, 1024HSHRAX, 1AX=XCHGAL, AHAX=CBWAX=INT20

7、HCODE ENDSEND START4) 將兩個(gè)無(wú)符號(hào)八位數(shù)分別存放在2000H和2001H單元中,比較它們的大小,大者存入2002H單元。CODESEGMENTASSUME CS: CODESTART:MOVSI, 2000HMOVAL, SIDS:2000=INCSIDS:2001=CMPAL, SIJNCNEXTMOVAL, SINEXT:INCSIMOVSI, ALDS:2002=INT20CODEENDSEND START2. 自編程序段,在Tddebug集成操作軟件環(huán)境下運(yùn)行1) 將3FH拆成03H和0FH分別存入BH和BL寄存器。2) 要求:用Trace命令單步執(zhí)行。3) 將2

8、000H單元開(kāi)始的20個(gè)字節(jié)移至3000H開(kāi)始的單元。4) 要求:向2000H開(kāi)始的20個(gè)單元寫(xiě)數(shù),用Trace命令單步執(zhí)行,檢查3000H開(kāi)始的單元內(nèi)容。5) 從2000H單元開(kāi)始存放的20個(gè)八位數(shù)據(jù)中找出最大者存入3000H單元。注:在1(4)、2(2)和2(3)三題中,均遇到向某單元寫(xiě)數(shù)的問(wèn)題。本實(shí)驗(yàn)的解決方法為:在Tddebug主菜單中執(zhí)行Rmrun 菜單中的Debug,就進(jìn)入了實(shí)模式調(diào)試窗口。當(dāng)焦點(diǎn)區(qū)域在數(shù)據(jù)顯示區(qū)中時(shí),利用Ctrl + G指定需要顯示的代碼區(qū)域首地址,然后修改光標(biāo)當(dāng)前指示存儲(chǔ)單元的內(nèi)容,即輸入所需的數(shù)。實(shí)驗(yàn)三 匯編程序設(shè)計(jì)及調(diào)試(1)一 實(shí)驗(yàn)?zāi)康模?. 進(jìn)一步熟悉8

9、086指令,掌握編程方法;2. 熟悉利用Tddebug集成操作軟件編輯,編譯,鏈接,調(diào)試和運(yùn)行8086匯編語(yǔ)言程序的過(guò)程。二 實(shí)驗(yàn)內(nèi)容:1. 根據(jù)框圖讀懂下面程序(多字節(jié)十進(jìn)制數(shù)相加且顯示),上機(jī)打開(kāi)程序A.asm進(jìn)行編輯,編譯,鏈接,調(diào)試。 加法子程序開(kāi)始DX SI ,BP DI將ASCII碼表示的數(shù)轉(zhuǎn)為十六進(jìn)制數(shù)SI DX,DI BP帶進(jìn)位加法運(yùn)算,進(jìn)行AAA調(diào)整,SI ALSI DX,DI BP將十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼返 回開(kāi) 始數(shù)據(jù)段寄存器DS,堆棧段寄存器SS,堆棧指針SP初始化SS,堆棧指針SP初始化顯示被加數(shù)顯示加數(shù)加法運(yùn)算顯示結(jié)果結(jié)束返回顯示子程序開(kāi)始顯示被加數(shù)(加數(shù)或結(jié)

10、果)的一個(gè)字節(jié)BX BX-1BX=0?返回YN加法程序清單:CRLFMACRO ;回車(chē)換行宏定義MOVDL, 0DHMOVAH, 02HINT 21HMOVDL, 0AHMOVAH, 02HINT 21H ENDMDATASEGMENTDATA1DB 33H, 39H, 31H, 37H, 34HDATA2DB 36H, 35H, 30H, 38H, 32HDATAENDS STACK1SEGMENT STACKSTA DB 20DUP(?)TOPEQULENGTHSTASTACK1ENDSCODESEGMENT ASSUMECS: CODE, DS: DATA, SS: STACK1, ES

11、: DATASTART:MOVAX, DATA;初始化MOVDS, AXMOVAX, STACK1MOVSS, AXMOVAX, TOPMOVSP, AXMOVSI, OFFSET DATA2;顯示被加數(shù)MOVBX, 05CALL DISPLCRLFMOVSI, OFFSET DATA1;顯示加數(shù)MOVBX, 05CALL DISPLCRLFMOVDI, OFFSET DATA2;加法運(yùn)算CALL ADDAMOVSI, OFFSET DATA1;顯示結(jié)果MOVBX, 05CALL DISPLCRLFMOVAX, 4C00HINT 21HDISPL PROCNEAR;顯示子程序DSI: MOVA

12、H, 02 MOVDL, SI+BX-1INT 21HDECBXJNZ DSIRETDISPL ENDPADDA PROC NEAR;加法子程序MOVDX, SIMOVBP, DIMOVBX, 05AD1: SUBBYTE PTR SI+BX-1, 30HSUB BYTE PTR DI+BX-1, 30HDECBXJNZ AD1MOVSI, DXMOVDI, BPMOVCX, 05CLCAD2: MOVAL, SIMOVBL, DIADCAL, BLAAAMOVSI, ALINC SIINC DILOOP AD2MOVSI, DXMOVDI, BPMOVBX, 05AD3: ADDBYTE P

13、TR SI+BX-1, 30HADDBYTE PTR DI+BX-1, 30HDECBXJNZ AD3RETADDA ENDPCODE ENDS ENDSTART2. 編輯程序并上機(jī)調(diào)試:1) 排序。要求:將十個(gè)無(wú)符號(hào)數(shù)放入DATA1開(kāi)始的內(nèi)存單元,由小到大排列后放回DATA1開(kāi)始的內(nèi)存單元中。2) 將一個(gè)BCD碼00100轉(zhuǎn)換成二進(jìn)制數(shù)。要求:五位BCD碼由高到低放在BHBLDHDL00萬(wàn)位千位 百位十位 個(gè)位轉(zhuǎn)換結(jié)果放在DI寄存器中。BCD碼轉(zhuǎn)換二進(jìn)制數(shù)框圖:屏蔽BL高四位用加法指令實(shí)現(xiàn)AX*10 AX (AX+BX)循環(huán)次數(shù)CL 4DX算術(shù)左移1位,BL帶CY循環(huán)左移1位CL CL-1,

14、CL=0?CH CH-1,CH=0?存結(jié)果DI AX開(kāi) 始BCD低四位DX, BCD最高位 BL位計(jì)數(shù)CH 5,BH 0, 結(jié)果AX 0結(jié)束,返回三 選修實(shí)驗(yàn)1. 在Tddebug集成操作軟件環(huán)境下輸入下列程序片段,首先觀察數(shù)據(jù)段內(nèi)存單元的內(nèi)容、各個(gè)變量在內(nèi)存中的存儲(chǔ)方式以及順序,然后用Trace命令單步執(zhí)行并觀察寄存器的內(nèi)容及執(zhí)行結(jié)果。DATA SEGMENTDATA1 DW 64FFHEXPR DB 2*3+7STR1 DB 'WLCOME'AB DW 'AB'BADW 'AB'DATAENDSSTACK1SEGMENT STACKSTACK

15、1ENDSCODESEGMENTASSUME CS: CODE, DS: DATA, SS: STACK1START: MOV AX, DATA MOV DS, AX MOV AX, DATA1 MOV AL, EXPR MOV CX, 6NEXT: MOV SI, OFFSET STR1 MOV AL, SI LOOP NEXT MOV AX, AB MOV BX, BA MOV AX, 4C00H INT 21HCODE ENDS END START 2. 編寫(xiě)一個(gè)統(tǒng)計(jì)AX中1的個(gè)數(shù)的程序,將統(tǒng)計(jì)結(jié)果放在CL中。實(shí)驗(yàn)四 匯編程序設(shè)計(jì)及調(diào)試(2)一 實(shí)驗(yàn)?zāi)康模?. 掌握編程基本方法和Tdde

16、bug集成操作軟件環(huán)境下運(yùn)行匯編語(yǔ)言程序;2. 熟悉常用的DOS調(diào)用和BIOS調(diào)用。二 實(shí)驗(yàn)內(nèi)容:1. 編制程序上機(jī)調(diào)試,在屏幕上先顯示A,下一行再顯示I AM A BOY。2. 編制程序上機(jī)調(diào)試設(shè)置光標(biāo),設(shè)置光標(biāo)類(lèi)型起始行為第5行,結(jié)束行為第7行,設(shè)置光標(biāo)在屏幕上的位置低18行18列;在光標(biāo)位置上顯示字符A,背景顏色為藍(lán)色,前景為白色。DS,SS,ES,SP初始化用INT 10H的07H清屏用INT 10H的01H設(shè)置光標(biāo)類(lèi)型用INT 10H的02H設(shè)定光標(biāo)位置設(shè)置字符的前景和背景顏色結(jié)束返回開(kāi) 始3. 編制程序上機(jī)調(diào)試在首地址為DATA1的單元中存放6個(gè)有符號(hào)數(shù),求出它們的平均值A(chǔ)L,并求

17、出其中有幾個(gè)數(shù)小于平均值,將結(jié)果放在BL中,程序框圖:結(jié)束 返回YYNNN開(kāi)始數(shù)據(jù)段DS,堆棧段SS初始化;計(jì)數(shù)CX6;BX0SI指向數(shù)組有效地址ALSI;將AL擴(kuò)展成字CX=0?SI< AL?CX=0?BXAX+BX;SISI+1;CXCX-1相加結(jié)果送AX;求平均值A(chǔ)X/6送AL計(jì)數(shù)BX0;SI指向數(shù)組有效地址;CX6計(jì)數(shù)BXBX+1SISI+1;CXCX-1CX=0?4. 將鍵盤(pán)收到的四位十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制(或十六進(jìn)制)數(shù),在屏幕上顯示。開(kāi) 始段寄存器DS,SS和堆棧指針SP初始化調(diào)用GETUNM,接收鍵入數(shù)值保存在DX中調(diào)轉(zhuǎn)換子程序使十二(或十十六)計(jì)數(shù)16送CXDX送BX,B

18、X中內(nèi)容循環(huán)左移1位BL移入DL;屏蔽DL高7位DL加30H變成ASCII碼顯示CX CX-1;CX=0?結(jié)束 返回結(jié) 束YNDOSSEG.MODEL SMALL.DATAERR1 DB 'INPUT ERROR!', 0DH, 0AH, '$'CRLF DB 0DH, 0AH, '$'HIGHW DW 0.STACK 100H.CODESTART:MOV AX, DATAMOV DS, AXLP:MOV BX, 0LP0: ;GET BCD NUMBER AND CONVERT TO HEX MOV AH, 1INT 21HCMP AL, 0D

19、HJZ LP1CMP AL, 27JZ LP4SUB AL, 30HJB ERRORCMP AL, 0AHJAE ERRORMOV AH, 0ADD BX, BXADD AX, BXADD BX, BXADD BX, BXADD BX, AXJMP LP0LP1:LEA DX, CRLFMOV AH, 9INT 21HMOV CX, 4 ;DISPLAY 4 DIGITSLP2: MOV DL, 0SHL BX, 1RCL DL, 1SHL BX, 1RCL DL, 1SHL BX, 1RCL DL, 1SHL BX, 1RCL DL, 1ADD DL, 30HCMP DL, 3AHJB LP

20、3ADD DL, 7LP3:MOV AH, 2INT 21HLOOP LP2LEA DX, CRLFMOV AH, 09HINT 21HJMP LPERROR: PUSH BXMOV AH, 3MOV BH, 0INT 10HMOV AH, 2MOV BH, 0DEC DLINT 10HMOV CX, 1MOV BH, 0MOV BL, 0CHMOV AH, 09HINT 10HPOP BXJMP LP0LP4:MOV AX, 4C00HINT 21HEND START三 選修實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康臑檎莆战邮真I盤(pán)數(shù)據(jù)的方法,并了解鍵盤(pán)數(shù)據(jù)顯示時(shí)必須轉(zhuǎn)換為ASCII碼的原理。編寫(xiě)程序,將鍵盤(pán)接收到的兩位十

21、進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),并顯示在屏幕上。實(shí)驗(yàn)五 32位微機(jī)接口技術(shù)實(shí)驗(yàn)5.1 基本I/O接口電路設(shè)計(jì)實(shí)驗(yàn)一 實(shí)驗(yàn)?zāi)康模?. 掌握基本I/O接口電路的設(shè)計(jì)方法;2. 熟練匯編語(yǔ)言I/O端口操作指令的使用。二 實(shí)驗(yàn)設(shè)備:PC微機(jī)一臺(tái)、 TD-PIT+ 實(shí)驗(yàn)系統(tǒng)一套。三 實(shí)驗(yàn)內(nèi)容利用三態(tài)緩沖器 74LS245、鎖存器 74LS374設(shè)計(jì)微機(jī)總線和外部設(shè)備的數(shù)據(jù)通道,實(shí)現(xiàn)微機(jī)對(duì)外部輸入數(shù)據(jù)的讀取和對(duì)輸出數(shù)據(jù)的輸出。用開(kāi)關(guān)及 LED 顯示單元的開(kāi)關(guān)和數(shù)據(jù)燈作為輸入和輸出顯示設(shè)備,將讀到開(kāi)關(guān)的數(shù)據(jù)顯示在數(shù)據(jù)燈上。四 實(shí)驗(yàn)原理1. 輸入接口設(shè)計(jì)輸入接口一般用三態(tài)緩沖器實(shí)現(xiàn),外部設(shè)備輸入數(shù)據(jù)通過(guò)三態(tài)緩沖器,通

22、過(guò)數(shù)據(jù)總線傳送給微機(jī)系統(tǒng)。74LS245是一種8通道雙向的三態(tài)緩沖器,其管腳結(jié)構(gòu)如圖5-1-1所示。 DIR 引腳控制緩沖器數(shù)據(jù)方向, DIR 為1表示數(shù)據(jù)由A7:0至 B7:0 ,DIR為0表示數(shù)據(jù)由 B7:0至A7:0。G引腳為緩沖器的片選信號(hào),低電平有效。圖 5-1-1 74LS245雙向三態(tài)緩沖器管腳圖2. 輸出接口設(shè)計(jì)輸出接口一般用鎖存器實(shí)現(xiàn),從總線送出的數(shù)據(jù)可以暫存在鎖存器中。 74LS374是一種 8 通道上沿觸發(fā)鎖存器。其管腳結(jié)構(gòu)如圖 5-1-2所示。D7:0為輸入數(shù)據(jù)線,Q7:0為輸出數(shù)據(jù)線。CLK引腳為鎖存控制信號(hào),上升沿有效。當(dāng)上升沿到時(shí),輸出數(shù)據(jù)線鎖存輸入數(shù)據(jù)線上的數(shù)據(jù)

23、。OE引腳為鎖存器的片選信號(hào),低電平有效。 圖 5-1-2 74LS374上沿觸發(fā)鎖存器管腳圖3. 輸入輸出接口設(shè)計(jì)用 74LS245和 74LS374可以組成一個(gè)輸入輸出接口電路,既實(shí)現(xiàn)數(shù)據(jù)的輸入又實(shí)現(xiàn)數(shù)據(jù)的輸出,輸入輸出可以占用同一個(gè)端口。是輸入還是輸出用總線讀寫(xiě)信號(hào)來(lái)區(qū)分??偩€讀信號(hào)IOR和片選信號(hào)CS相“或”來(lái)控制輸入接口74LS245的使能信號(hào)G??偩€寫(xiě)信號(hào) IOW 和片選信號(hào) CS 相“或”來(lái)控制輸出接口74LS374的鎖存信號(hào)CLK。實(shí)驗(yàn)系統(tǒng)中基本輸入輸出單元就實(shí)現(xiàn)了兩組這種的電路,任意A組的電路連接如圖5-1-3所示。圖 5-1-3 用74LS245和74LS374組成的輸入輸

24、出接口電路五 實(shí)驗(yàn)說(shuō)明及步驟本實(shí)驗(yàn)實(shí)現(xiàn)的是將開(kāi)關(guān)K7:0的數(shù)據(jù)通過(guò)輸入數(shù)據(jù)通道讀入CPU的寄存器,然后再通過(guò)輸出數(shù)據(jù)通道將該數(shù)據(jù)輸出到數(shù)據(jù)燈顯示,該程序循環(huán)運(yùn)行,直到按動(dòng)鍵盤(pán)上任意按鍵再退出程序。實(shí)驗(yàn)程序流程如圖5-1-4所示,參考實(shí)驗(yàn)接線如圖5-1-5所示。實(shí)驗(yàn)步驟如下:1. 確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。2. 參考圖 5-1-5所示連接實(shí)驗(yàn)線路。3. 首先運(yùn)行 CHECK程序,查看并記錄與片選信號(hào)對(duì)應(yīng)的 I/O 端口始地址。 4. 參考實(shí)驗(yàn)流程圖閱讀程序Tio.asm,注意端口地址,然后編譯鏈接。 5. 運(yùn)行程序Tio.asm,撥動(dòng)開(kāi)關(guān),觀看數(shù)據(jù)燈顯示是否正確。6.

25、運(yùn)行程序TRAFICLIGHT.asm,觀看數(shù)據(jù)燈模擬交通燈的閃爍過(guò)程是否正確。設(shè)有一個(gè)十字路口,1、3為南、北方向,2、4為東、西方向,初始狀態(tài)為四個(gè)口的紅燈全亮,之后1、3口的紅燈亮,2、4口的綠燈亮,延遲一段時(shí)間后,1、3口的綠燈亮,2、4口的紅燈亮,延遲一段時(shí)間后,重復(fù)上述過(guò)程。圖5-1-4 基于I/O接口設(shè)計(jì)實(shí)驗(yàn)參考程序流程圖圖5-1-5 基于I/O接口設(shè)計(jì)實(shí)驗(yàn)參考接線圖程序清單:;Tio.asm;基本I/O接口電路設(shè)計(jì)實(shí)驗(yàn);*根據(jù)CHECK配置信息修改下列符號(hào)值*IOY0 EQU 9C00H ;片選IOY0對(duì)應(yīng)的端口始地址IOY1 EQU 9C40H ;片選IOY1對(duì)應(yīng)的端口始地址

26、;* *MYIO_A EQU IOY0+00H*4 ;基本輸入輸出單元A組端口地址MYIO_B EQU IOY1+00H*4 ;基本輸入輸出單元B組端口地址STACK1SEGMENT STACKDW256 DUP(?)STACK1ENDSCODESEGMENTASSUME CS: CODESTART:MOV DX, MYIO_A ;讀寫(xiě)基本I/O單元A組的端口INAL, DXOUTDX, ALMOVDX, MYIO_B ;讀寫(xiě)基本I/O單元B組的端口INAL, DXOUTDX, ALMOVAH, 1 ;判斷是否有按鍵按下INT 16HJZ START ;無(wú)按鍵則跳回繼續(xù)循環(huán),有則退出QUIT:

27、 MOV AX, 4C00H ;返回到DOSINT 21HCODE ENDSEND START5.2 地址譯碼電路設(shè)計(jì)實(shí)驗(yàn)一 實(shí)驗(yàn)?zāi)康?1. 學(xué)習(xí) 3-8 譯碼器在接口電路中的應(yīng)用;2. 掌握地址譯碼電路的一般設(shè)計(jì)方法。二 實(shí)驗(yàn)設(shè)備 PC 微機(jī)一臺(tái)、TD-PIT+ 實(shí)驗(yàn)系統(tǒng)一套。三 實(shí)驗(yàn)內(nèi)容用 74LS138 譯碼器設(shè)計(jì)地址譯碼電路,并用其輸出作為基本輸入輸出單元的片選信號(hào),使用設(shè)計(jì)的端口地址編寫(xiě)程序,實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。四 實(shí)驗(yàn)原理微機(jī)接口電路中,常采用 74LS138 譯碼器來(lái)實(shí)現(xiàn) I/O 端口或存儲(chǔ)器的地址譯碼。 74LS138 有3個(gè)輸入引腳、3個(gè)控制引腳及8個(gè)輸出引腳,其管腳信號(hào)如圖

28、5-2-1 所示。當(dāng) 3個(gè)控制信號(hào)有效時(shí),相應(yīng)于輸入信號(hào) A、B、C狀態(tài)的那個(gè)輸出端為低電平,該信號(hào)即可作為片選信號(hào)。圖5-2-1 74LS138譯碼器管腳32位擴(kuò)展系統(tǒng)總線上有一個(gè)信號(hào),該信號(hào)為低電平時(shí)指示當(dāng)前操作為I/O操作,為高電平指示當(dāng)前操作為存儲(chǔ)器操作,它和譯碼器不同的連接可以用來(lái)區(qū)分是I/O端口譯碼還是存儲(chǔ)器端口譯碼。32 位總線地址是由 A2 開(kāi)始,所以地址是以 4 字節(jié)邊界對(duì)齊的。實(shí)驗(yàn)系統(tǒng)的I/O地址空間共有 256 字節(jié),偏移地址一般從 00H FFH。起始地址由PC機(jī)系統(tǒng)分配,可以用CHECK程序讀出。所以設(shè)計(jì)地址譯碼電路,主要是針對(duì)低 8位地址線譯碼,得到偏移在 00H

29、FFH 之間的端口。本實(shí)驗(yàn)要求不使用總線上的片選信號(hào),自行設(shè)計(jì)端口偏移地址分別為 C0H DFH 和 E0H FFH的譯碼電路,然后用譯碼輸出作為基本輸入輸出單元的片選。編寫(xiě)程序,完成I/O數(shù)據(jù)操作。實(shí)驗(yàn)參考線路如圖5-2-2 所示。五 實(shí)驗(yàn)步驟 1. 確認(rèn)從 PC 機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。2. 按圖5-2-2 所示連接實(shí)驗(yàn)線路。3. 首先運(yùn)行 CHECK 程序,查看I/O 端口始地址。 4. 利用設(shè)計(jì)好的端口地址編寫(xiě)程序,然后編譯鏈接。5. 運(yùn)行程序,撥動(dòng)開(kāi)關(guān),觀看數(shù)據(jù)燈顯示是否正確。圖5-2-2 地址譯碼設(shè)計(jì)實(shí)驗(yàn)參考接線圖實(shí)驗(yàn)六 8254 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)驗(yàn)一 實(shí)驗(yàn)?zāi)康模?/p>

30、1. 掌握 8254 的結(jié)構(gòu)和使用;2. 掌握 8254 的各種工作方式及門(mén)控信號(hào)的作用;3. 掌握 8254 的使用與編程。二 實(shí)驗(yàn)設(shè)備:PC微機(jī)一臺(tái)、 TD-PIT+ 實(shí)驗(yàn)系統(tǒng)一套。三 實(shí)驗(yàn)內(nèi)容1. 8254各種工作方式2. 8254定時(shí)中斷管理3. 實(shí)時(shí)時(shí)鐘四 實(shí)驗(yàn)原理8254 是 Intel 公司生產(chǎn)的可編程間隔定時(shí)器,是 8253 的改進(jìn)型,比 8253 具有更優(yōu)良的性能。8254 具有以下基本功能:1. 有 3 個(gè)獨(dú)立的 16 位計(jì)數(shù)器;2. 每個(gè)計(jì)數(shù)器可按二進(jìn)制或十進(jìn)制(BCD)計(jì)數(shù);3. 每個(gè)計(jì)數(shù)器可編程工作于 6 種不同工作方式;4. 8254 每個(gè)計(jì)數(shù)器允許的最高計(jì)數(shù)頻率為

31、 l0MHz ( 8253 為 2MHz );5. 8254 有讀回命令(8253沒(méi)有),除了可以讀出當(dāng)前計(jì)數(shù)單元的內(nèi)容外,還可以讀出狀態(tài)寄存器的內(nèi)容;6. 計(jì)數(shù)脈沖可以是有規(guī)律的時(shí)鐘信號(hào),也可以是隨機(jī)信號(hào)。計(jì)數(shù)初值公式為 ,其中是輸入時(shí)鐘脈沖的頻率,是輸出波形的頻率。圖 7-1是 8254 的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與 CPU 的接口、內(nèi)部控制電路和三個(gè)計(jì)數(shù)器組成。 8254 的工作方式如下述: 1. 方式 0 :計(jì)數(shù)到 0 結(jié)束輸出正躍變信號(hào)方式;2. 方式 1 :硬件可重觸發(fā)單穩(wěn)方式;3. 方式 2 :頻率發(fā)生器方式;4. 方式 3 :方波發(fā)生器;5. 方式 4 :軟件觸發(fā)選通方式;

32、6. 方式 5 :硬件觸發(fā)選通方式。圖 7-1 8254 的內(nèi)部接口和引腳8254 的控制字有兩個(gè):一個(gè)用來(lái)設(shè)置計(jì)數(shù)器的工作方式,稱(chēng)為方式控制字;另一個(gè)用來(lái)設(shè)置讀回命令,稱(chēng)為讀回控制字。這兩個(gè)控制字共用一個(gè)地址,由標(biāo)識(shí)位來(lái)區(qū)分??刂谱指袷饺绫?-1所示。讀回控制字格式如表 7-2 所示。當(dāng)讀回控制字的 D4 位為0時(shí),由該讀回控制字 Dl D2 位指定的計(jì)數(shù)器的狀態(tài)寄存器內(nèi)容將被鎖存到狀態(tài)寄存器中。狀態(tài)字格式如表 7-3 所示。表 7-1 8254 的方式控制字格式表 7-2 8254 讀出控制字格式表 7-3 8254 狀態(tài)字格式五 實(shí)驗(yàn)說(shuō)明及步驟1. 計(jì)數(shù)應(yīng)用實(shí)驗(yàn)編寫(xiě)程序,將定時(shí)器2初始化

33、成6種工作方式之一,計(jì)數(shù)初值為4,用微動(dòng)開(kāi)關(guān) KK1+ 作為 CLK2 時(shí)鐘, OUT2接LED顯示,按動(dòng)KK1+,觀察計(jì)數(shù)時(shí)鐘和輸出的關(guān)系。參考程序流程如圖 7-2 所示。將定時(shí)器2的GATE2接+5V。實(shí)驗(yàn)步驟如下:1) 確認(rèn)從 PC 機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。2) 首先運(yùn)行 CHECK 程序,查看 I/O 空間始地址。3) 利用查出的地址修改程序T8254-1.asm,然后編譯鏈接。4) 參考圖 7-2 所示連接實(shí)驗(yàn)線路。5) 運(yùn)行程序,按動(dòng) KK1+ 微動(dòng)開(kāi)關(guān),觀察計(jì)數(shù)時(shí)鐘和輸出的關(guān)系。 6) 可以改變工作方式,觀察計(jì)數(shù)時(shí)鐘和輸出的關(guān)系。圖7-2 8254 應(yīng)用實(shí)驗(yàn)參考

34、接線圖;8254工作方式實(shí)驗(yàn)程序清單;*根據(jù)CHECK配置信息修改下列符號(hào)值*IOY0 EQU 0D200H;*MY8254_COUNT0 EQU IOY0+00H*4 ;8254計(jì)數(shù)器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254計(jì)數(shù)器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254計(jì)數(shù)器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATASEGMENT MODEDB0B0H, 0B2H, 0B

35、4H, 0B6H, 0B8H, 0BAHDATAENDSCODESEGMENTASSUMECS: CODE, DS: DATA, ES: DATAMAINPROC FAR MOVAX, DATAMOVDS, AXMOVSI, 0 MOVAL, MODE+SI ;SET 8254 MODEMOVDX, MY8254_MODE ;TIMER 2OUTDX, ALMOVAL, 4 ;4 TIMESMOVDX, MY8254_COUNT2 OUTDX, ALMOVAL, 0OUTDX, ALL1:MOV AH, 2;CORSER LOCAT AT 20,30MOVBH, 0MOV DH, 20MOVD

36、L, 30INT10HMOV DX, MY8254_MODE ;LOCK COUNTERMOV AL, 80HOUT DX, ALMOVDX, MY8254_COUNT2 ;READ COUNTER LOWINAL, DXMOVBL, ALINAL, DX ;READ COUNTER HIGHMOV BH, ALMOVCL, 4SHRAL, CLADDAL, 30HCMPAL, 39H ;DISPLAY HIGH 8 BITSJBEL2ADDAL, 7L2: MOVDL, ALMOVAH, 2INT21HANDBH, 0FHADDBH, 30HCMPBH, 39HJBEL3ADDBH, 7L3

37、:MOVAH, 2MOVDL, BHINT21HMOVAL, BL ;DISPLAY LOW 8 BITSMOVCL, 4SHRAL, CLADDAL, 30HCMPAL, 39HJBEL4ADDAL, 7L4: MOVDL, ALMOVAH, 2INT21HANDBL, 0FHADDBL, 30HCMPBL, 39HJBEL5ADDBL, 7L5:MOVAH, 2MOVDL, BLINT21HMOVAH, 2MOVDL, 13INT21HMOVAH, 0BH ;ANY KEY PRESSED TO RETURN DOSINT21H ;ELSE CONTINUECMPAL, 0JNZOKMOV

38、CX, 50000L6:NOPLOOPL6JMPL1OK:MOVAX, 4C00HINT21HRETERROR:JMPOKMAIN ENDPCODEENDSENDMAIN實(shí)驗(yàn)結(jié)果記錄:工作方式計(jì)數(shù)初值GATE2計(jì)數(shù)時(shí)鐘和輸出的關(guān)系04+5VCLK20 1 2 3 4 5OUT2當(dāng)前計(jì)數(shù)值14CLK20 1 3 4 5 OUT2當(dāng)前計(jì)數(shù)值24+5VCLK20 1 3 4 5 OUT2當(dāng)前計(jì)數(shù)值34+5VCLK20 1 3 4 5 OUT2當(dāng)前計(jì)數(shù)值44+5VCLK20 1 3 4 5 OUT2當(dāng)前計(jì)數(shù)值54CLK20 1 3 4 5 OUT2當(dāng)前計(jì)數(shù)值2. 編寫(xiě)匯編程序,將定時(shí)器0設(shè)為方式2,二

39、進(jìn)制計(jì)數(shù)初值為1042(系統(tǒng)時(shí)鐘CLK=1.041667MHz);定時(shí)器1設(shè)為方式3,計(jì)數(shù)初值為1000。將OUT1接PC總線INTR端,每秒向計(jì)算機(jī)發(fā)一次中斷請(qǐng)求。(為便于觀察,可將OUT1接到L1,此時(shí)OUT1輸出為1秒的方波。)3. 編寫(xiě)匯編程序,每次中斷時(shí),顯示字符串“THIS IS A 8259 INTERRUPT!”,中斷十次后,程序退出。是開(kāi)始關(guān)中斷初始化PCI_INTCSR替換INTR中斷矢量,打開(kāi)屏蔽位開(kāi)中斷有按鍵按下?關(guān)中斷恢復(fù)PCI_INTCSR INTR中斷矢量和中斷屏蔽字開(kāi)中斷初始化8254工作方式返回到DOS結(jié)束入口顯示字符串清PCI_INTCSR標(biāo)志位向PC內(nèi)82

40、59發(fā)中斷結(jié)束命令中斷返回設(shè)置8254工作方式并裝入計(jì)數(shù)初值否 (a) 主程序 (b) 中斷處理程序 ;8254計(jì)數(shù)中斷實(shí)驗(yàn);*根據(jù)CHECK配置信息修改下列符號(hào)值*INTR_IVADDEQU 01C8H ;INTR對(duì)應(yīng)的中斷矢量地址INTR_OCW1EQU 0A1H ;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的OCW1地址INTR_OCW2EQU 0A0H ;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的OCW2地址INTR_IMEQU 0FBH ;INTR對(duì)應(yīng)的中斷屏蔽字PCI_INTCSREQU 9038H ;PCI卡中斷控制寄存器地址IOY0EQU 9800H;* *MY8254_COUNT0EQU IOY0

41、+00H*4 ;8254計(jì)數(shù)器0端口地址MY8254_COUNT1EQU IOY0+01H*4 ;8254計(jì)數(shù)器1端口地址MY8254_COUNT2EQU IOY0+02H*4 ;8254計(jì)數(shù)器2端口地址MY8254_MODEEQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1SEGMENT STACKDW256 DUP(?)STACK1ENDSDATASEGMENT CS_BAKDW ?;保存INTR原中斷處理程序入口段地址的變量IP_BAKDW ?;保存INTR原中斷處理程序入口偏移地址的變量IM_BAKDB ? ;保存INTR原中斷屏蔽字的變量STR1 DB '

42、THIS IS A 8259 INTERRRUPT!',10,13,'$' ;顯示的字符串DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART: MOVAX, DATAMOVDS, AXCLIMOVDX, PCI_INTCSRSUBDX, 19HINAL, DX MOVDX, PCI_INTCSR;初始化PCI卡中斷控制寄存器MOVAX, 1F00H ;向PCI_INTCSR中寫(xiě)入003F1F00HOUTDX, AXADDDX, 2MOVAX, 003FHOUTDX, AXMOVAX, 0000H;替換INTR的中斷矢

43、量MOVES, AXMOVDI, INTR_IVADDMOVAX, ES:DIMOVIP_BAK, AX;保存INTR原中斷處理程序入口偏移地址MOVAX, OFFSET MYISRMOVES:DI, AX;設(shè)置當(dāng)前中斷處理程序入口偏移地址ADDDI, 2MOVAX, ES:DIMOVCS_BAK, AX;保存INTR原中斷處理程序入口段地址MOVAX, SEG MYISRMOVES:DI, AX;設(shè)置當(dāng)前中斷處理程序入口段地址MOVDX, INTR_OCW1;設(shè)置中斷屏蔽寄存器,打開(kāi)INTR的屏蔽位INAL, DXMOVIM_BAK, AL;保存INTR原中斷屏蔽字ANDAL, INTR_I

44、MOUTDX, ALSTI 在此處輸入自編的程序 QUIT: CLIMOVDX, PCI_INTCSR;恢復(fù)PCI卡中斷控制寄存器MOVAX, 0000HOUTDX, AXMOVAX, 0000H;恢復(fù)INTR原中斷矢量MOVES, AXMOVDI, INTR_IVADDMOVAX, IP_BAK;恢復(fù)INTR原中斷處理程序入口偏移地址MOVES:DI, AXADDDI, 2MOVAX, CS_BAK;恢復(fù)INTR原中斷處理程序入口段地址MOVES:DI, AXMOVDX, INTR_OCW1;恢復(fù)INTR原中斷屏蔽寄存器的屏蔽字MOVAL, IM_BAKOUTDX, ALSTI 在此處輸入自

45、編的程序 MYISR PROCFAR ;中斷處理程序MYISRPUSHAXPUSHDXMOVAX, DATAMOVDS, AX 在此處輸入自編的程序 OVER: MOVDX, PCI_INTCSR ;清PCI卡中斷控制寄存器標(biāo)志位SUBDX, 19HINAL, DXMOVDX, PCI_INTCSRADDDX, 2MOVAX, 003FHOUTDX, AXMOVDX, INTR_OCW2 ;向PC機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令MOVAL, 20HOUTDX, ALMOVAL, 20HOUT20H, ALPOPDXPOPAXIRETMYISR ENDPCODEENDSENDSTART六 選修實(shí)驗(yàn):將每秒向PC機(jī)發(fā)送一次中斷作為時(shí)間基準(zhǔn),設(shè)計(jì)一個(gè)實(shí)時(shí)時(shí)鐘程序,將時(shí)、分、秒在計(jì)算機(jī)的CRT上顯示出來(lái)(格式為hh:mm:ss)。實(shí)驗(yàn)七 并行接口8255一 實(shí)驗(yàn)?zāi)康模赫莆?255工作方式0讀寫(xiě)數(shù)據(jù)的方法,掌握8255工作方式1的使用及編程,進(jìn)一步掌握中斷處理程序的編寫(xiě)。二 實(shí)驗(yàn)內(nèi)容:1. 將8255的A口設(shè)為工作方式0輸入,B口設(shè)為工作方式0輸出,實(shí)現(xiàn)A口輸入置數(shù)開(kāi)關(guān)的數(shù)據(jù),并通過(guò)B口

溫馨提示

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