版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 計算機硬件技術(shù)實踐報告</p><p> 題目 簡易計算器的設(shè)計 </p><p> 姓名 </p><p> 專業(yè) 自動化(電站方向) </p><p>
2、 班級 </p><p> 學(xué)號 </p><p><b> 一、設(shè)計題目及目的</b></p><p> 本次課程設(shè)計的實驗?zāi)康氖?通過該實驗掌握較復(fù)雜程序的設(shè)計;能獨立完成用程序?qū)?086、8255A控制鍵盤和LED顯示的控制,
3、完成計算器加減法的應(yīng)用;獨立編寫程序,明白和掌握程序的原理和實現(xiàn)方式;學(xué)習(xí)和掌握計算機中常用接口電路的應(yīng)用和設(shè)計技術(shù),充分認識理論知識對應(yīng)用技術(shù)的指導(dǎo)性作用;進一步加強理論知識與應(yīng)用相結(jié)合的實踐和鍛煉,為以后的設(shè)計提供經(jīng)驗。這次設(shè)計實踐,加深了我對專業(yè)知識和理論知識學(xué)習(xí)的認識和理解,使我的設(shè)計水平和對所學(xué)的知識的應(yīng)用能力以及分析問題解決問題的能力得到全面提高。我們的具體任務(wù)是用8086設(shè)計一個能實現(xiàn)0~9整數(shù)加減乘除法的運算器,并用2位
4、LED數(shù)碼顯示,鍵盤包括0-9,+ ,-,×,÷,=,NO/C共16個按鍵。</p><p> 二、小組成員分工及成果</p><p> 在實驗課程要求下,我們選擇基于8086CPU的模擬計算器設(shè)計。要完成設(shè)計首先需要構(gòu)建簡單的微型計算機應(yīng)用系統(tǒng),其次是確定組成各部件的芯片,然后畫原理圖,根據(jù)相應(yīng)的原理以及實現(xiàn)過程,編寫出相應(yīng)的匯編代碼。再根據(jù)原理圖連接硬件電路,電
5、路連接完成后進行調(diào)試。設(shè)計過程中我們用到了8086CPU、可編程并行輸入/輸出芯片8255A、74HC138、74HC373、矩陣式鍵盤、LED數(shù)碼管。我們的模擬計算器能實現(xiàn)2位十進制數(shù)以內(nèi)的加減乘除法運算。</p><p> 首先,本組的三個成員一起討論研究簡易計算器設(shè)計的主要方案。</p><p> 粗略設(shè)計程序流程圖以確定簡易計算器設(shè)計的大概框架。</p><
6、p> 明確目的后各自查詢資料了解設(shè)計原理、逐步清晰設(shè)計思路。</p><p> 以下為大體分工:主要負責(zé):1、設(shè)計主要程序,編寫;</p><p> 2、查找資料驗證修改;</p><p> 主要負責(zé):1、選擇需要用的各個芯片;</p><p> 2、設(shè)計硬件原理圖;</p><p> 主要負責(zé):1、
7、各個芯片功能的資料查找;</p><p><b> 2、設(shè)計程序流程圖</b></p><p><b> 三、設(shè)計方案思路</b></p><p> 用8086設(shè)計一個能實現(xiàn)0~9整數(shù)加減乘除法的運算器,并用2位LED數(shù)碼顯示,鍵盤包括0-9,+ ,-,×,÷,=,NO/C共16個按鍵。</
8、p><p> 1、通過小鍵盤做加減乘除運算。</p><p> 2、數(shù)碼管顯示器作輸入數(shù)據(jù)和結(jié)果數(shù)據(jù)的顯示。</p><p> 3、數(shù)字用小鍵盤0~9,“C、+、-、×、÷、= ”做功能鍵</p><p> 4、運算順序:a.首先輸入一個原始數(shù)據(jù)(在0~9之間,否則無反應(yīng))顯示器跟隨顯示</p><
9、p> b.按“+、-、×、÷”顯示器內(nèi)容不變</p><p> c.再次輸入一個數(shù)據(jù)(在0~9之間,否則無反應(yīng))顯示器跟隨顯示</p><p> d.按“=”顯示器顯示結(jié)果數(shù)據(jù)</p><p> e.按C顯示“00”數(shù)據(jù)清0,并重新開始運算</p><p> f.若輸入一個數(shù)據(jù)后直接按“=”則數(shù)據(jù)不變<
10、;/p><p><b> 設(shè)計思路:</b></p><p> 將整個程序劃分為鍵盤掃描部分,顯示部分,運算程序部分。首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對輸入鍵的數(shù)值,通過調(diào)用子程序?qū)崿F(xiàn)運算。運算完成后將運算的結(jié)果儲存并顯示到LED顯示器上。</p><p> 軟件流程大致如
11、下:開始,然后是系統(tǒng)的初始化,進行鍵盤掃描,對掃描的鍵值進行判斷(分為數(shù)字鍵和功能鍵),若為數(shù)字鍵,則執(zhí)行數(shù)字鍵處理程序,即顯示數(shù)字并將數(shù)值存儲;若為功能鍵,則先判斷是否為清屏,如是清屏,則執(zhí)行清屏子程序,如是加減乘除運算鍵則調(diào)用相應(yīng)程序運算,如是等號鍵,則先判斷上個符號位,調(diào)用相對應(yīng)的運算子程序進行運算,如此就可以得到需要的結(jié)果了。 </p><p> 四、硬件原理圖(包括芯片的選型介紹
12、)</p><p> 硬件電路圖:(見圖1)</p><p><b> 圖1 原理圖</b></p><p><b> 1、鍵盤輸入模塊</b></p><p> 鍵盤是常用信息輸入元件,其實鍵盤也是由一個個按鈕組成,如果是獨立按鈕的話必須要對應(yīng)一個I/O口對它進行檢測,而鍵盤往往只需要鍵
13、盤按鈕數(shù)一半的I/O口對它進行檢測,也許對一個比較簡單的系統(tǒng)I/O口數(shù)一般不是問題,但對于一個大型、復(fù)雜的系統(tǒng)來說I/O資源就顯得非常珍貴了,盡量減少I/O使用是非常利于降低成本,另外一方面鍵盤比用獨立按鍵要美觀,同時硬件上的節(jié)省必然導(dǎo)致軟件上編程的復(fù)雜。我們設(shè)計時使用的是4*4式鍵盤,如圖2所示。</p><p><b> 圖2 鍵盤</b></p><p>
14、 圖中有4行4列,4根行線與PC口相連,4根列線與PA口相連。按鍵設(shè)置在行、列交點處(數(shù)字或字符為其鍵號),行、列線分別連接到按鍵開關(guān)的兩端。鍵盤中有無按鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來判斷。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有按鍵按下,總會有一根列線電平被拉至低電平,從而使列線輸入不全為1。</p><p> 2、可編程并行通信接口芯片8255A</p>
15、;<p><b> 圖3 8255A</b></p><p> ?。?)并行輸入/輸出端口A,B,C</p><p> 8255A內(nèi)部包括三個8位的輸入輸出端口,分別是端口A、端口B、端口C,相應(yīng)信號線是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作為輸入或輸出。通常將端口A和端口B定義為輸入/輸出的數(shù)據(jù)端口,而端口C則既可
16、以作數(shù)據(jù)端口,又可以作為端口A和端口B的狀態(tài)和控制信息的傳送端口。</p><p> ?。?)A組和B組控制部件</p><p> 端口A和端口C的高4位(PC7~PC4)構(gòu)成A組;由A組控制部件實現(xiàn)控制功能。端口B和端口C的低4位(PC3~PC0)構(gòu)成B組;由B組控制部件實現(xiàn)控制功能。 A組和B組利用各自的控制單元來接收讀寫控制部件的命令和CPU通過數(shù)據(jù)總線(D0~D7)送來的控制字,
17、并根據(jù)他們來定義各個端口的操作方式。</p><p> ?。?)數(shù)據(jù)總線緩沖存儲器</p><p> 三態(tài)雙向8位緩沖器,是8255A與8086CPU之間的數(shù)據(jù)接口。與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)信息都是通過該緩沖器進行傳送。</p><p> (4) 讀/寫控制部件</p><p> 8255A是能完成讀/寫控制功能的部件。能接
18、收CPU的控制命令,并根據(jù)控制命令向各個功能部件發(fā)出操作指令。</p><p> CS 片選信號:由CPU輸入,有效時表示該8255A被選中。 </p><p> RD, WR 讀、寫控制信號:由CPU輸入。RD有效表示CPU讀8255A,WR有效表示CPU寫8255A</p><p> RESET 復(fù)位信號:由CPU輸入。RESET信號有效,清除8255A中
19、所有控制字寄存器內(nèi)容,并將各個端口置成輸入方式。</p><p> 圖4 8255A內(nèi)部結(jié)構(gòu)</p><p> 定義工作方式控制字:</p><p> 工作方式0:8255A中各端口的基本輸入/輸出方式。</p><p> 圖5 8255A工作方式控制</p><p><b> 3、顯示模塊<
20、;/b></p><p><b> 圖6 顯示器</b></p><p> 顯示原理:顯示子程序把數(shù)據(jù)每一位獨立顯示,每次從最高位顯示到最低位,在掃描鍵盤的時候不斷調(diào)用顯示子程序,形成了從高位到低位的不斷循環(huán)顯示,由于循環(huán)速度快,看起來就好像一起顯示的。</p><p><b> 4、74HC373</b>&
21、lt;/p><p> 圖7 74HC373</p><p> 其中AD0-AD7為數(shù)據(jù)輸入端,A0-A7為輸出端。</p><p> 當(dāng)三態(tài)允許控制端OE為低電平時,A0-A7為正常邏輯狀態(tài),可用來驅(qū)動負載或總線,當(dāng)OE為高電平時,A0-A7成高阻態(tài),不驅(qū)動總線。</p><p> 當(dāng)鎖存允許端LE為高電平時,A隨數(shù)據(jù)AD而變,當(dāng)LE為
22、低電平AD被鎖存在已建立的數(shù)據(jù)電平。</p><p><b> 5、74HC138</b></p><p> 圖8 74HC138</p><p> 74HC138是一款高速CMOS器件,74HC138引腳兼容低功耗肖特基TTL(LSTTL)系列。</p><p> 74HC138譯碼器可接受3位二進制加權(quán)地址
23、輸入(A0, A1和A2),并當(dāng)使能時,提供8個互斥的低有效輸出(Y0至Y7)。74HC138特有3個使能輸入端:兩個低有效(E1和E2)和一個高有效(E3)。除非E1和E2置低且E3置高,否則74HC138將保持所有輸出為高,74HC138為反相輸出,它按照三位二進制輸入碼和賦能輸入條件,從8 個輸出端中譯出一個 低電平輸出。兩個低電平有效的賦能輸入端和一個高電平有效的賦能輸入端減少了擴展所需要的外接門或倒相器。</p>
24、<p><b> 6、8086CPU</b></p><p><b> 圖9</b></p><p> 8086CPU的40條引腳信號可按功能分可分為四類,它們是:地址總線,數(shù)據(jù)總線,控制總線,其它(時鐘與電源)。 最小模式下一些引腳功能(MN/MX接+5V):</p><p> AD15~AD0,地址
25、/數(shù)據(jù)總線 </p><p> A19/S6~A16/S3,地址/狀態(tài)總線 </p><p><b> RD,讀信號 </b></p><p><b> WR,寫信號 </b></p><p> M/IO,存儲器/輸入輸出控制信號</p><p> ALE,地址鎖存
26、允許信號</p><p> READY(Ready),準(zhǔn)備就緒信號</p><p> INTR,可屏蔽中斷請求信號</p><p> INTA,中斷響應(yīng)信號 </p><p> NMI,非屏蔽中斷請求信號</p><p> RESET,系統(tǒng)復(fù)位信號 </p><p> DEN,數(shù)據(jù)允
27、許信號 </p><p> DT/R,數(shù)據(jù)發(fā)送/接收控制信號</p><p> HOLD,總線保持請求信號輸入 </p><p> HLDA,總線保持響應(yīng)信號 </p><p> TEST,測試信號 </p><p> CLK,時鐘輸入信號 </p><p> VCC(+5V),GN
28、D </p><p><b> 五、程序流程圖</b></p><p> 六、程序清單,要有適當(dāng)?shù)淖⑨?lt;/p><p> DATA SEGMENT</p><p> NUM1 DB 03H DUP(0)</p><p> NUM DB 03H DUP(0)</p>
29、;<p><b> DATA ENDS</b></p><p> STACK SEGMENT</p><p> DW 100 DUP(0)</p><p> STACK ENDS</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE
30、,DS:DATA,SS:STACK</p><p> PORTA EQU 30H ;A口地址</p><p> PORTB EQU 32H </p><p> PORTC EQU 34H</p><p>
31、 PORT8255 EQU 36H ;8255片選始地址</p><p> MAIN PROC FAR</p><p><b> (8255初始化)</b></p><p> START: MOV AX,DATA
32、 ; 數(shù)據(jù)段</p><p> MOV DS,AX ;將寄存器AX的內(nèi)容傳送給寄存器DS</p><p> MOV DX,PORT8255 ;把8255計數(shù)器里的內(nèi)容放到DX寄存器</p><p>
33、; MOV AL,81H ;A組方式0;A口輸出,C口高四位輸入</p><p> OUT DX,AL ;B組方式0;B口輸出,C口低四位輸入</p><p> LOPL: XOR AH,AH
34、 ;抑或指令,使AH清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較&
35、lt;/p><p> JZ LOPL ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL
36、 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL</p><p> CMP AL,0AH ;把AH和0AH相比較</p><p> JZ LOPL
37、 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL</p><p> JNC LOPL ;若CF=0,表示第一個數(shù)大,轉(zhuǎn)向LOPL</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p&g
38、t; LOPL2: LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV [SI],AL ;將AL的數(shù)據(jù)存放在SI中</p><p> PUSH AX
39、 ;AX出棧</p><p> LOPL1: XOR AH,AH ;抑或指令,使AH清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP
40、 AH,00H ;把AH和00H相比較</p><p> JZ LOPL1 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL1</p><p> CMP AL,0FH
41、 ;把AL和0FH相比較</p><p> JZ CCCL ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL</p><p> CMP AL,0AH ;把AL和0AH相比較</p><p&g
42、t; JZ XX1 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XX1</p><p> CMP AL,0BH ;把AL和0BH相比較</p><p> JZ XX2
43、 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XX2</p><p> CMP AL,0CH ;把AL和0CH相比較</p><p> JZ XX3D ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XX
44、3D</p><p> CMP AL,0DH ;把AL和0DH相比較</p><p> JZ XX4D ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XX4D</p><p> JMP LOPL1
45、 ;轉(zhuǎn)移到LOPL1</p><p> CCCL: MOV AL,00H</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL
46、 ;轉(zhuǎn)移到LOPL</p><p> XX3D: CALL XX3 ;調(diào)用XX3程序</p><p> XX4D: CALL XX4 ;調(diào)用XX4程序&l
47、t;/p><p> MAIN ENDP </p><p><b> XX1 PROC</b></p><p> NOP ;加</p><p
48、> LOPL3: XOR AH,AH ;抑或指令,使AH清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H
49、 ;把AH和00H相比較</p><p> JZ LOPL3 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL3</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ
50、 CCCL ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL</p><p> CMP AL,0AH ;把AL和0AH相比較</p><p> JZ LOPL3
51、 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL3</p><p> JNC LOPL3 ;若CF=0,表示第一個數(shù)大,轉(zhuǎn)向LOPL3</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> PUS
52、H AX ;AX出棧</p><p> LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV [SI+1],AL ;將AL的數(shù)據(jù)存放在SI+1中</
53、p><p> LOPL4: XOR AH,AH ;抑或指令,使AH清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H
54、 ;把AH和00H相比較</p><p> JZ LOPL4 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL4</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL
55、 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL</p><p> CMP AL,0EH ;把AL和0EH相比較</p><p> JZ XXX1 ; ZF=1
56、,即結(jié)果為0,則轉(zhuǎn)到XXX1</p><p> JMP LOPL4 ;轉(zhuǎn)移到LOPL4</p><p> XXX1: LEA SI,NUM</p><p> MOV AL,[SI]</p><p> AND AL,0FH</p&
57、gt;<p> MOV DL,[SI+1]</p><p> AND DL,0FH ; 相與,高四位置0,低四位保持不變,賦給DL</p><p> ADD AL,DL</p><p> DAA
58、 ;轉(zhuǎn)化成BCD碼</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL ;轉(zhuǎn)移到LOPL</p><p><b> XX1 ENDP</b></
59、p><p><b> XX2 PROC</b></p><p> NOP ;減</p><p> LOPL5: XOR AH,AH ;抑或指令,使AH清零</p><p&g
60、t; CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LOPL5 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL
61、5</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL</p><p> CMP AL,0AH
62、 ;把AL和0AH相比較</p><p> JZ LOPL5 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL5</p><p> JNC LOPL5</p><p> OUT 32H,AL ;輸出B口數(shù)
63、據(jù)AL</p><p> PUSH AX ;AX出棧</p><p> LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV [SI+1],AL
64、 ;將AL的數(shù)據(jù)存放在SI+1中</p><p><b> LOPL6:</b></p><p> XOR AH,AH ;抑或指令,使AH清零</p><p> CALL KEY
65、 ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LOPL6 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL6</p><p> CMP AL,
66、0FH ;把AL和0FH相比較</p><p> JZ CCCL7 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL7</p><p> CMP AL,0EH ;把AL和0EH相比
67、較</p><p> JZ XXX2 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XXX2</p><p> JMP LOPL6 ;轉(zhuǎn)移到LOPL6</p><p> XXX2: LEA SI,NUM
68、 ;將NUM的偏移地址給SI</p><p> MOV AL,[SI]</p><p> AND AL,0FH</p><p> MOV DL,[SI+1]</p><p> AND DL,0FH</p><p> SUB AL,
69、DL</p><p> ADD AL,00H</p><p><b> DAA</b></p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL
70、 ;轉(zhuǎn)移到LOPL</p><p> CCCL7: MOV AL,00H</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL ;轉(zhuǎn)移到LOPL <
71、/p><p><b> XX2 ENDP</b></p><p> XX3 PROC ;乘</p><p> LOPL7: XOR AH,AH ;抑或指令,使AH清零</p&g
72、t;<p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LOPL7 ;ZF
73、=1,即結(jié)果為0,則轉(zhuǎn)到LOPL7</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL2 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL2</p><p> CMP AL,0A
74、H ;把AL和0AH相比較</p><p> JZ LOPL7 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL7</p><p> JNC LOPL7 ;若CF=0,表示第一個數(shù)大,轉(zhuǎn)向L
75、OPL</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> PUSH AX ;AX出棧</p><p> LEA SI,NUM
76、 ;將NUM的偏移地址給SI</p><p> MOV [SI+1],AL ;將AL的數(shù)據(jù)存放在SI+1中</p><p> LOPL8: XOR AH,AH ;抑或指令,使AH清零</p><p> CALL KEY
77、 ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LOPL8 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL8</p>
78、<p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL3 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL3</p><p> CMP AL,0EH
79、 ;把AL和0EH相比較</p><p> JZ XXX3 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到XXX3</p><p> JMP LOPL8 ;轉(zhuǎn)移到LOPL8</p><p> XXX3
80、: LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV AL,[SI]</p><p> AND AL,0FH</p><p> MOV DL,[SI+1]</p><p> AND DL,0FH</p>
81、<p> MUL DL ; DL*AL</p><p> AAM ;商放AH,余數(shù)放AL</p><p> MOV CL,4</p><p> SAL
82、 AH,CL ;把AH向左移四位</p><p> OR AL,AH ;或指令,有1置1</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p>
83、<p> JMP LOPL ;轉(zhuǎn)移到LOPL</p><p> CCCL2: MOV AL,00H</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP
84、 LOPL ;轉(zhuǎn)移到LOPL</p><p> CCCL3: MOV AL,00H</p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL
85、 ;轉(zhuǎn)移到LOPL</p><p><b> XX3 ENDP</b></p><p> XX4 PROC ;除</p><p> LOPL9: XOR AH,AH
86、 ;抑或指令,使AH清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LO
87、PL9 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL9</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL5 ; ZF=1,即結(jié)果為
88、0,則轉(zhuǎn)到CCCL5</p><p> CMP AL,0AH ;把AL和0AH相比較</p><p> JZ LOPL9 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL9</p><p> JNC LOPL9
89、 ;若CF=0,表示第一個數(shù)大,轉(zhuǎn)向LOPL9 </p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> PUSH AX ;AX出棧</p><p>
90、 LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV [SI+1],AL ;將AL的數(shù)據(jù)存放在SI+1中</p><p> LOPL10: XOR AH,AH ;抑或指令,使A
91、H清零</p><p> CALL KEY ;調(diào)用KEY程序</p><p> CMP AH,00H ;把AH和00H相比較</p><p> JZ LOPL10
92、 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LOPL10</p><p> CMP AL,0FH ;把AL和0FH相比較</p><p> JZ CCCL4 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到CCCL4</p>&l
93、t;p> CMP AL,0EH ;把AL和0EH相比較</p><p> JZ XXX4 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到XXX4</p><p> JMP LOPL10
94、 ;轉(zhuǎn)移到LOPL10</p><p> XXX4: LEA SI,NUM ;將NUM的偏移地址給SI</p><p> MOV AL,[SI]</p><p> AND AL,0FH ;與指令,高四位清零,低四位不變&
95、lt;/p><p> MOV BL,[SI+1]</p><p> AND BL,0FH</p><p> AND AX,000FH</p><p> DIV BL ; AL÷BL,商放在AL中,余數(shù)放在AH中</
96、p><p> OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL ;轉(zhuǎn)移到LOPL</p><p> CCCL4: MOV AL,00H</p><p&
97、gt; OUT 32H,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL ;轉(zhuǎn)移到LOPL</p><p> CCCL5: MOV AL,00H</p><p> OUT 32H
98、,AL ;輸出B口數(shù)據(jù)AL</p><p> JMP LOPL ;轉(zhuǎn)移到LOPL</p><p><b> XX4 ENDP</b></p><p> KEY PROC</p&
99、gt;<p><b> NOP</b></p><p> LEA SI,NUM1</p><p> MOV AL,0EH</p><p> OUT 30H,AL ;輸出A口數(shù)據(jù)AL</p><p> IN AL,34H<
100、/p><p> CMP AL,07H ;把AL和07H相比較</p><p> JZ LL7 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL7</p><p> CMP AL,0BH
101、 ;把AL和0BH相比較</p><p> JZ LL8 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL8</p><p> CMP AL,0DH ;把AL和0DH相比較</p><
102、;p> JZ LL9 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL9</p><p> CMP AL,0EH ;把AL和0EH相比較</p><p> JZ LDIV
103、 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LDIV</p><p> SS1: MOV AL,0DH</p><p> OUT 30H,AL ;輸出A口數(shù)據(jù)AL</p><p> IN AL,34H</p><p> CMP
104、 AL,07H ;把AL和07H相比較</p><p> JZ LL4 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL4</p><p> CMP AL,0BH
105、 ;把AL和0BH相比較</p><p> JZ LL5 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL5</p><p> CMP AL,0DH ;把AL和0DH相比較</p><p>
106、 JZ LL6 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL6</p><p> CMP AL,0EH ;把AL和0EH相比較</p><p> JZ LMUL
107、 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LMUL</p><p> SS2: MOV AL,0BH</p><p> OUT 30H,AL ;輸出A口數(shù)據(jù)AL</p><p> IN AL,34H</p><p>
108、CMP AL,07H ;把AL和07H相比較</p><p> JZ LL1 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL1</p><p> CMP AL,0BH
109、 ;把AL和0BH相比較</p><p> JZ LL2 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL2</p><p> CMP AL,0DH ;把AL和0DH相比較</p>&l
110、t;p> JZ LL3 ; ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL3 </p><p> CMP AL,0EH ;把AL和0EH相比較</p>
111、<p> JZ LSUB ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LSUB</p><p> SS3: MOV AL,07H</p><p> OUT 30H,AL ;輸出A口數(shù)據(jù)AL</p&g
112、t;<p> IN AL,34H</p><p> CMP AL,07H ;把AL和07H相比較</p><p> JZ SCLC ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到SCLC</p>&l
113、t;p> CMP AL,0BH ;把AL和0BH相比較</p><p> JZ LL0 ;ZF=1,即結(jié)果為0,則轉(zhuǎn)到LL0</p><p> CMP AL,0DH
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡易計算器課程設(shè)計
- 簡易計算器課程設(shè)計
- 簡易計算器課程設(shè)計
- 簡易計算器的設(shè)計課程設(shè)計
- 簡易計算器課程設(shè)計 (3)
- 簡易計算器課程設(shè)計 (2)
- 簡易計算器課程設(shè)計報告
- java課程設(shè)計----簡易計算器
- vb課程設(shè)計簡易計算器
- 微機課程設(shè)計--簡易計算器
- 簡易計算器學(xué)生課程設(shè)計
- 微機原理課程設(shè)計--簡易計算器設(shè)計
- 高級語言課程設(shè)計--簡易計算器
- 微機原理簡易計算器課程設(shè)計
- 簡易計算器vb課程設(shè)計報告
- 數(shù)電課程設(shè)計--簡易計算器
- 課程設(shè)計---單片機簡易計算器設(shè)計
- 單片機課程設(shè)計--簡易計算器
- 單片機課程設(shè)計簡易計算器
- 單片機課程設(shè)計---簡易計算器的設(shè)計
評論
0/150
提交評論