版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)硬件技術(shù)實(shí)踐報(bào)告</p><p> 題目 簡(jiǎn)易計(jì)算器的設(shè)計(jì) </p><p> 姓名 </p><p> 專業(yè) 自動(dòng)化(電站方向) </p><p>
2、 班級(jí) </p><p> 學(xué)號(hào) </p><p><b> 一、設(shè)計(jì)題目及目的</b></p><p> 本次課程設(shè)計(jì)的實(shí)驗(yàn)?zāi)康氖?通過(guò)該實(shí)驗(yàn)掌握較復(fù)雜程序的設(shè)計(jì);能獨(dú)立完成用程序?qū)?086、8255A控制鍵盤和LED顯示的控制,
3、完成計(jì)算器加減法的應(yīng)用;獨(dú)立編寫程序,明白和掌握程序的原理和實(shí)現(xiàn)方式;學(xué)習(xí)和掌握計(jì)算機(jī)中常用接口電路的應(yīng)用和設(shè)計(jì)技術(shù),充分認(rèn)識(shí)理論知識(shí)對(duì)應(yīng)用技術(shù)的指導(dǎo)性作用;進(jìn)一步加強(qiáng)理論知識(shí)與應(yīng)用相結(jié)合的實(shí)踐和鍛煉,為以后的設(shè)計(jì)提供經(jīng)驗(yàn)。這次設(shè)計(jì)實(shí)踐,加深了我對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解,使我的設(shè)計(jì)水平和對(duì)所學(xué)的知識(shí)的應(yīng)用能力以及分析問(wèn)題解決問(wèn)題的能力得到全面提高。我們的具體任務(wù)是用8086設(shè)計(jì)一個(gè)能實(shí)現(xiàn)0~9整數(shù)加減乘除法的運(yùn)算器,并用2位
4、LED數(shù)碼顯示,鍵盤包括0-9,+ ,-,×,÷,=,NO/C共16個(gè)按鍵。</p><p> 二、小組成員分工及成果</p><p> 在實(shí)驗(yàn)課程要求下,我們選擇基于8086CPU的模擬計(jì)算器設(shè)計(jì)。要完成設(shè)計(jì)首先需要構(gòu)建簡(jiǎn)單的微型計(jì)算機(jī)應(yīng)用系統(tǒng),其次是確定組成各部件的芯片,然后畫原理圖,根據(jù)相應(yīng)的原理以及實(shí)現(xiàn)過(guò)程,編寫出相應(yīng)的匯編代碼。再根據(jù)原理圖連接硬件電路,電
5、路連接完成后進(jìn)行調(diào)試。設(shè)計(jì)過(guò)程中我們用到了8086CPU、可編程并行輸入/輸出芯片8255A、74HC138、74HC373、矩陣式鍵盤、LED數(shù)碼管。我們的模擬計(jì)算器能實(shí)現(xiàn)2位十進(jìn)制數(shù)以內(nèi)的加減乘除法運(yùn)算。</p><p> 首先,本組的三個(gè)成員一起討論研究簡(jiǎn)易計(jì)算器設(shè)計(jì)的主要方案。</p><p> 粗略設(shè)計(jì)程序流程圖以確定簡(jiǎn)易計(jì)算器設(shè)計(jì)的大概框架。</p><
6、p> 明確目的后各自查詢資料了解設(shè)計(jì)原理、逐步清晰設(shè)計(jì)思路。</p><p> 以下為大體分工:主要負(fù)責(zé):1、設(shè)計(jì)主要程序,編寫;</p><p> 2、查找資料驗(yàn)證修改;</p><p> 主要負(fù)責(zé):1、選擇需要用的各個(gè)芯片;</p><p> 2、設(shè)計(jì)硬件原理圖;</p><p> 主要負(fù)責(zé):1、
7、各個(gè)芯片功能的資料查找;</p><p><b> 2、設(shè)計(jì)程序流程圖</b></p><p><b> 三、設(shè)計(jì)方案思路</b></p><p> 用8086設(shè)計(jì)一個(gè)能實(shí)現(xiàn)0~9整數(shù)加減乘除法的運(yùn)算器,并用2位LED數(shù)碼顯示,鍵盤包括0-9,+ ,-,×,÷,=,NO/C共16個(gè)按鍵。</
8、p><p> 1、通過(guò)小鍵盤做加減乘除運(yùn)算。</p><p> 2、數(shù)碼管顯示器作輸入數(shù)據(jù)和結(jié)果數(shù)據(jù)的顯示。</p><p> 3、數(shù)字用小鍵盤0~9,“C、+、-、×、÷、= ”做功能鍵</p><p> 4、運(yùn)算順序:a.首先輸入一個(gè)原始數(shù)據(jù)(在0~9之間,否則無(wú)反應(yīng))顯示器跟隨顯示</p><
9、p> b.按“+、-、×、÷”顯示器內(nèi)容不變</p><p> c.再次輸入一個(gè)數(shù)據(jù)(在0~9之間,否則無(wú)反應(yīng))顯示器跟隨顯示</p><p> d.按“=”顯示器顯示結(jié)果數(shù)據(jù)</p><p> e.按C顯示“00”數(shù)據(jù)清0,并重新開(kāi)始運(yùn)算</p><p> f.若輸入一個(gè)數(shù)據(jù)后直接按“=”則數(shù)據(jù)不變<
10、;/p><p><b> 設(shè)計(jì)思路:</b></p><p> 將整個(gè)程序劃分為鍵盤掃描部分,顯示部分,運(yùn)算程序部分。首先利用程序不斷掃描鍵盤是不是有輸入,如果沒(méi)有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對(duì)輸入鍵的數(shù)值,通過(guò)調(diào)用子程序?qū)崿F(xiàn)運(yùn)算。運(yùn)算完成后將運(yùn)算的結(jié)果儲(chǔ)存并顯示到LED顯示器上。</p><p> 軟件流程大致如
11、下:開(kāi)始,然后是系統(tǒng)的初始化,進(jìn)行鍵盤掃描,對(duì)掃描的鍵值進(jìn)行判斷(分為數(shù)字鍵和功能鍵),若為數(shù)字鍵,則執(zhí)行數(shù)字鍵處理程序,即顯示數(shù)字并將數(shù)值存儲(chǔ);若為功能鍵,則先判斷是否為清屏,如是清屏,則執(zhí)行清屏子程序,如是加減乘除運(yùn)算鍵則調(diào)用相應(yīng)程序運(yùn)算,如是等號(hào)鍵,則先判斷上個(gè)符號(hào)位,調(diào)用相對(duì)應(yīng)的運(yùn)算子程序進(jìn)行運(yùn)算,如此就可以得到需要的結(jié)果了。 </p><p> 四、硬件原理圖(包括芯片的選型介紹
12、)</p><p> 硬件電路圖:(見(jiàn)圖1)</p><p><b> 圖1 原理圖</b></p><p><b> 1、鍵盤輸入模塊</b></p><p> 鍵盤是常用信息輸入元件,其實(shí)鍵盤也是由一個(gè)個(gè)按鈕組成,如果是獨(dú)立按鈕的話必須要對(duì)應(yīng)一個(gè)I/O口對(duì)它進(jìn)行檢測(cè),而鍵盤往往只需要鍵
13、盤按鈕數(shù)一半的I/O口對(duì)它進(jìn)行檢測(cè),也許對(duì)一個(gè)比較簡(jiǎn)單的系統(tǒng)I/O口數(shù)一般不是問(wèn)題,但對(duì)于一個(gè)大型、復(fù)雜的系統(tǒng)來(lái)說(shuō)I/O資源就顯得非常珍貴了,盡量減少I/O使用是非常利于降低成本,另外一方面鍵盤比用獨(dú)立按鍵要美觀,同時(shí)硬件上的節(jié)省必然導(dǎo)致軟件上編程的復(fù)雜。我們?cè)O(shè)計(jì)時(shí)使用的是4*4式鍵盤,如圖2所示。</p><p><b> 圖2 鍵盤</b></p><p>
14、 圖中有4行4列,4根行線與PC口相連,4根列線與PA口相連。按鍵設(shè)置在行、列交點(diǎn)處(數(shù)字或字符為其鍵號(hào)),行、列線分別連接到按鍵開(kāi)關(guān)的兩端。鍵盤中有無(wú)按鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來(lái)判斷。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有按鍵按下,總會(huì)有一根列線電平被拉至低電平,從而使列線輸入不全為1。</p><p> 2、可編程并行通信接口芯片8255A</p>
15、;<p><b> 圖3 8255A</b></p><p> ?。?)并行輸入/輸出端口A,B,C</p><p> 8255A內(nèi)部包括三個(gè)8位的輸入輸出端口,分別是端口A、端口B、端口C,相應(yīng)信號(hào)線是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作為輸入或輸出。通常將端口A和端口B定義為輸入/輸出的數(shù)據(jù)端口,而端口C則既可
16、以作數(shù)據(jù)端口,又可以作為端口A和端口B的狀態(tài)和控制信息的傳送端口。</p><p> (2)A組和B組控制部件</p><p> 端口A和端口C的高4位(PC7~PC4)構(gòu)成A組;由A組控制部件實(shí)現(xiàn)控制功能。端口B和端口C的低4位(PC3~PC0)構(gòu)成B組;由B組控制部件實(shí)現(xiàn)控制功能。 A組和B組利用各自的控制單元來(lái)接收讀寫控制部件的命令和CPU通過(guò)數(shù)據(jù)總線(D0~D7)送來(lái)的控制字,
17、并根據(jù)他們來(lái)定義各個(gè)端口的操作方式。</p><p> ?。?)數(shù)據(jù)總線緩沖存儲(chǔ)器</p><p> 三態(tài)雙向8位緩沖器,是8255A與8086CPU之間的數(shù)據(jù)接口。與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)信息都是通過(guò)該緩沖器進(jìn)行傳送。</p><p> (4) 讀/寫控制部件</p><p> 8255A是能完成讀/寫控制功能的部件。能接
18、收CPU的控制命令,并根據(jù)控制命令向各個(gè)功能部件發(fā)出操作指令。</p><p> CS 片選信號(hào):由CPU輸入,有效時(shí)表示該8255A被選中。 </p><p> RD, WR 讀、寫控制信號(hào):由CPU輸入。RD有效表示CPU讀8255A,WR有效表示CPU寫8255A</p><p> RESET 復(fù)位信號(hào):由CPU輸入。RESET信號(hào)有效,清除8255A中
19、所有控制字寄存器內(nèi)容,并將各個(gè)端口置成輸入方式。</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ù)每一位獨(dú)立顯示,每次從最高位顯示到最低位,在掃描鍵盤的時(shí)候不斷調(diào)用顯示子程序,形成了從高位到低位的不斷循環(huán)顯示,由于循環(huán)速度快,看起來(lái)就好像一起顯示的。</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為低電平時(shí),A0-A7為正常邏輯狀態(tài),可用來(lái)驅(qū)動(dòng)負(fù)載或總線,當(dāng)OE為高電平時(shí),A0-A7成高阻態(tài),不驅(qū)動(dòng)總線。</p><p> 當(dāng)鎖存允許端LE為高電平時(shí),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位二進(jìn)制加權(quán)地址
23、輸入(A0, A1和A2),并當(dāng)使能時(shí),提供8個(gè)互斥的低有效輸出(Y0至Y7)。74HC138特有3個(gè)使能輸入端:兩個(gè)低有效(E1和E2)和一個(gè)高有效(E3)。除非E1和E2置低且E3置高,否則74HC138將保持所有輸出為高,74HC138為反相輸出,它按照三位二進(jìn)制輸入碼和賦能輸入條件,從8 個(gè)輸出端中譯出一個(gè) 低電平輸出。兩個(gè)低電平有效的賦能輸入端和一個(gè)高電平有效的賦能輸入端減少了擴(kuò)展所需要的外接門或倒相器。</p>
24、<p><b> 6、8086CPU</b></p><p><b> 圖9</b></p><p> 8086CPU的40條引腳信號(hào)可按功能分可分為四類,它們是:地址總線,數(shù)據(jù)總線,控制總線,其它(時(shí)鐘與電源)。 最小模式下一些引腳功能(MN/MX接+5V):</p><p> AD15~AD0,地址
25、/數(shù)據(jù)總線 </p><p> A19/S6~A16/S3,地址/狀態(tài)總線 </p><p><b> RD,讀信號(hào) </b></p><p><b> WR,寫信號(hào) </b></p><p> M/IO,存儲(chǔ)器/輸入輸出控制信號(hào)</p><p> ALE,地址鎖存
26、允許信號(hào)</p><p> READY(Ready),準(zhǔn)備就緒信號(hào)</p><p> INTR,可屏蔽中斷請(qǐng)求信號(hào)</p><p> INTA,中斷響應(yīng)信號(hào) </p><p> NMI,非屏蔽中斷請(qǐng)求信號(hào)</p><p> RESET,系統(tǒng)復(fù)位信號(hào) </p><p> DEN,數(shù)據(jù)允
27、許信號(hào) </p><p> DT/R,數(shù)據(jù)發(fā)送/接收控制信號(hào)</p><p> HOLD,總線保持請(qǐng)求信號(hào)輸入 </p><p> HLDA,總線保持響應(yīng)信號(hào) </p><p> TEST,測(cè)試信號(hào) </p><p> CLK,時(shí)鐘輸入信號(hào) </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計(jì)數(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,表示第一個(gè)數(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,表示第一個(gè)數(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,表示第一個(gè)數(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,表示第一個(gè)數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器的設(shè)計(jì)課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì) (3)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì) (2)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)----簡(jiǎn)易計(jì)算器
- vb課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 微機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 簡(jiǎn)易計(jì)算器學(xué)生課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 高級(jí)語(yǔ)言課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 微機(jī)原理簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器vb課程設(shè)計(jì)報(bào)告
- 數(shù)電課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 課程設(shè)計(jì)---單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易計(jì)算器的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論