微型計算機原理實驗指導書_第1頁
微型計算機原理實驗指導書_第2頁
微型計算機原理實驗指導書_第3頁
微型計算機原理實驗指導書_第4頁
微型計算機原理實驗指導書_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、環(huán)境下輸入下列程序片段,用Trace命令單步執(zhí)行并記錄結果。程序片段 運行結果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. 自編程序段實現(xiàn)兩個兩字節(jié)無符號數(shù)相加。要求:已將1234H和5678H分別放在DATA1和DATA2開始的存儲單元中,低位在前,高位在后,計算1234H+5678H,運算結果放在DATA1開始的單元。用Trace命令單步執(zhí)行,并查看有關存儲單元。DATASEGMENTDATA1DB 34H, 12HDATA2DB 78H, 56HDATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AX在此處輸入自編的程序HLTCODE ENDSEND START三 選修實驗在Tddebug集成操作

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

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

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

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

10、果)的一個字節(jié)BX BX-1BX=0?返回YN加法程序清單:CRLFMACRO ;回車換行宏定義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;加法運算CALL ADDAMOVSI, OFFSET DATA1;顯示結果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. 編輯程序并上機調試:1) 排序。要求:將十個無符號數(shù)放入DATA1開始的內存單元,由小到大排列后放回DATA1開始的內存單元中。2) 將一個BCD碼00100轉換成二進制數(shù)。要求:五位BCD碼由高到低放在BHBLDHDL00萬位千位 百位十位 個位轉換結果放在DI寄存器中。BCD碼轉換二進制數(shù)框圖:屏蔽BL高四位用加法指令實現(xiàn)AX*10 AX (AX+BX)循環(huán)次數(shù)CL 4DX算術左移1位,BL帶CY循環(huán)左移1位CL CL-1,

14、CL=0?CH CH-1,CH=0?存結果DI AX開 始BCD低四位DX, BCD最高位 BL位計數(shù)CH 5,BH 0, 結果AX 0結束,返回三 選修實驗1. 在Tddebug集成操作軟件環(huán)境下輸入下列程序片段,首先觀察數(shù)據(jù)段內存單元的內容、各個變量在內存中的存儲方式以及順序,然后用Trace命令單步執(zhí)行并觀察寄存器的內容及執(zhí)行結果。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. 編寫一個統(tǒng)計AX中1的個數(shù)的程序,將統(tǒng)計結果放在CL中。實驗四 匯編程序設計及調試(2)一 實驗目的:1. 掌握編程基本方法和Tdde

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

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

18、X中內容循環(huán)左移1位BL移入DL;屏蔽DL高7位DL加30H變成ASCII碼顯示CX CX-1;CX=0?結束 返回結 束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ù)據(jù)的方法,并了解鍵盤數(shù)據(jù)顯示時必須轉換為ASCII碼的原理。編寫程序,將鍵盤接收到的兩位十

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

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

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

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

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

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 ;讀寫基本I/O單元A組的端口INAL, DXOUTDX, ALMOVDX, MYIO_B ;讀寫基本I/O單元B組的端口INAL, DXOUTDX, ALMOVAH, 1 ;判斷是否有按鍵按下INT 16HJZ START ;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT:

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

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

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

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

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

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

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

34、接線圖;8254工作方式實驗程序清單;*根據(jù)CHECK配置信息修改下列符號值*IOY0 EQU 0D200H;*MY8254_COUNT0 EQU IOY0+00H*4 ;8254計數(shù)器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254計數(shù)器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254計數(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ù)初值GATE2計數(shù)時鐘和輸出的關系04+5VCLK20 1 2 3 4 5OUT2當前計數(shù)值14CLK20 1 3 4 5 OUT2當前計數(shù)值24+5VCLK20 1 3 4 5 OUT2當前計數(shù)值34+5VCLK20 1 3 4 5 OUT2當前計數(shù)值44+5VCLK20 1 3 4 5 OUT2當前計數(shù)值54CLK20 1 3 4 5 OUT2當前計數(shù)值2. 編寫匯編程序,將定時器0設為方式2,二

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

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

41、+00H*4 ;8254計數(shù)器0端口地址MY8254_COUNT1EQU IOY0+01H*4 ;8254計數(shù)器1端口地址MY8254_COUNT2EQU IOY0+02H*4 ;8254計數(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中寫入003F1F00HOUTDX, AXADDDX, 2MOVAX, 003FHOUTDX, AXMOVAX, 0000H;替換INTR的中斷矢

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論