




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1.設(shè)計任務(wù):簡易加法計算器設(shè)計任務(wù):用8086設(shè)計一個能實現(xiàn)99以內(nèi)的整數(shù)加法運算的簡易計算器,用三位LED數(shù)碼顯示。鍵盤包括0-9及“+”和“=”12個按鍵(鍵盤編碼)。(可根據(jù)需要添加復(fù)位鍵,減法和乘法運算)采用8086CPU作為主控制器,8255實現(xiàn)按鍵掃描,LED數(shù)碼管顯示。2.設(shè)計要求采用8086CPU作為主控制器,8255實現(xiàn)按鍵掃描,LED數(shù)碼管顯示。3.設(shè)計內(nèi)容3.1系統(tǒng)方案的設(shè)計與選擇:該課程設(shè)計的任務(wù)是做一個簡易計算器,可以對兩個二位數(shù)進行加法和減法運算,例如11+23=34。我們平常的學(xué)習(xí)中做過給出兩個數(shù)進行加減法運算的題目,但是這個題目難點在于這兩個要做運算的數(shù)未知,
2、是由自己調(diào)用中斷輸入到屏幕上并要用程序存儲起來的數(shù),然后才能對這兩個二位數(shù)進行運算,而且做的是加法運算還是減法運算也未知,所以我們還要判斷這個運算為加法運算還是減法運算。另外運算過程中的進位借位,選擇什么方式進行輸出,如何實現(xiàn)清屏等也是要解決的問題。設(shè)計的思路是:首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對輸入鍵的數(shù)值,通過調(diào)用子程序完成數(shù)據(jù)的儲存或者是加減的運算。運算完成后將運算的結(jié)果儲存并顯示到LED顯示器上。3.2模塊功能介紹:可編程并行通信接口芯片8255A1. 并行輸入/輸出端口A,B,C 8255A內(nèi)部包括三個8位的輸入輸
3、出端口,分別是端口A、端口B、端口C,相應(yīng)信號線是PA7PA0、PB7PB0、PC7PC0。端口都是8位,都可以作為輸入或輸出。通常將端口A和端口B定義為輸入/輸出的數(shù)據(jù)端口,而端口C則既可以作數(shù)據(jù)端口,又可以作為端口A和端口B的狀態(tài)和控制信息的傳送端口。2.A組和B組控制部件端口A和端口C的高4位(PC7PC4)構(gòu)成A組;由A組控制部件實現(xiàn)控制功能。 端口B和端口C的低4位(PC3PC0)構(gòu)成B組;由B組控制部件實現(xiàn)控制功能。 A組和B組利用各自的控制單元來接收讀寫控制部件的命令和CPU通過數(shù)據(jù)總線(D0D7)送來的控制字,并根據(jù)他們來定義各個端口的操作方式。3. 數(shù)據(jù)總線緩沖存儲器 三態(tài)雙
4、向8位緩沖器,是8255A與8086CPU之間的數(shù)據(jù)接口。與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)信息都是通過該緩沖器進行傳送。4. 讀/寫控制部件 8255A完成讀/寫控制功能的部件。能接收CPU的控制命令,并根據(jù)控制命令向各個功能部件發(fā)出操作指令。CS 片選信號:由CPU輸入,有效時表示該8255A被選中。 RD, WR 讀、寫控制信號:由CPU輸入。RD有效表示CPU讀8255A,WR有效表示CPU寫8255A。RESET 復(fù)位信號:由CPU輸入。RESET信號有效,清除8255A中所有控制字寄存器內(nèi)容,并將各個端口置成輸入方式。5.鍵盤輸入模塊由于運算過程中出現(xiàn)的進借位問題,會導(dǎo)致輸出的結(jié)
5、果為一位數(shù),二位數(shù),三位數(shù)或者是負數(shù),所以在選擇輸出的方式時若是選9號功能調(diào)用會很不方便,因為9號功能調(diào)用要求有一個輸出字符的緩沖區(qū),由于輸出的結(jié)果形式太多,緩沖區(qū)太難確定,而且若結(jié)果為負數(shù),負號也得事先進行設(shè)置,所以單字符輸出是一個合理的選擇。 3.3程序流程圖:說明:該程序流程圖簡要地表現(xiàn)出了所要實現(xiàn)的功能以及一些功能的大概算法,同時也是我編寫的程序的一個總體的框架。通過流程圖,可以看出程序開始運行時,首先輸出提示語句,再輸入字符,并判斷輸入的字符是否為Q或q,若是,則退出,不是則繼續(xù)輸入;判斷輸入的字符是否為C或c,若是,則清屏重新輸入,否則繼續(xù)輸入;判斷輸入的是不是回車鍵,若是就回車換
6、行輸入,不是則繼續(xù)輸入;判斷輸入的是否為09,+,-,=這些字符,若不是會報錯,是則將其存儲到定義的數(shù)據(jù)區(qū)BUFF里面,再判斷如果輸入的不是=功能鍵,則繼續(xù)輸入,若是,則判斷是做加法運算還是減法運算,最后輸出結(jié)果,并重新輸入,繼續(xù)上面的步驟。開始輸入一個字符Q/q?09+-=?存儲到BUF=?BUF+1出錯BUF+2=+?輸出結(jié)果(考慮輸出為一,二,三位數(shù)及負數(shù)的情況)清屏NYNYNYNNSI提取兩加數(shù)的十位數(shù)并相加(考慮進位)SI+1提取兩加數(shù)的個位數(shù)相加(考慮進位) 輸出提示語句SI提取減數(shù)和被減數(shù)數(shù)的十位數(shù)相減(考慮借位)SI+1提取減數(shù)和被減數(shù)數(shù)的個位數(shù)相減(考慮借位)Y結(jié)束C/c?Y
7、0DH?換行NYN4.功能實現(xiàn)電路圖:程序源代碼:DATA SEGMENT BUFF DB 6 DUP(?) JIEGUO DB 3 DUP(?) COUNT EQU 6 TISHI DB 'The addition and subtraction operations of two two-digit',0DH,0AH,'Input "=",then output the result:',0DH,0AH,'$' ERROR1 DB 0DH,0AH,'Input error!',0DH,0AH,'Pl
8、ease input again!',0DH,0AH,'$' HUICHE DB 0DH,0AH,'$' TUICHU DB 'Please press any key to continue!','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,TISHI MOV AH,9 INT 21H LEA SI,JIEGUO LEA BX,BUFF START1: MOV AH,1 INT 21H CMP A
9、L,'Q' ;輸入為Q或q時退出程序 JZ EXIT CMP AL, 'q' JZ EXIT CMP AL,'C' ;輸入為C或c時清屏 JZ QINGPING CMP AL,'c' JZ QINGPING CMP AL,0DH ;輸入回車鍵換行重新輸入 JZ HUANHANG CMP AL,'+' ;輸入的字符不為+,-,=,0到9的字符時,則報錯,并重新?lián)Q行輸入,是則存儲 JNZ LOOP1 JMP CUNCHU HUANHANG: LEA DX, HUICHE ;實現(xiàn)換行的功能 MOV AH,9 INT 21
10、H JMP START1 ERROR: LEA DX,ERROR1 MOV AH,9 INT 21H JMP START1 CUNCHU: ;對輸入的字符進行存儲 MOV BX,AL INC BX JMP START1 LOOP1: CMP AL,'-' JNZ LOOP3 JMP CUNCHU LOOP2: CMP AL,'0' JB ERROR CMP AL,'9' JA ERROR SUB AL,30H JMP CUNCHU LOOP3: CMP AL,'=' JZ LOOP4 JMP LOOP2 LOOP4: ;判斷為加法
11、還是減法運算 XOR BX,BX LEA BX,BUFF MOV CX,COUNT PANDUAN: CMP BYTE PTRBX+2, '+' JZ JIAFA JMP JIANFA JIAFA: LEA BX,BUFF MOV DL,BYTE PTRBX+1 ;提取兩個加數(shù)個位的數(shù)據(jù) MOV AL,BYTE PTRBX+4 ADD AL,DL CMP AL,10 JAE TZ1 ADD AL,30H MOV SI+1, AL MOV DL, BYTE PTRBX ;提取兩個加數(shù)十位的數(shù)據(jù) MOV AL,BYTE PTRBX+3 JMP BACK1 BACK1: ADC AL
12、,DL CMP AL,10 JAE TZ10 ADD AL,30H MOV SI, AL JC DATA3 JMP DATA2 BACK10: MOV SI, AL JC DATA3 JMP DATA2 TZ10: SUB AL,10 ;十位相加有進位的處理 ADD AL,30H STC JMP BACK10 TZ1: SUB AL,10 ;個位相加有進位的處理 ADD AL,30H MOV SI+1 ,AL MOV DL, BYTE PTRBX MOV AL,BYTE PTRBX+3 INC AL JMP BACK1 JIANFA: LEA BX,BUFF MOV DL,BYTE PTRBX
13、 ;提取被減數(shù)和減數(shù)十位的數(shù)據(jù) MOV AL,BYTE PTRBX+3 CMP AL,DL JZ COMP1 JA FU JMP ZHENG ZHENG: LEA SI,JIEGUO ;結(jié)果為正數(shù)的運算 LEA BX,BUFF MOV DL,BYTE PTRBX+1 ;提取被減數(shù)和減數(shù)個位的數(shù)據(jù) MOV AL,BYTE PTRBX+4 CMP DL,AL JB JIEWEI1 SUB DL,AL MOV AL,DL ADD AL,30H MOV SI+1, AL MOV DL,BYTE PTRBX ;提取被減數(shù)和減數(shù)十位的數(shù)據(jù) MOV AL,BYTE PTRBX+3 JMP SUB1 SUB1
14、: SUB DL,AL MOV AL,DL ADD AL,30H MOV SI, AL CMP AL,0 JZ DATA1 JMP DATA2 JIEWEI1: ;借位處理 ADD DL,10 SUB DL,AL MOV AL,DL ADD AL,30H MOV SI+1, AL MOV DL,BYTE PTRBX ;提取被減數(shù)和減數(shù)十位的數(shù)據(jù) MOV AL,BYTE PTRBX+3 SUB DL,1 JMP SUB1 COMP1: LEA SI,JIEGUO LEA BX,BUFF MOV DL,BYTE PTRBX+1 MOV AL,BYTE PTRBX+4 CMP AL,DL JZ ZE
15、RO JA FU1 JB ZHENG1 ZHENG1: SUB DL,AL MOV AL,DL ADD AL,30H MOV SI+1, AL JMP DATA1 FU1: SUB AL,DL ADD AL,30H MOV SI+1, AL JMP FUSHU1 FU: LEA SI,JIEGUO ;結(jié)果為負數(shù)的運算 LEA BX,BUFF MOV DL,BYTE PTRBX+1 MOV AL,BYTE PTRBX+4 CMP AL,DL JB FU_1 SUB AL,DL ADD AL,30H MOV SI+1, AL MOV DL,BYTE PTRBX MOV AL,BYTE PTRBX+
16、3 SUB2: SUB AL,DL ADD AL,30H MOV SI, AL CMP AL,30H JZ FUSHU1 JMP FUSHU2 FU_1: ADD AL,10 ;借位處理 SUB AL,DL ADD AL,30H MOV SI+1, AL MOV DL,BYTE PTRBX ;提取被減數(shù)和減數(shù)十位的數(shù)據(jù) MOV AL,BYTE PTRBX+3 SUB AL,1 JMP SUB2 AA PROC NEAR ;輸出兩位數(shù)的子程序 LEA SI,JIEGUO MOV DL,SI MOV AH,2 INT 21H MOV DL,SI+1 MOV AH,2 INT 21H JMP STA
17、RT1 RET AA ENDP ZERO: MOV DL, 30H ;結(jié)果為0的輸出 MOV AH,2 INT 21H JMP START1 DATA1: LEA SI,JIEGUO ;一位數(shù)的輸出(如13-12=1) MOV DL,SI+1 MOV AH,2 INT 21H JMP START1 DATA2: CALL AA ;兩位數(shù)的輸出(如32-14=18或18+14=32) DATA3: MOV DL,31H ;三位數(shù)的輸出 (如89+77=166) MOV AH,2 INT 21H CALL AA FUSHU1: MOV DL,'-' ;結(jié)果為一位數(shù)的負數(shù)的輸出 (如13-22=-9) MOV AH,2 INT 21H LEA SI,JIEGUO MOV DL,SI+1 MOV AH,2 INT 21H JMP START1 FUSHU2: MOV DL,'
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京債權(quán)債務(wù)合同范本
- 公司預(yù)繳水費合同范本
- 人才培養(yǎng)合同范例
- 公司銷售合同范本6
- 《種樹郭橐駝傳》教案
- 買賣合同范本電子合同
- 協(xié)議酒店招標合同范本
- 出國焊工勞務(wù)合同范本
- 買車定金有效合同范本
- 《動物聚會》教學(xué)反思
- 延遲合同范本
- 細胞生物學(xué)(第五版)-第10章 核糖體
- 中醫(yī)醫(yī)療技術(shù)手冊2013普及版
- 2022嗜酸粒細胞增多相關(guān)性肺疾病診療中國專家共識
- 《研學(xué)旅行課程設(shè)計》課件-初識研學(xué)旅行發(fā)展歷程
- 傳染病手術(shù)的處理流程
- 《中醫(yī)常用護理技術(shù)基礎(chǔ)》課件-八綱辨證施護
- 心理健康與職業(yè)生涯(中等職業(yè))全套教學(xué)課件
- 市政園林安全生產(chǎn)培訓(xùn)課件
- 基于BIM的軸流通風(fēng)機施工工藝優(yōu)化
- 2024年大學(xué)生自我意識教學(xué)案
評論
0/150
提交評論