簡單計算器8086匯編代碼_第1頁
簡單計算器8086匯編代碼_第2頁
簡單計算器8086匯編代碼_第3頁
簡單計算器8086匯編代碼_第4頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、【課題 5】模擬十進(jìn)制計算器(加,減)(一)設(shè)計要求1.通過小鍵盤輸入,做十進(jìn)制的加、減運(yùn)算,允許五位數(shù)以內(nèi)的不同數(shù)位的2 個數(shù)相加或相減,連加與/或連減。七段數(shù)碼管顯示器的高位作為符號位,其他5 位作為輸入數(shù)據(jù)和計算結(jié)果的顯示。2.數(shù)字用小鍵盤0 9;功能鍵為: A , B, C, D。C開始運(yùn)算(包括取消沒有完成的運(yùn)算),六位七段數(shù)碼管全部顯示0。A ,加法操作。B,減法操作。D,計算并顯示結(jié)果。3.運(yùn)算規(guī)則(按照一般計算器的功能要求):a.輸入第一個數(shù)據(jù),顯示器跟隨顯示。b.按或 ,顯示器內(nèi)容不變。c.再輸入第二個數(shù)據(jù),顯示器跟隨顯示。d.按,顯示器顯示計算結(jié)果,當(dāng)超出能顯示的最大值時,

2、顯示“F”(溢出)。e.按 C,清除顯示,重新開始運(yùn)算。(二)提示1.七段數(shù)碼管顯示和鍵盤可參考軟件實(shí)驗(yàn)9、 10, LED 顯示實(shí)驗(yàn),以及可參閱教材第9章有關(guān)章節(jié)。2.顯示是動態(tài)的、要不斷刷新,建議把鍵盤輸入與運(yùn)算作為主程序,動態(tài)顯示作為子程序,在主程序中調(diào)用顯示子程序。(三)要完成的工作1.設(shè)計出完整的匯編語言程序。2.上機(jī)調(diào)試,在實(shí)驗(yàn)系統(tǒng)中通過驗(yàn)收。3.寫出課程設(shè)計報告,內(nèi)容包括:設(shè)計思想、功能流程圖、結(jié)果討論和完整的源程序。; ( 1) 通過小鍵盤做十進(jìn)制的加、 減運(yùn)算, 允許不同數(shù)位的 5 個數(shù)相加或相減。 七段數(shù)碼管顯示器作輸入數(shù)據(jù)和結(jié)果數(shù)據(jù)的顯示。; ( 2) 數(shù)字用小鍵盤 0

3、9,A、 B、 C、 D 作功能鍵。;C開始運(yùn)算(包括撤銷運(yùn)算),顯示 0。;A 。;B 。;D。;E 退出,返回DOS。; ( 3) 運(yùn)算順序:; 輸入一原始數(shù)據(jù),顯示器跟隨顯示。; 按 + 或 - ,顯示器內(nèi)容不變。; 再輸入一數(shù)據(jù),顯示器跟隨顯示。; 按 = ,顯示器顯示結(jié)果數(shù)據(jù),當(dāng)超出能顯示的最大值時,顯示“FFFFF”(溢出)。; 按 C,重新開始運(yùn)算。; 按 E,結(jié)束退出。;*;8086 系列微機(jī)接口實(shí)驗(yàn)系統(tǒng)軟件實(shí)驗(yàn)項(xiàng)目1/15; 鍵盤掃描顯示實(shí)驗(yàn);*INIT MACRO NAMEmov NAME+0,0ffhmov NAME+1,0c0hmov NAME+2,0ffhmov NA

4、ME+3,0ffhmov NAME+4,0ffhmov NAME+5,0ffhENDMcodesegmentassume cs:codeOUTSEG equ 0ffdch;段控制口OUTBIT equ 0ffddh;位控制口 / 鍵掃口IN_KEYequ 0ffdeh;鍵盤讀入口LedBufdb10 dup(?);顯示緩沖Storedb10 dup(?);存放顯示第一組數(shù)據(jù)numdb10 dup(?)Store1db10 dup(?);用于存放第一組數(shù)據(jù)num1db10 dup(?);用于存放第二組數(shù)據(jù)flagdb0;作為標(biāo)記位,若為1 代表加為0 代表減tempdb0jinweidb0jie

5、weidb0in_flagdb 0Key_Buff db30dup(?);用于鍵盤輸入的存儲org 1000hStart:INIT StoreINIT numINIT LedBufmov si,-1;設(shè)置數(shù)組的下標(biāo)mov Store1+0,0mov Store1+1,0mov Store1+2,0mov Store1+3,0mov Store1+4,0mov num1+0,02/15mov num1+1,0mov num1+2,0mov num1+3,0mov num1+4,0MLoop:call Disp;顯示call GetKey;掃描鍵盤并讀取鍵值cmp al,20hje LLjmp L

6、L1LL: mov temp,0jmp MLoopLL1: push dxmov dl,tempmov temp,1cmp al,09hja transmitcmp Key_Buffsi,aljz inkey_flagjmp LL2inkey_flag:cmp temp,dlpop dxjz MLoopjmp LL2;!注意要加這一句transmit:jmp SPECIAL ;特殊字符特殊處理LL2: inc simov Key_Buffsi,al;將鍵盤輸入的鍵盤碼放到Key_Buff 中cmp si,5jae abcpush dxmov dl,Store1+1mov Store1+0,dl

7、mov dl,Store1+2mov Store1+1,dlmov dl,Store1+3mov Store1+2,dlmov dl,Store1+4mov Store1+3,dl3/15mov Store1+4,alpop dxjmp bcdabc:mov di,sisub di,5push dxmov dl,num1+1mov num1+0,dlmov dl,num1+2mov num1+1,dlmov dl,num1+3mov num1+2,dlmov dl,num1+4mov num1+3,dlmov num1+4,alpop dxjmp bcdbcd:and al,0fh;顯示鍵碼m

8、ov ah,0mov bx,offset LEDMAPadd bx,axmov al,bxcmp si,5jae next1mov Storesi+1,aljmp back1next1: mov di,sisub di,5mov numdi+1,aljmp start1back1: push dx;將 Store 里的數(shù)據(jù)放到Led 中,方便以后顯示mov dl,Store+1mov LedBuf+1,dlmov dl,Store+2mov LedBuf+2,dlmov dl,Store+3mov LedBuf+3,dlmov dl,Store+4mov LedBuf+4,dlmov dl,S

9、tore+5mov LedBuf+5,dl4/15pop dxjmp MLoopstart1:INIT LedBufcall Disp;jmp MLoopback2: push dxmov dl,num+1mov LedBuf+1,dlmov dl,num+2mov LedBuf+2,dlmov dl,num+3mov LedBuf+3,dlmov dl,num+4mov LedBuf+4,dlmov dl,num+5mov LedBuf+5,dlpop dxjmp MLoopback3: push dxmov dl,Store+0mov LedBuf+0,dlmov dl,Store+1mo

10、v LedBuf+1,dlmov dl,Store+2mov LedBuf+2,dlmov dl,Store+3mov LedBuf+3,dlmov dl,Store+4mov LedBuf+4,dlmov dl,Store+5mov LedBuf+5,dlpop dxjmp MLoopSPECIAL:cmp al,0ahjne decremov flag,1mov si,4jmp MLoopdecre: cmp al,0bhjneRestartmov flag,05/15movsi,4jmpMLoopRestart: cmp al,0chjneExitmovflag,0jmpStartExi

11、t: cmpal,0ehjne DisplaymovStore+0,0Ch;顯示 "P"movStore+1,0ffhjmp back1Display:cmp al,0dhje printjmp back3print: cmp flag,0je subbjmp addasubb:movcl,num1+0;比較兩數(shù)大小,如果用小數(shù)減大數(shù)則交換數(shù)據(jù)movbl,Store1+0cmpbl,cljb jiaohmovcl,num1+1movbl,Store1+1cmpbl,cljb jiaohmovcl,num1+2movbl,Store1+2cmpbl,cljb jiaohmov

12、cl,num1+3movbl,Store1+3cmpbl,cljb jiaohmovcl,num1+4movbl,Store1+4cmpbl,cljb jiaohjmpjianfa6/15jiaoh: push dx;交換兩個數(shù)組中的數(shù)值mov dh,num1+0mov dl,Store1+0mov num1+0,dlmov Store1+0,dhmov dh,num1+1mov dl,Store1+1mov num1+1,dlmov Store1+1,dhmov dh,num1+2mov dl,Store1+2mov num1+2,dlmov Store1+2,dhmov dh,num1+3

13、mov dl,Store1+3mov num1+3,dlmov Store1+3,dhmov dh,num1+4mov dl,Store1+4mov num1+4,dlmov Store1+4,dhmov Store0,0BFh;最高位顯示“ - ”pop dxjianfa: mov cl,num1+4;最低位相減movbl,Store1+4cmpbl,cljae H1movjiewei,1mov bh,0ahsubbh,claddbl,bhmovcl,bljmp F1H1:subbl,clmovcl,bljmp F1F1:moval,clandal,0fh;顯示鍵碼mov ah,0mov b

14、x,offset LEDMAP7/15add bx,axmoval,bxmovStore5,almov cl,num1+3;第二位相減movbl,Store1+3subbl,jieweicmp bl,0Fh;考慮 0 被借位變成 FjzN1jmp M1N1:mov bl,09hjmp M1M1:mov jiewei,0cmpbl,cljae H2movjiewei,1mov bh,0ahsubbh,claddbl,bhmovcl,bljmp F2H2:subbl,clmovcl,bljmp F2F2:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LED

15、MAPadd bx,axmoval,bxmovStore4,almov cl,num1+2;第三位相減movbl,Store1+2subbl,jieweicmp bl,0Fh;考慮 0 被借位變成 FjzN2jmp M2N2:mov bl,09h8/15jmp M2M2:mov jiewei,0cmp bl,cljae H3mov jiewei,1mov bh,0ahsub bh,cladd bl,bhmov cl,bljmp F3H3:subbl,clmovcl,bljmp F3F3:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd

16、bx,axmoval,bxmovStore3,almov cl,num1+1;第四位相減movbl,Store1+1subbl,jieweicmp bl,0Fh;考慮 0 被借位變成 FjzN3jmp M3N3:mov bl,09hjmp M3M3:mov jiewei,0cmpbl,cljae H4movjiewei,1mov bh,0ahsubbh,claddbl,bhmovcl,bljmp F4H4:9/15subbl,clmovcl,bljmp F4F4:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd bx,axmoval,b

17、xmovStore2,almov cl,num1+0;最高位相減movbl,Store1+0subbl,jieweimovjiewei,0cmpbl,cljae H5movjiewei,1subcl,bljmp F5H5:subbl,clmovcl,bljmp F5F5:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd bx,axmoval,bxmovStore1,aljmp back3ADDa:mov cl,num1+4 ;最低位執(zhí)行加法mov bl,Store1+4add cl,blcmp cl,0ah10/15jbHsubcl,0

18、ahincjinweiH:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd bx,axmoval,bxmovStore5,almov cl,num1+3 ;第二位加法movbl,Store1+3addcl,bladdcl,jinweimovjinwei,0cmp cl,0ahjbHAsubcl,0ahincjinweiHA:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd bx,axmoval,bxmovStore4,almov cl,num1+2 ;第三位執(zhí)行加法movbl,S

19、tore1+2addcl,bladdcl,jinweimovjinwei,0cmp cl,0ahjbHBsubcl,0ahincjinweiHB:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAP11/15add bx,axmoval,bxmovStore3,almov cl,num1+1 ;執(zhí)行加法movbl,Store1+1addcl,bladdcl,jinweimovjinwei,0cmp cl,0ahjbHCsubcl,0ahincjinweiHC:moval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset

20、LEDMAPadd bx,axmoval,bxmovStore2,almov cl,num1+0 ;最高位執(zhí)行加法movbl,Store1+0addcl,bladdcl,jinweimovjinwei,0cmp cl,0ahjaecontinuemoval,clandal,0fh;顯示鍵碼mov ah,0mov bx,offset LEDMAPadd bx,axmoval,bxmovStore1,aljmp back3continue:mov Store0,8Ehmov Store1,8Ehmov Store2,8Ehmov Store3,8Eh12/15mov Store4,8Ehmov Store5,8Ehjmp back3; 系統(tǒng)原有的函數(shù)直接調(diào)用Disp:mov bx,offset LEDBufmov cl,6;共 6 個八段管mov ah,00100000b;從左邊開始顯示DLoop:mov dx,OUTBITmov al,0out dx,al;關(guān)所有八段管mov al,bxmov dx,OUTSEGout dx,almov dx,OUTBITmov al,ahoutdx,al;顯示一位八段管push axmov ah,1call Delaypop axshrah,1inc bxdeccljnz DLoopmov dx,OUTBITmov

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論