版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p> 課程名稱 微機原理課程設(shè)計與實踐</p><p> 題目名稱 微型計算機應(yīng)用系統(tǒng)的設(shè)計 </p><p> 2012年 3 月 15日</p><p><b> 實驗的任務(wù)書</b></p><
2、p><b> 計算器(1)</b></p><p><b> 目的</b></p><p> 鞏固和加深對《微機原理及應(yīng)用》課程內(nèi)容的認識和理解,提高應(yīng)用水平。</p><p> 掌握匯編語言程序的編程方法。</p><p> 熟悉鍵盤控制和七段數(shù)碼管的使用。</p>
3、<p><b> 設(shè)計要求及設(shè)計程序</b></p><p> 課程設(shè)計內(nèi)容上機編程</p><p> 一在顯示器上顯示任意四位十六進制數(shù)</p><p> 將表格里的數(shù)在七段LED上同時顯示出來,要求做成循環(huán)程序,并使用XLAT來譯碼。</p><p> 1.1第一個程序的流程圖</p>
4、<p><b> 1.2源程序</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> TAB1
5、 DB 05H,09H,0FH,0CH ;設(shè)置四位查詢位</p><p> TAB2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;設(shè)置0~F的十六位數(shù)碼管段碼</p><p> DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p> DATA ENDS&
6、lt;/p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV AL,80H
7、 ;8255A初始化</p><p> OUT 63H,AL</p><p> L1: MOV DL,0F7H</p><p> MOV SI,OFFSET TAB1</p><p> MOV CX,0004H</p><p> L2: MOV AL,DL
8、 ;位碼送給AL</p><p> OUT 61H,AL</p><p> MOV AL,[SI]</p><p> MOV BX,OFFSET TAB2 ;查表取出數(shù)碼管的段碼</p><p><b> XLAT TAB2</b><
9、/p><p> OUT 60H,AL ;查表的段碼送A口顯示</p><p><b> INC SI</b></p><p> ROL DL,01H ;下個要顯示的數(shù)碼管位碼</p><p><b> CAL
10、L TIME</b></p><p><b> LOOP L2</b></p><p><b> JMP L1</b></p><p> TIME: PUSH AX ;延時程序</p><p><b> PUS
11、H CX</b></p><p> MOV CX,0002H</p><p> TIME1: MOV AX,0300H</p><p> TIME2: DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p&
12、gt;<p><b> POP CX</b></p><p><b> POP AX</b></p><p><b> RET</b></p><p> CODE ENDS</p><p><b> END START</b>
13、</p><p> 二、2.1將8個鍵按實驗室要求定義鍵值,按任意鍵在顯示器上顯示對應(yīng)鍵值,要求顯示值能左移。</p><p><b> 2.2 流程圖</b></p><p><b> 2.3源程序:</b></p><p> STACK SEGMENT STACK</p>
14、;<p> DW 64 DUP (?)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> VAR1 DB 0BFH,0DFH,0EFH,0F7H</p><p> VAR2 DB 3FH,3FH,3FH,3FH,3FH</p>&l
15、t;p> VAR3 DB 00H,00H,00H,00H,00H</p><p> TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p> DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p> DATA ENDS</p><p> C
16、ODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV AL,89H </p><p> O
17、UT 63H,AL ;8255A初始化</p><p> STT: MOV AL,00H ;鍵盤測試</p><p> OUT 61H,AL</p><p> NEXT: IN AL,62H</p><p> AND
18、AL,82H</p><p> CMP AL,82H</p><p> JNZ KEYABC</p><p> CALL DISP ;調(diào)用顯示程序</p><p><b> JMP STT</b></p><p> ??;-------
19、--------------------------------------------------------------</p><p> KEYABC: CALL TIME ;延時,去抖動</p><p><b> IN AL,62H</b></p><p> AND AL,8
20、2H</p><p> CMP AL,82H</p><p><b> JNZ KEY_7</b></p><p><b> JMP STT</b></p><p> KEY_7: MOV AL,0F7H ;鍵盤掃描識別</p>
21、;<p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_A</b></p><p><b> CALL KEY7</b></p>
22、;<p><b> JMP STTK</b></p><p> KEY_A: TEST AL,80H</p><p><b> JNZ KEY_1</b></p><p><b> CALL KEYA</b></p><p><b> JM
23、P STTK</b></p><p> KEY_1: MOV AL,0EFH</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_F&l
24、t;/b></p><p><b> CALL KEY1</b></p><p><b> JMP STTK</b></p><p> KEY_F: TEST AL,80H</p><p><b> JNZ KEY_B</b></p><p
25、><b> CALL KEYF</b></p><p><b> JMP STTK</b></p><p> KEY_B: MOV AL,0DFH</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p>
26、;<p> TEST AL,02H</p><p><b> JNZ KEY_6</b></p><p><b> CALL KEYB</b></p><p><b> JMP STTK</b></p><p> KEY_6: TEST AL,80H
27、</p><p><b> JNZ KEY_E</b></p><p><b> CALL KEY6</b></p><p><b> JMP STTK</b></p><p> KEY_E: MOV AL,0BFH</p><p> O
28、UT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_9</b></p><p><b> CALL KEYE</b></p><p><
29、;b> JMP STTK</b></p><p> KEY_9: TEST AL,80H</p><p> JNZ KEY_01</p><p><b> CALL KEY9</b></p><p> KEY_01: JMP STTK</p><p> ??;-
30、--------------------------------------------------------------------</p><p><b> ;按鍵7處理子程序</b></p><p> KEY7: CALL LP1 ;低4位字節(jié)前移</p><p>
31、 MOV AL,07H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL ;查表取出要顯示數(shù)字的數(shù)碼管段碼</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p>
32、;<p> CALL DISP ;顯示</p><p> RET ;返回</p><p> ?。?--------------------------------------------------------------------</p&g
33、t;<p> KEYA: CALL LP1 ;按鍵A處理子程序</p><p> MOV AL,0AH</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL<
34、;/b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ;---------------------------------------------------------
35、------------</p><p> KEY1: CALL LP1 ;按鍵1處理子程序</p><p> MOV AL,01H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><
36、;b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ??;-------------------------------------
37、--------------------------------</p><p> KEYF: CALL LP1 ;按鍵F處理子程序</p><p> MOV AL,0FH</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL<
38、/p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ??;-----------------
39、----------------------------------------------------</p><p> KEYB: CALL LP1 ;按鍵B處理子程序</p><p> MOV AL,0BH</p><p> MOV [DI+4],AL</p><p&g
40、t; LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p>
41、?。?--------------------------------------------------------------------</p><p> KEY6: CALL LP1 ;按鍵6處理子程序</p><p> MOV AL,06H</p><p> MOV [DI+4],A
42、L</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b>&l
43、t;/p><p> ?。?--------------------------------------------------------------------</p><p> KEYE: CALL LP1 ;按鍵E處理子程序</p><p> MOV AL,0EH</p><
44、p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b&g
45、t; RET</b></p><p> ??;---------------------------------------------------------------------</p><p> KEY9: CALL LP1 ;按鍵9處理子程序</p><p> MOV AL
46、,09H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p&g
47、t;<p><b> RET </b></p><p> ?。?--------------------------------------------------------------------</p><p> LP1: MOV CX,0004H ;數(shù)據(jù)移位保存子程序(前移四位)
48、</p><p> MOV SI,OFFSET VAR2</p><p> MOV DI,OFFSET VAR3</p><p> LP2: MOV AL,[SI+3]</p><p> MOV [SI+4],AL</p><p> MOV AL,[DI+3]</p><p&g
49、t; MOV [DI+4],AL</p><p><b> DEC SI</b></p><p><b> DEC DI</b></p><p><b> LOOP LP2</b></p><p><b> RET</b></p>
50、<p> ??;---------------------------------------------------------------------</p><p> DISP: MOV SI,OFFSET VAR1 ;顯示子程序</p><p> MOV DI,OFFSET VAR2</p><p&g
51、t; MOV CX,0004H</p><p> DIR: MOV AL,[SI]</p><p> OUT 61H,AL</p><p> MOV AL,[DI]</p><p> OUT 60H,AL</p><p><b> CALL TIME</b></p&g
52、t;<p><b> INC SI</b></p><p><b> INC DI</b></p><p><b> LOOP DIR</b></p><p><b> RET</b></p><p> ;-------------
53、--------------------------------------------------------</p><p> TIME: PUSH AX ;延時程序</p><p><b> PUSH CX</b></p><p> MOV CX,0002H&
54、lt;/p><p> TIME1: MOV AX,0300H</p><p> TIME2: DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p><p><b> POP CX</b><
55、;/p><p><b> POP AX</b></p><p><b> RET</b></p><p> ;---------------------------------------------------------------------</p><p> STTK: CAL
56、L DISP ;放鍵測試程序</p><p> MOV AL,00H</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> AND AL,82H</p><p> CMP
57、 AL,82H</p><p><b> JNZ STTK</b></p><p><b> JMP STT</b></p><p> CODE ENDS</p><p> END START </p><p><b> 三計算器程序<
58、/b></p><p> 3.1要求:1.在顯示器上顯示任意四位十六進制數(shù)</p><p> 2.將8個鍵按實驗室要求定義鍵值,按任意鍵在顯示器上顯示對應(yīng)鍵值,要求顯示值能夠左移。</p><p><b> 3實現(xiàn):</b></p><p> 1.定義鍵盤按鍵:5個為數(shù)字鍵2、4、5、6、7,3個功能鍵:加
59、號+,乘號×,等號=;</p><p> 2.可進行三位8進制加法運算;</p><p> 3.可進行兩位10進制乘法運算。</p><p> 3.2各部分工作原理說明</p><p> 3.2.1.18255接口芯片與2×4鍵盤的連接</p><p> 圖中有2行4列,4根線于PB口相連
60、,2根列線與PC口的PC1,PC7相連。按鍵設(shè)置在行、列交點處(數(shù)字或字符為其鍵號),行、列線分別連接到按鍵開關(guān)的兩端。當列線通過上拉電阻接+5V時,就被鉗位在高電平狀態(tài)。鍵盤中有無鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來判斷的。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有鍵按下,總會有一根列線電平被拉至低電平,從而使列線輸入不全為1。</p><p> 鍵盤中哪一個鍵按下是由行線
61、逐行置低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為1,則所按下之鍵不在次行。如果不全為1,則所按下之鍵必在次行。而且是在與0電平行線相交點上的那個鍵。</p><p> 鍵盤的工作方式采用編程掃描工作方式,即通過調(diào)用鍵盤子程序來響應(yīng)鍵輸入的要求,在鍵盤掃描子程序中完成下述功能:</p><p> 判斷鍵盤上有無鍵按下。其方法是先使PB
62、3~PB6=0,然后讀PC1、PC7的狀態(tài),若全為1,則鍵盤中無鍵按下;若不全為1,則說明鍵盤中有鍵按下。</p><p> 去除按鍵的抖動影響。對于由機械觸點構(gòu)成的按鍵,由于機械觸點的彈性作用,觸點在閉合及斷開瞬間有一個抖動過程,一般為5~10ms時間。為了消除抖動影響可作這樣處理:當判斷有鍵按下后,軟件延時一段時間在判斷鍵盤狀態(tài),如果仍有鍵按下狀態(tài),則認為有一個確定的鍵按下,否則按鍵抖動處理。</p&
63、gt;<p> 求按下鍵的鍵值及鍵號。鍵盤上的每個鍵都對應(yīng)一個鍵值。鍵值的組成:其中4位為掃描該鍵時的行線輸出值(PB3~PB6),高8位為該鍵按下時的列線輸入值(PC0、PC1為有效位,其余位令其為1)。由于鍵盤中鍵號排列無規(guī)律,不能通過對鍵值直接運算得到鍵號。因此必須先判斷按下鍵是使PC7=0還是PC1=0,然后再查為零的列線上鍵按下時其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵的鍵值及鍵號的目的是使程序
64、轉(zhuǎn)到相應(yīng)的地址去完成該鍵的操作。一般,對數(shù)字鍵就是直接將該號送到顯示緩沖區(qū)進行顯示,對功能鍵則必須先找到該功能鍵處理程序入口地址,并轉(zhuǎn)去執(zhí)行該鍵的命令。因此當鍵號求到后,還必須找到功能處理入口。</p><p> 為保證鍵閉合依次CPU僅進行依次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號送累加器AH。</p><p> 3.2.2 LED顯示器的工作方式</p>&
65、lt;p> LED數(shù)碼管是目前最常用的數(shù)字顯示器,圖A、B為共陰管和共陽管的電路,圖C為兩種不同出線形式的引出腳功能圖。</p><p> 一個LED數(shù)碼管可用來顯示一位0~9十進制數(shù)和一個小數(shù)點。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為2~2.5V,每個發(fā)光二極管的點亮電流在5~10mA。LED數(shù)碼管要顯示BCD碼所表示
66、的十進制數(shù)字就需要有一個專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當?shù)尿?qū)動能力。</p><p> 圖A 共陰連接(“1”電平驅(qū)動) 圖B 共陽連接(“0”電平驅(qū)動)</p><p> 圖C LED數(shù)碼管符號及引腳功能圖</p><p> LED顯示器有靜態(tài)和動態(tài)兩種工作方式</p><p> LED顯示
67、器工作在靜態(tài)顯示方式下,共陰極或共陽極連接在一起,然后接地或+5V;每位的段選線(A,B,…,G,H)與一個8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。</p><p> 在多位LED顯示時,為了化簡電路,降低成本,將所有位的斷選線并聯(lián)在一起,由一個8位的I/O口控制,即控制段選碼而共陰極或共陽極點分別由相應(yīng)的I/O線控制即控制位選碼,這就是動態(tài)顯示。</p&g
68、t;<p> 4位LED動態(tài)顯示電路只需一個8位I/O口及一個4位I/O口,其中8個I/O控制段選碼,4位I/O控制位選。進行4位字符顯示時,采用掃描顯示方式,即在每一瞬間只使某一位顯示相應(yīng)字符,在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平,共陽極送高電平),以保證該位顯示相應(yīng)字符。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延遲一段時間(1~5ms),以造成視覺暫留
69、效果。不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。</p><p><b> 3.3 流程圖</b></p><p><b> 3.4源程序</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p>
70、<p> STACK ENDS</p><p> DATA SEGMENT</p><p> VAR1 DB 0BFH,0DFH,0EFH,0F7H</p><p> VAR2 DB 3FH,3FH, 3FH, 3FH,3FH</p><p> VAR3 DB 00H,00H,00H,00H,00H,00H,
71、00H,00H,00H,00H</p><p> VAR4 DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H</p><p> TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p> DB 7FH,67H,77H,7CH,39H,5EH,79H,71H</p>
72、<p><b> DATA ENDS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA, </p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p
73、><p> MOV AL,89H;8255A初始化</p><p> OUT 63H,AL</p><p> MOV BX,0000H</p><p> STT:MOV AL,00H;鍵盤測試</p><p> OUT 61H,AL</p><p> N
74、EXT: IN AL,62H</p><p> AND AL,82H;通過掃描C口低位測試是否按鍵</p><p> CMP AL,82H</p><p> JNZ KEYABC</p><p><b> CALL DISP</b></p><p><b> J
75、MP STT</b></p><p> KEYABC:CALL TIME;調(diào)用延時,去抖動</p><p> IN AL,62H;送入C口數(shù)據(jù)</p><p> AND AL,82H;數(shù)據(jù)前六位清零</p><p> CMP AL,82H;比較數(shù)據(jù)后兩位<
76、/p><p> JNZ KEY_4 ;轉(zhuǎn)移到檢測按下哪個數(shù)字鍵</p><p> JMP STT;返回檢測鍵盤</p><p> KEY_4: MOV AL, 0F7H;檢測數(shù)字4鍵</p><p> OUT 61H,AL</p><p><b> IN
77、 AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_2;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY4 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p>
78、<p> KEY_2 : TEST AL,80H;檢測數(shù)字鍵2鍵</p><p> JNZ KEY_5;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY2;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_5
79、 : MOV AL, 0EFH;檢測數(shù)字5鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_JIA;轉(zhuǎn)移檢測下一個數(shù)字鍵</p&g
80、t;<p> CALL KEY5 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_JIA: TEST AL, 80H;檢測 功能鍵+</p><p> JNZ KEY_6;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p>
81、 CALL KEYJIA ;調(diào)用數(shù)字鍵處理程序</p><p><b> JMP STTK</b></p><p> KEY_6 : MOV AL,0DFH;檢測數(shù)6鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b&g
82、t;</p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_CHENG;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY6;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p>
83、KEY_CHENG : TEST AL,80H;檢測功能鍵*</p><p> JNZ KEY_7;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEYCHENG;調(diào)用功能鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_7 : MOV
84、 AL,0BFH;檢測數(shù)字7鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_DEN;轉(zhuǎn)移檢測下一個功能鍵</p><
85、;p> CALL KEY7 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_DEN : TEST AL, 80H;檢功能=鍵</p><p> JNZ KEY_71</p><p> CALL KEYDEN;調(diào)用功能
86、鍵處理程序</p><p> KEY_71: JMP STTK;放鍵返回</p><p> KEY4: CMP BH,00H</p><p><b> JZ KEY4_1</b></p><p> CALL CLEAR</p><p> KEY4_1:CALL LP1
87、</p><p> MOV AL,04H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p>
88、<p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY5: CMP BH,00H</p><p>&l
89、t;b> JZ KEY5_1</b></p><p> CALL CLEAR</p><p> KEY5_1:CALL LP1</p><p> MOV AL,05H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX<
90、/b></p><p> LEA BX,TABL</p><p><b> XLAT</b></p><p> MOV [SI+4],AL</p><p> CALL DISP</p><p> POP BX</p><p><b>
91、 RET</b></p><p> KEY6: CMP BH,00H</p><p><b> JZ KEY6_1</b></p><p> CALL CLEAR</p><p> KEY6_1:CALL LP1</p><p> MOV AL,06H&l
92、t;/p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><
93、p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY7: CMP BH,00H</p><p><b> JZ KEY7_1</b></p>&l
94、t;p> CALL CLEAR</p><p> KEY7_1:CALL LP1</p><p> MOV AL,07H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL&l
95、t;/p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY2: CMP BH,00H</p><
96、;p><b> JZ KEY2_1</b></p><p> CALL CLEAR</p><p> KEY2_1:CALL LP1</p><p> MOV AL, 02H</p><p> MOV [DI+4],AL</p><p><b> PU
97、SH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX
98、</p><p><b> RET</b></p><p> KEYJIA: CMP BH,00H</p><p> JNZ KEYJIA_1</p><p><b> CALL LP3</b></p><p> KEYJIA_1:MOV BX,0101H&
99、lt;/p><p><b> RET</b></p><p> KEYSCHENG CMP BH,00H</p><p> JNZ KEYCHENG_1</p><p><b> CALL LP3</b></p><p> KEYCHENG_1:MOV BX,0102
100、H </p><p><b> RET</b></p><p> KEYDEN: CMP BL,00H</p><p> JNZ KEYDEN_1</p><p> CALL CLEAR</p><p><b> CALL DISP</b></p>&
101、lt;p> KEYDEN_1:MOV BH,01H</p><p> CMP BL,01H</p><p><b> JZ K1</b></p><p> CMP BL,02H</p><p><b> JZ K2</b></p><p> CALL CL
102、EAR</p><p><b> STTE:RET</b></p><p> K1:CALL JIA1</p><p><b> JMP STTE</b></p><p> K2:CALL CHENG</p><p><b> JMP STTE</b
103、></p><p> JIA1: MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p><b> CLC</b></p><p> MOV CX,0004H</p><p> JIA2: MOV AL, [DI]
104、</p><p> ADC AL, [SI]</p><p> CMP AL,08H</p><p><b> JB B1</b></p><p> AND AL,07H</p><p><b> STC</b></p><p>&l
105、t;b> JMP B2</b></p><p><b> B1: CLC</b></p><p> B2: MOV [DI], AL</p><p><b> INC SI</b></p><p><b> INC DI</b><
106、;/p><p> LOOP JIA_2</p><p> CALL CHANGE</p><p> CALL DISP</p><p> MOV BL, 00H;清零BL是判斷等號所需要</p><p><b> RET</b></p><p> C
107、HENG:MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p> MOV AL,[DI]</p><p> MOV CL,[SI]</p><p><b> MUL CL</b></p><p><b> AA
108、M</b></p><p> MOV [DI+5],AX</p><p> MOV AL,[DI+1]</p><p><b> MUL CL</b></p><p><b> AAM</b></p><p> ADD AL,[DI+6]<
109、/p><p><b> AAA</b></p><p> MOV [DI+6],AX</p><p> MOV AL,[DI]</p><p> MOV CL,[SI+1]</p><p><b> MUL CL</b></p><p>
110、<b> AAM</b></p><p> MOV [SI+5],AX</p><p> MOV AL,[DI+1]</p><p><b> MUL CL</b></p><p><b> AAM</b></p><p> ADD
111、AL,[SI+6]</p><p><b> AAA</b></p><p> MOV [SI+6],AX</p><p> MOV AL,[DI+5]</p><p> MOV [DI],AL</p><p> MOV AL,[DI+6]</p><p>
112、; ADD AL,[SI+5]</p><p><b> AAA</b></p><p> MOV [DI+1],AL</p><p> MOV AL,[DI+7]</p><p> ADC AL,[SI+6]</p><p><b> AAA</b>&l
113、t;/p><p> MOV [DI+2],AL</p><p> MOV AL,00H</p><p> ADC AL,[SI+7]</p><p><b> AAA</b></p><p> MOV [DI+3],AL</p><p> CALL CHA
114、NGE</p><p> CALL DISP</p><p> MOV BL,00H</p><p><b> RET</b></p><p> LP1:MOV CX,0004H;數(shù)據(jù)移位保存子程序(前進三位)</p><p> MOV SI,OFFSET VAR
115、2;SI指向顯示代碼緩沖區(qū)首址</p><p> MOV DI,OFFSET VAR3</p><p> LP2:MOV AL,[SI+3]</p><p> MOV [SI+4],AL </p><p> MOV AL,[DI+3];顯示代碼移位</p><p> MOV [DI+4
116、],AL</p><p> DEC SI ;顯示數(shù)字移位</p><p><b> DEC DI</b></p><p><b> LOOP LP2</b></p><p> RET;移位返回</p>
117、<p> LP3: MOV CX,0004H</p><p> MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p> LP4: MOV AL,[SI]</p><p> MOV [DI],AL</p><p><b> INC
118、 SI</b></p><p><b> INC DI</b></p><p><b> LOOP LP4</b></p><p><b> RET</b></p><p> CHANGE:MOV SI,OFFSET VAR2</p><
119、p> MOV DI,OFFSET VAR4</p><p> MOV BX,OFFSET TABLE</p><p> MOV CX,0004H</p><p> COMP0: MOV AL,[DI]</p><p><b> XLAT TABL</b></p><p> MO
120、V [SI],AL</p><p><b> INC SI</b></p><p><b> INC DI</b></p><p> LOOP COMP0</p><p><b> RET </b></p><p> DISP: MOV SI,
121、OFFSET VAR1</p><p> MOV DI,OFFSET VAR2</p><p> MOV DL,[DI+3]</p><p> CMP DL,3FH</p><p><b> JNZ DIR3</b></p><p> MOV DL,[DI+2]</p>&
122、lt;p> CMP DL,3FH</p><p><b> JNZ DIR2</b></p><p> MOV DL,[DI+1]</p><p> CMP DL,3FH</p><p><b> JNZ DIR1</b></p><p><b>
123、 JMPDIR0</b></p><p> DIR3:MOV CX,0004H</p><p><b> JMP DIR</b></p><p> DIR2:MOV CX,0003H</p><p><b> JMP DIR</b></p><p> D
124、IR1:MOV CX,0002H</p><p><b> JMP DIR</b></p><p> DIR0:MOV CX,0001H</p><p> DIR:MOV AL,[SI]</p><p> OUT 61H,AL</p><p> MOV AL,[DI]</p>
125、<p> OUT 60H,AL</p><p><b> CALL TIME</b></p><p><b> INC SI</b></p><p><b> INC DI</b></p><p><b> LOOP DIR</b>
126、</p><p><b> RET</b></p><p> TIME: PUSH AX </p><p> PUSH CX;延時子程序</p><p> MOV CX,0002H</p><p> TIME1:MOV AX,0300H</p><p&
127、gt; TIME2:DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p><p><b> POP CX</b></p><p><b> POP AX</b></p><p>&l
128、t;b> RET</b></p><p> CLEAR:MOV SI,OFFSET VAR2</p><p> MOV DI,OFFSET VAR3</p><p> MOV CX,0005H</p><p> CLEAR1:MOV AL,3FH</p><p> MOV [SI
129、],AL</p><p> MOV AL,00H</p><p> MOV [DI],AL</p><p><b> INC SI</b></p><p><b> INC DI</b></p><p> LOOP CLEAR1</p>&l
130、t;p> MOV BH,00H</p><p><b> RET</b></p><p> STTK: CALL DISP;放鍵測試程序</p><p> MOV AL,00H</p><p> OUT 61H,AL;B口清零</p><p>
131、 IN AL,62H;送入C口數(shù)據(jù)</p><p> AND AL,82H;數(shù)據(jù)保留低兩位</p><p> CMP AL,82;比較是否放鍵</p><p> JNZ STTK;仍未放鍵,返回繼續(xù)檢測放鍵</p><p> JMP STT;已放鍵,返回&l
132、t;/p><p><b> CODE ENDS</b></p><p><b> END START</b></p><p><b> 四心得體會</b></p><p> 雖然上機調(diào)試的經(jīng)歷是痛苦的,一步一步的完成了以上的程序,感覺自己能力還需要加強。同時,也想到,或許,
133、學程序初期,都是仿照別人的程序算法吧。自己以后要盡量多參閱一些程序,提高自己的水平。但是期間的細節(jié)錯誤給了我們應(yīng)有的教訓,使我們在以后的學習及工作中盡量避免,對于匯編語言的編程也有了進一步的了解。</p><p> 這次的課程設(shè)計還使我意識到要將微機原理及應(yīng)用這門專業(yè)課程學習好,除了學好書本知識外還要通過實踐把書本知識應(yīng)用到實踐中去,才能對這門課程有更深的認識,也有利于自己對知識的吸收,鞏固和提高。</p
134、><p> 五、應(yīng)收集的資料及主要參考文獻</p><p> 1 許立鋅等編.微型計算機原理及應(yīng)用.北京:機械工業(yè)出版社,2003</p><p> 2.許立梓等編《微型計算機原理及應(yīng)用》</p><p> --習題解答、實驗指導(dǎo)及課程設(shè)計.</p><p> 北京:機械工業(yè)出版社,2003</p>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微型計算機課程設(shè)計報告
- 課程設(shè)計--微型計算機系統(tǒng)設(shè)計
- 微型計算機課程設(shè)計--數(shù)據(jù)采集系統(tǒng)
- 微型計算機課程設(shè)計---數(shù)字錄音機
- 《微型計算機技術(shù)》課程設(shè)計--交通燈控制系統(tǒng)
- 微型計算機原理與應(yīng)用
- 微型計算機接口技術(shù)課程設(shè)計---雙機通信
- 微型計算機原理及應(yīng)用
- 微型計算機系統(tǒng)概述
- 單片微型計算機課程設(shè)計報告-多功能電子數(shù)字鐘
- 微型計算機技術(shù)課程設(shè)計報告--微機交通燈控制系統(tǒng)
- 微型計算機基于8086cup數(shù)字時鐘課程設(shè)計任務(wù)
- 微型計算機控制技術(shù)課程設(shè)計---步進電機控制系統(tǒng)設(shè)計
- 微型計算機控制技術(shù)課程設(shè)計報告---電磁智能車舵機控制
- 單片微型計算機原理與接口技術(shù)課程設(shè)計報告——溫度測量
- 微型計算機技術(shù)及應(yīng)用課程設(shè)計--交通燈控制器
- 微型計算機技術(shù)及應(yīng)用實驗報告
- 微型計算機技術(shù)及應(yīng)用實驗報告
- 微型計算機控制技術(shù)課程設(shè)計---步進電機角度控制
- 微型計算機技術(shù)課程設(shè)計--模擬電壓采集電路設(shè)計
評論
0/150
提交評論