2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  2008~2009 學(xué)年 第 1 學(xué)期</p><p>  一、題義分析及解決方案</p><p><b>  1 題意需求分析</b></p&

2、gt;<p>  題目要求是用8086接口芯片設(shè)計(jì)一個四評委使用的評分系統(tǒng),接受四個評委的打分,輸出的是平均得分。</p><p>  由題目要求分析如下:</p><p> ?。?)題目要求四個評委給出自己的打分,可知設(shè)計(jì)的第一步就是主持人給出一個開始打分的指令,否則任何打分都是無效的;</p><p> ?。?)評委們接到打分指令后即可為選手輸入分

3、數(shù), 先設(shè)想用通用可編程鍵盤/顯示接口芯片INTEL8279與小鍵盤結(jié)合實(shí)現(xiàn)該步;</p><p>  (3)接收所有評委的打分到指定緩沖區(qū)后,開始對數(shù)據(jù)進(jìn)行處理,求出平均分;</p><p> ?。?)將(3)步求出的平均分顯示出來。</p><p>  綜合題目要求分析提出以下四個問題:</p><p> ?。?)如何實(shí)現(xiàn)主持人發(fā)出指令表

4、示評分結(jié)束? </p><p>  (2)用什么來作為外設(shè)讓評委進(jìn)行打分?</p><p> ?。?)怎樣求平均分? </p><p> ?。?)采用什么設(shè)備將平均分顯示出來? </p><p>  2 問題解決方法及思路</p><p>  基于以上問題分析此評

5、分系統(tǒng)是由四個評委組成的一個評分系統(tǒng)。對每位評委給出的分?jǐn)?shù)進(jìn)行累加,并求出平均分。</p><p>  評委分?jǐn)?shù)范圍是0~~10的整數(shù),將4位評委給出的分?jǐn)?shù)累加,由于最高分為10分,則用4位二進(jìn)制就可以表示每位評委的分?jǐn)?shù),用8279的RL0~RL7八位連接小鍵盤,將評委的分?jǐn)?shù)保存到8279的緩沖寄存器中,可同時將4位評委的分?jǐn)?shù)同時輸入。</p><p>  對求得平均分進(jìn)行分析,將4位評委

6、累加后除以4即得到平均分?jǐn)?shù),除以4后將會出現(xiàn)小數(shù)部分如:0.0、0.25、0.50、0.75這4種情況,要將最后得分顯示在LED上,就要用4個LED顯示,其中第二個LED存在小數(shù)點(diǎn),故用八段LED顯示,3個顯示要分別進(jìn)行輸出,通過位選碼對每一位的顯示進(jìn)行控制,還要通過段選碼對每一個LED的每一段進(jìn)行控制。這樣,就能將整個最后得分顯示出來了,還要考慮在顯示后一位時前一位會不會消失的情況。</p><p>  以上四

7、個問題解決其中(1)、(2)、(4)可以用硬件完成,而(3)即數(shù)據(jù)處理部分需由軟件來完成。</p><p><b>  2.1 硬件部分</b></p><p>  問題(1)可以利用小鍵盤上的任意一位輸入或邏輯開關(guān)的一位來實(shí)現(xiàn)。</p><p>  問題(2)評委可通過很多設(shè)備進(jìn)行數(shù)據(jù)輸入,如小鍵盤、邏輯開關(guān)等,小鍵盤做輸入設(shè)備其電路簡單,

8、但對其編程接受輸入數(shù)據(jù)相對復(fù)雜。邏輯開關(guān)的電路相對復(fù)雜,但編程接受輸入數(shù)據(jù)的程序簡單,且兼于實(shí)驗(yàn)室設(shè)備,故選擇小鍵盤作為輸入設(shè)備。輸入數(shù)據(jù)會很方便。</p><p>  問題(4)輸出設(shè)備既可用發(fā)光二極管也可用LED顯示器,但相對于前者,后者對結(jié)果的顯示一目了然,故本設(shè)計(jì)選擇LED顯示器作輸出設(shè)備。</p><p>  2.2 軟件部分 </p><p>  (1

9、)讀數(shù)據(jù)程序:采用小鍵盤與8279芯片相結(jié)合,故可8279的相應(yīng)端口進(jìn)行合適的參數(shù)設(shè)置,數(shù)據(jù)端口地址為0B0H,控制端口的地址為0B1H。RLrr5~RL7八位中最高位作為指令開關(guān)。</p><p> ?。?)數(shù)據(jù)處理:每次讀數(shù)據(jù)累加求和,并取數(shù)據(jù)整數(shù)和小數(shù)部分,從OUTA0~OUTA3輸出到LED顯示器.當(dāng)四個評委均輸入完畢,將累加和采用邏輯右移2位的方式求平均分.在計(jì)算輸入的時候,用兩位輸入來控制一位數(shù)的輸入

10、,將AL的值賦給中間變量TEMP,然后將TEMP*10,然后累加,求出輸入的數(shù),進(jìn)行和的累加。</p><p> ?。?)數(shù)據(jù)輸出:平均分整數(shù)和小數(shù)部分分別輸出到LED.分析整數(shù)0-40之間的數(shù)除以4的小數(shù)部分, 平均分處理方法,(也可采用四舍五入的方法保留一位小數(shù))。</p><p>  表1-1:小數(shù)部分的求解方法見上表</p><p><b>  二

11、、硬件設(shè)計(jì)</b></p><p>  2.1 選擇芯片8279</p><p>  圖2-18279內(nèi)部邏輯框圖</p><p>  2.1.1 芯片8279在本設(shè)計(jì)中的作用</p><p>  8279連接4*4的鍵盤及8位顯示器的電路,即可顯示按下鍵對應(yīng)的鍵值。</p><p>  2.1.2 芯

12、片8279的功能分析</p><p>  生產(chǎn)廠家:Intel公司特性:Intel8279芯片是一種通用的可編程序的鍵盤、顯示接口器件,單個芯片就能完成鍵盤輸入和LED顯示控制兩種功能。其內(nèi)部結(jié)構(gòu)如圖6-10-1所示。8279包括鍵盤輸入和顯示輸出兩個部分。 鍵盤部分提供的掃描方式,可以和64個按鍵或傳感器的陣列相連。能自動消除開關(guān)抖動以及N個鍵同時按下的保護(hù)。 顯示部分按掃描的方式工作??梢燥@

13、示8或16位LED顯示塊。 一、8279電路工作原理 根據(jù)結(jié)構(gòu)框圖,分別介紹各部分電路工作原理。 1.I/O控制及數(shù)據(jù)緩沖器 數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)、外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù);I/O控制線是CPU對8279進(jìn)行控制的引線。CS是8279的片選信號,CS=0時,8279才被允許讀出或?qū)懭胄畔?。WR、RD為來自CPU的控制信號。 A0用于區(qū)別信息特性:A0=1時,表示數(shù)據(jù)緩沖

14、器輸入為指令、輸出為狀態(tài)字;A=0時,輸入、輸出皆為數(shù)據(jù)。 2.控制與定時寄存器及定時控制 控制與定時寄存器用來寄存鍵盤及顯示的工作方式,以及由CPU編程的其它操作方式。</p><p>  4、芯片8279的技術(shù)參數(shù)</p><p><b>  表 2-10</b></p><p>  2.2 選擇芯片LED </p&

15、gt;<p>  2.2.1 LED在本設(shè)計(jì)中的作用</p><p>  顯示最后得分,共三塊,一塊用來顯示其整數(shù)部分的十位,一塊用來顯示其整數(shù)部分個位,另一塊用來顯示其小數(shù)部分(保留一位小數(shù))。</p><p>  2.2.2 LED的功能分析</p><p>  LED顯示電路較為簡單,成本也較低,在功能單一的儀器儀表與機(jī)電設(shè)備中應(yīng)用較廣。但當(dāng)

16、設(shè)備顯示的點(diǎn)或位較多時,就需要采用一定的驅(qū)動電路與相應(yīng)的驅(qū)動方式。利用專用接口芯片如8255作為計(jì)算機(jī)芯片的端口擴(kuò)展,并通過軟件編程加外部驅(qū)動實(shí)現(xiàn)。</p><p>  表2-2. LED顯示管段選碼編碼表</p><p>  2.2.3 LED數(shù)碼管的顯示方式</p><p>  (1)靜態(tài):數(shù)碼管顯示過程持續(xù)得到信號,與數(shù)碼管接口的I/O口線為專用。特點(diǎn)是無閃

17、爍,元器件多,占I/O線多,無須掃描,節(jié)省CPU時間,編程簡單。</p><p>  (2)動態(tài):數(shù)碼管顯示過程輪流得到信號,與各數(shù)碼管接口的I/O口線為共用。特點(diǎn)是有閃爍,元器件少,占I/O線少,必須掃描,花費(fèi)CPU時間,編程復(fù)雜 (有多個LED時尤為突出)。</p><p>  2.2.4 芯片LED的技術(shù)參數(shù) </p><p>  消耗功率 PM=15

18、0mW 最大工作電流 IFM=100mA 正常工作電流 IF=40mA </p><p>  正向壓降 VF ≤ 1.8V 燃亮電壓為5v</p><p>  共陰極LED的PM=300mW,IFM=200 mA,IF=60mA,VF ≤ 1.8V,VR≥5V,發(fā)紅光。</p><p>  LED的技術(shù)參數(shù)分析</p><

19、;p>  LED發(fā)光二極管的壓降一般為1.5-2.0V,其工作電流一般取10-20Ma,發(fā)光二極管可應(yīng)用于直流驅(qū)動電路、交流驅(qū)動電路和脈沖驅(qū)動電路。</p><p>  共陽極公共端接陽極,低電平有效(燈亮), 共陽極數(shù)碼管內(nèi)部發(fā)光二極管的陽極(正極)都聯(lián)在一起,此數(shù)碼管陽極(正極)在外部只有一個引腳共陰極公共端接陰極,高電平有效(燈亮),共陰極數(shù)碼管內(nèi)部發(fā)光二極管的陰極(負(fù)極)都聯(lián)在一起,此數(shù)碼管陰極(

20、負(fù)極)在外部只有一個引腳</p><p><b>  2.3 小鍵盤</b></p><p>  2.3.1 小鍵盤在本設(shè)計(jì)中的作用</p><p>  評委通過小鍵盤置數(shù),輸入分?jǐn)?shù)。四個評委各個依次打分,系統(tǒng)讀取開關(guān)量,再將處理后的數(shù)據(jù)在LED上顯示出來。 圖2-3</p><p>

21、;  2.3.2 小鍵盤的邏輯圖 </p><p>  如右圖: </p><p>  2.4 選擇芯片74LS240</p><p>  2.4.1 74LS240芯片引腳圖</p><p>  2.4.2 74LS240技術(shù)參數(shù)</p>

22、;<p>  表2-13 74LS240技術(shù)參數(shù)</p><p>  2.5 芯片比較 </p><p><b>  表2-14</b></p><p><b>  表2-15</b></p><p>  2.6 硬件總邏輯圖及其說明</p>

23、<p>  圖 2-5 實(shí)驗(yàn)硬件原理圖</p><p>  說明:由于實(shí)驗(yàn)室設(shè)備中很多芯片已經(jīng)集成,故給連線帶來很大方便性,使的連線簡單了許多。</p><p>  8279的RL0~RL7連接4*4鍵盤,SL0~SL2三位用來74L138的輸入,輸出的8位作為LED的段選,OUTA0~OUTA3四位作為芯片4511的輸入,輸出的7位作為LED的位選,8279的數(shù)據(jù)DB0~D

24、B7與PCI卡的數(shù)據(jù)線連接,其中A0連接A0,CS連接CS0,讀寫信號的連接如圖。</p><p><b>  三、程序流程圖</b></p><p>  3.1 主程序流程圖:</p><p><b>  N</b></p><p><b>  Y</b></p>

25、<p><b>  Y</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  處理小數(shù)子程序:</b></p&g

26、t;<p>  3.3 掃描按鍵子過程:</p><p>  3.4 清除子過程:</p><p>  3.5 程序清單及注釋:</p><p>  .MODEL TINY</p><p>  PCIBAR3 EQU 1CH ;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址,也為DMA & 32

27、BIT+RAM板卡上的8237提供基地址)</p><p>  Vendor_ID EQU 10EBH ;廠商ID號</p><p>  Device_ID EQU 8376 ;設(shè)備ID號 </p><p>  .STACK 100</p><p><b>  .DATA</b&

28、gt;</p><p>  IO_Bit8_BaseAddress DW ?</p><p>  msg0 DB 'BIOS不支持訪問PCI $'</p><p>  msg1 DB '找不到Star PCI9052板卡 $'</p><p> 

29、 msg2 DB '讀8位I/O空間基地址時出錯$'</p><p>  SUM DB 0H ;分?jǐn)?shù)和</p><p>  TEMP DB 0H ;中間變量 </p><p>  KEYCOUNT DB ? ;按鍵數(shù)目</p&g

30、t;<p>  COUNT DB ? </p><p>  ;乘10的時候,保存AL所用的中間變量</p><p>  LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;不帶小數(shù)點(diǎn)的整數(shù)</p><p>  DB 080H,90H,8

31、8H,83H,0C6H,0A1H,86H,8EH </p><p>  LED_TBB DB 040H,079H,024H,030H,19H,12H,02H,078H ;帶小數(shù)點(diǎn)的整數(shù)</p><p>  DB 000H,10H,08H,03H,046H,021H,06H,0EH</p><p>  CMD

32、_8279 DW 00B1H ;8279命令字、狀態(tài)字地址</p><p>  DATA_8279 DW 00B0H ;8279讀寫數(shù)據(jù)口的地址,由于偏移地址則CS接PCI卡的CS5!!!</p><p><b>  .CODE</b></p><p>  START: MOV

33、 AX,@DATA</p><p>  MOV DS,AX</p><p><b>  NOP</b></p><p>  CALL InitPCI</p><p>  CALL ModifyAddress ;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址</p><p&g

34、t;  CALL INIT8279 ;初始化子程序</p><p>  MOV KEYCOUNT,0 </p><p>  MOV CX,0 </p><p>  ;---------------------------------------------------------------------

35、--------------------</p><p><b>  ;主程序</b></p><p>  START1: CALL IfExit</p><p>  JZ START11</p><p>  JMP Exit</p><p>  START11:

36、 CALL SCAN_KEY ;鍵掃描</p><p>  JNC START1 ;沒有按鍵</p><p>  XCHG AL,KEYCOUNT </p><p>  INC AL</p><p>  CMP AL,9<

37、/p><p>  JNZ START2</p><p>  MOV CX,0 ;在進(jìn)入下一個數(shù)的輸入的時候,由于CX是判斷兩位輸入是一個數(shù),故要清零??! </p><p>  MOV KEYCOUNT,0 </p><p>  CALL

38、 INIT8279_1 </p><p>  ;8個數(shù)碼塊全有字符顯示后,再按鍵,清除顯示 </p><p>  MOV AL,SUM </p><p><b>  ;計(jì)算部分</b></p><p>  CMP AL,28H</p><p>  JNE

39、 NOTSHI</p><p>  MOV AL,01H </p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>  MOV A

40、L,0H</p><p>  LEA BX,LED_TBB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>  MOV AL,0H</p><p>  CALL XIAOSHU

41、 </p><p>  JMP HUAN </p><p>  NOTSHI: ;上面處理等于10的情況,下面的分支是小于10的情況</p><p>  PUSH AX</p><p>  MOV AL,0H</p><p>  LEA BX,LED_TAB

42、 ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  POP AX</p><p>  MOV BL,AL</p><p>  AND AL,00000

43、011B ;將小數(shù)的兩位取出</p><p>  MOV BH,AL</p><p>  MOV AL,BL</p><p>  AND AL,1111100B ;將整數(shù)的六位取出</p><p>  MOV CL,2</p><p>  SHR AL,CL

44、 ;AL里保存整數(shù)部分</p><p>  MOV AH,BH ;AH里保存小數(shù)部分</p><p>  MOV CL,00H ;主程序需要CL進(jìn)行循環(huán),所以在計(jì)算以后將CL清零</p><p>  AND AL,3FH </p><

45、;p>  LEA BX,LED_TBB ;帶小數(shù)點(diǎn)的字型碼表 </p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,AH

46、 </p><p>  CALL XIAOSHU </p><p><b>  ;計(jì)算部分</b></p><p>  HUAN: MOV SUM,0</p><p>  CALL INIT8279_1&l

47、t;/p><p>  JMP START1</p><p>  START2: XCHG AL,KEYCOUNT </p><p>  CALL KEY_NUM ;鍵值轉(zhuǎn)換為鍵號</p><p>  CMP AL,09H </p>

48、<p>  ;輸入的鍵值不在0~9范圍內(nèi),及輸入錯誤,重新輸入</p><p>  JG CHULI</p><p>  INC CL</p><p>  CMP CL,2 </p><p>  JNE NO10 </p><p>  MOV

49、 CL,0 ;主程序需要CL進(jìn)行循環(huán),所以在計(jì)算以后將CL清零</p><p>  ADD TEMP,AL </p><p>  ;求TEMP+AL的值</p><p>  MOV AH,TEMP</p><p>  CMP AH,0AH &

50、lt;/p><p>  ;輸入的值大于10的話,重新輸入</p><p>  JG CHULI</p><p>  ADD SUM,AH</p><p>  MOV TEMP,0H </p><p>  JMP NO9 </p><p>  NO10:

51、 </p><p>  MOV COUNT,AL ;求TEMP*10的值</p><p>  MOV AH,0AH </p><p><b>  MUL AH</b></p><p>  MOV TEMP,AL</p><p>  

52、MOV AL,COUNT </p><p>  NO9: </p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRI

53、TE_DATA</p><p>  JMP START1 </p><p>  CHULI: </p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE

54、_DATA </p><p>  CALL INIT8279_1</p><p>  MOV SUM,0 </p><p>  MOV KEYCOUNT,0 </p><

55、;p>  JMP START1 </p><p>  START_EXIT: JMP $ </p><p>  ;------------------------------------------------</p><p>  ;處理小數(shù)部分 </p><p>  XIAOSHU

56、 PROC NEAR</p><p>  PUSH AX</p><p>  PUSH BX</p><p>  PUSH CX</p><p>  PUSH DX</p><p>  CMP AL,0H</p><p>  JE X0<

57、/p><p>  CMP AL,01H</p><p>  JE X1</p><p>  CMP AL,02H</p><p>  JE X2</p><p>  CMP AL,03H</p><p>  JE X3</p>&l

58、t;p><b>  X0:</b></p><p>  MOV AL,0H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p>&

59、lt;p>  MOV AL,0</p><p>  JMP X4</p><p><b>  X1: </b></p><p>  MOV AL,02H</p><p>  AND AL,3FH</p><p>  LEA BX,LED_TAB

60、 ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,05H</p><p>  JMP X4</p><p><b>  X2:</b></p&g

61、t;<p>  MOV AL,05H</p><p>  AND AL,3FH</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p>&l

62、t;p>  MOV AL,0H</p><p>  JMP X4</p><p><b>  X3: </b></p><p>  MOV AL,07H</p><p>  AND AL,3FH</p><p>  LEA BX,LED_TA

63、B ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,05H</p><p>  X4: AND AL,3FH</p><p>  LEA BX

64、,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>  XIANSHI: </p><p>  CALL SCAN_KEY ;鍵掃描</p><p>  JNC

65、 XIANSHI </p><p>  ;鍵的輸入來控制顯示結(jié)果的時間</p><p>  POP DX</p><p>  POP CX</p><p>  POP BX</p><p>  POP AX</p><p>  XIAOSHU

66、ENDP</p><p>  ;------------------------------------------------</p><p><b>  ;8279初始化</b></p><p>  INIT8279 PROC NEAR</p><p>  MOV DX,CMD_8279

67、 ;CMD_8279為寫命令地址、讀狀地址</p><p>  MOV AL,34H ;可編程時鐘設(shè)置,設(shè)置分頻系數(shù)(20分頻)</p><p>  OUT DX,AL</p><p>  MOV AL,0H ;8位字符顯示,左邊輸入,外部譯碼鍵掃描方式,雙鍵互鎖,10H右入口</p><p>  

68、OUT DX,AL </p><p>  CALL INIT8279_1</p><p><b>  RET</b></p><p>  INIT8279 ENDP</p><p>  INIT8279_1 PROC NEAR</p><p>  CALL

69、 CLEAR ;清顯示</p><p>  MOV AL,90H ;從第一個數(shù)碼管開始移位顯示,寫顯示RAM命令</p><p>  OUT DX,AL</p><p><b>  RET</b></p><p>  INIT8279_1 ENDP</p><

70、p>  ;-----------------------------------------------------------------------------------</p><p><b>  ;清除</b></p><p>  CLEAR PROC NEAR</p><p>  MOV DX,CMD_

71、8279</p><p>  MOV AL,0DEH ; 清除命令,將顯示RAM全部置1</p><p>  OUT DX,AL</p><p>  WAIT1: IN AL,DX</p><p>  TEST AL,80H ;10000000B,寫顯示RAM,初始位為00

72、00</p><p>  JNZ WAIT1 ; 顯示RAM清除完畢嗎?</p><p><b>  RET</b></p><p>  CLEAR ENDP</p><p>  ;------------------------------------------------</p&g

73、t;<p><b>  ;掃描</b></p><p>  SCAN_KEY PROC NEAR</p><p>  MOV DX,CMD_8279</p><p>  IN AL,DX ;讀狀態(tài)</p><p>  READ_FIFO: AND AL,

74、7</p><p>  JZ NO_KEY ;是否有鍵按下</p><p>  READ: MOV AL,40H</p><p>  OUT DX,AL ;讀FIFO RAM,初始地址為000H</p><p>  MOV DX,DATA_8279</p><

75、p>  IN AL,DX</p><p>  STC ;有鍵</p><p>  SCAN_KEY1: RET</p><p>  NO_KEY: CLC ;無鍵按下,清CF</p><p>  JMP SCAN_KEY1</p><p>  SCAN_KE

76、Y ENDP</p><p>  ;------------------------------------------------</p><p><b>  ;鍵值轉(zhuǎn)換</b></p><p>  KEY_NUM PROC NEAR</p><p>  AND AL,3FH

77、 ;00111111B清除高兩位,鍵值轉(zhuǎn)換為鍵號</p><p><b>  RET</b></p><p>  KEY_NUM ENDP</p><p>  ;------------------------------------------------</p><p><b>  ;讀數(shù)據(jù)

78、</b></p><p>  WRITE_DATA PROC NEAR</p><p>  MOV DX,DATA_8279 ;DATA_8279為讀寫數(shù)據(jù)口的地址</p><p>  OUT DX,AL</p><p><b>  RET</b></p><

79、;p>  WRITE_DATA ENDP</p><p><b>  ;PCI卡初始化</b></p><p>  IfExit PROC NEAR</p><p>  PUSH AX</p><p>  PUSH DX</p><p>  MOV

80、 AH,06H</p><p>  MOV DL,0FFH</p><p>  INT 21H</p><p>  POP DX</p><p>  POP AX</p><p><b>  RET</b></p><p>  IfExit

81、 ENDP </p><p>  InitPCI PROCNEAR</p><p>  MOVAH,00H</p><p>  MOVAL,03H</p><p>  INT10H;清屏</p><p>  MOVAH,0B1H</p><p> 

82、 MOVAL,01H</p><p><b>  INT1AH</b></p><p><b>  CMPAH,0</b></p><p>  JZ InitPCI2</p><p>  LEADX,msg0</p><p>  InitPCI1:

83、 MOVAH,09H</p><p><b>  INT21H</b></p><p><b>  JMPExit</b></p><p>  InitPCI2: MOVAH,0B1H</p><p>  MOVAL,02H</p><p>  MOV

84、CX,Device_ID</p><p>  MOVDX,Vendor_ID</p><p><b>  MOVSI,0</b></p><p><b>  INT1AH</b></p><p>  JNCInitPCI3;是否存在Star PCI9052板卡</p>&

85、lt;p>  LEADX,msg1</p><p>  JMPInitPCI1</p><p>  InitPCI3:MOVDI,PCIBAR3</p><p>  MOVAH,0B1H</p><p>  MOVAL,09H</p><p>  INT1AH;讀取該卡PCI9052基地址&l

86、t;/p><p>  JNCInitPCI4</p><p>  LEADX,msg2</p><p>  JMPInitPCI1</p><p>  InitPCI4:ANDCX,0FFFCH</p><p>  MOVIO_Bit8_BaseAddress,CX</p><p>&l

87、t;b>  RET</b></p><p>  InitPCIENDP</p><p>  ModifyAddress PROC NEAR</p><p>  ADD CMD_8279,CX</p><p>  ADD DATA_8279,CX</p><p><b

88、>  RET</b></p><p>  ModifyAddress ENDP </p><p>  Exit: MOV AH,4CH</p><p>  INT 21H</p><p>  END START</p><p>  在實(shí)驗(yàn)過程中,老師要求將四

89、位評委改成八位評委,并且每位評委分?jǐn)?shù)只占LED顯示的一位,程序如下:.</p><p>  MODEL TINY</p><p>  PCIBAR3 EQU 1CH ;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址,也為DMA & 32 BIT+RAM板卡上的8237提供基地址)</p><p>  Vendor_ID EQU

90、 10EBH ;廠商ID號</p><p>  Device_ID EQU 8376 ;設(shè)備ID號 </p><p>  .STACK 100</p><p><b>  .DATA</b></p><p>  IO_Bit8_BaseAddress DW ?<

91、;/p><p>  msg0 DB 'BIOS不支持訪問PCI $'</p><p>  msg1 DB '找不到Star PCI9052板卡 $'</p><p>  msg2 DB '讀8位I/O空間基地址時出錯$'</p><p

92、>  SUM DB 0H ;分?jǐn)?shù)和</p><p>  TEMP DB 0H ;中間變量 </p><p>  KEYCOUNT DB ? ;按鍵數(shù)目</p><p>  COUNT DB ? </p><p

93、>  ;乘10的時候,保存AL所用的中間變量</p><p>  LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;不帶小數(shù)點(diǎn)的整數(shù)</p><p>  DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH </p><p>  L

94、ED_TBB DB 040H,079H,024H,030H,19H,12H,02H,078H ;帶小數(shù)點(diǎn)的整數(shù)</p><p>  DB 000H,10H,08H,03H,046H,021H,06H,0EH</p><p>  CMD_8279 DW 00B1H ;8279命令字、狀態(tài)字地址</p><p&

95、gt;  DATA_8279 DW 00B0H ;8279讀寫數(shù)據(jù)口的地址,由于偏移地址則CS接PCI卡的CS5!!!</p><p><b>  .CODE</b></p><p>  START: MOV AX,@DATA</p><p>  MOV DS,AX</p>&l

96、t;p><b>  NOP</b></p><p>  CALL InitPCI</p><p>  CALL ModifyAddress ;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址</p><p>  CALL INIT8279 ;初始化子程序</p><p>  MOV

97、 KEYCOUNT,0 </p><p>  MOV CX,0 </p><p>  ;-----------------------------------------------------------------------------------------</p><p><b>  ;主程序</

98、b></p><p>  START1: CALL IfExit</p><p>  JZ START11</p><p>  JMP Exit</p><p>  START11: CALL SCAN_KEY ;鍵掃描</p><p>  JNC

99、 START1 ;沒有按鍵</p><p>  XCHG AL,KEYCOUNT </p><p>  INC AL</p><p>  CMP AL,9</p><p>  JNZ START2</p><p>  MOV

100、 KEYCOUNT,0 </p><p>  CALL INIT8279_1 </p><p>  ;8個數(shù)碼塊全有字符顯示后,再按鍵,清除顯示 </p><p>  MOV AL,SUM </p><p><b>  ;計(jì)算部分</b></p><p&

101、gt;  CMP AL,48H</p><p>  JNE NOTSHI</p><p>  MOV AL,09H</p><p>  LEA BX,LED_TBB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL

102、 WRITE_DATA</p><p>  MOV AL,0H</p><p>  CALL XIAOSHU </p><p>  JMP HUAN </p><p>  NOTSHI: </p><p>  PUSH AX</p>&l

103、t;p>  POP AX</p><p>  MOV BL,AL</p><p>  AND AL,00000111B ;將小數(shù)的兩位取出</p><p>  MOV BH,AL</p><p>  MOV AL,BL</p><p>  AND AL,1111

104、1000B ;將整數(shù)的六位取出</p><p>  MOV CL,3</p><p>  SHR AL,CL ;AL里保存整數(shù)部分</p><p>  MOV AH,BH ;AH里保存小數(shù)部分</p><p>  LEA BX,LED_TBB ;帶小數(shù)點(diǎn)的字型碼表

105、 </p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,AH </p><p>  CALL

106、 XIAOSHU </p><p><b>  ;計(jì)算部分</b></p><p>  HUAN: MOV SUM,0</p><p>  CALL INIT8279_1</p><p>  JMP START1</p&g

107、t;<p>  START2: XCHG AL,KEYCOUNT </p><p>  CALL KEY_NUM ;鍵值轉(zhuǎn)換為鍵號</p><p>  CMP AL,09H </p><p>  ;輸入的鍵值不在0~9范圍內(nèi),及輸入錯誤,重新輸入</p

108、><p>  JG CHULI</p><p>  MOV AH,AL</p><p>  CMP AH,09H </p><p>  ;輸入的值大90的話,重新輸入</p><p>  JG CHULI</p><p>  ADD

109、 SUM,AH</p><p>  JMP NO9 </p><p>  NO9: </p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_

110、DATA</p><p>  JMP START1 </p><p>  CHULI: </p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DA

111、TA </p><p>  CALL INIT8279_1</p><p>  MOV SUM,0 </p><p>  MOV KEYCOUNT,0 </p><p&

112、gt;  JMP START1 </p><p>  START_EXIT: JMP $ </p><p>  ;------------------------------------------------</p><p><b>  ;處理小數(shù)部分 </b></p><p><b&

113、gt;  X5: </b></p><p>  MOV AL,06H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>

114、;  MOV AL,02H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,05H</p><p><b

115、>  JMP X8</b></p><p><b>  X6: </b></p><p>  MOV AL,07H</p><p>  AND AL,1FH</p><p>  LEA BX,LED_TAB ;字型碼表</p><p&

116、gt;<b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,05H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><

117、;p>  CALL WRITE_DATA</p><p>  MOV AL,0</p><p>  JMP X8</p><p><b>  X7: </b></p><p>  MOV AL,08H</p><p>  AND AL,1FH&

118、lt;/p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,07H</p><p>  LEA BX,LED_TAB

119、 ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>  MOV AL,05H </p><p>  JMP X8 </p><p>  XIAOSHU PROC N

120、EAR</p><p>  PUSH AX</p><p>  PUSH BX</p><p>  PUSH CX</p><p>  PUSH DX</p><p>  CMP AL,0H</p><p>  JE X0</p><

121、p>  CMP AL,01H</p><p>  JE X1</p><p>  CMP AL,02H</p><p>  JE X2</p><p>  CMP AL,03H</p><p>  JE X3</p><p>  CMP

122、 AL,04H</p><p>  JE X4</p><p>  CMP AL,05H</p><p>  JE X5</p><p>  CMP AL,06H</p><p>  JE X6</p><p>  CMP AL,07

123、H</p><p>  JE X7</p><p><b>  X0:</b></p><p>  MOV AL,0H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p&

124、gt;<p>  CALL WRITE_DATA </p><p>  MOV AL,0H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p>

125、<p>  MOV AL,0</p><p>  JMP X8</p><p><b>  X1: </b></p><p>  MOV AL,01H</p><p>  AND AL,1FH</p><p>  LEA BX,LED_TA

126、B ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,02H</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b> 

127、 XLAT</b></p><p>  CALL WRITE_DATA</p><p>  MOV AL,05H</p><p>  JMP X8</p><p><b>  X2:</b></p><p>  MOV AL,02H</p>

128、<p>  AND AL,1FH</p><p>  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA </p><p>  MOV AL,05H</p><p&

129、gt;  LEA BX,LED_TAB ;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA</p><p>  MOV AL,0H</p><p>  JMP X8</p><p><b>

溫馨提示

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

評論

0/150

提交評論