简单计算器8086汇编代码_第1页
简单计算器8086汇编代码_第2页
简单计算器8086汇编代码_第3页
简单计算器8086汇编代码_第4页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【课题 5】模拟十进制计算器(加,减)(一)设计要求1.通过小键盘输入,做十进制的加、减运算,允许五位数以内的不同数位的2 个数相加或相减,连加与/或连减。七段数码管显示器的高位作为符号位,其他5 位作为输入数据和计算结果的显示。2.数字用小键盘0 9;功能键为: A , B, C, D。C开始运算(包括取消没有完成的运算),六位七段数码管全部显示0。A ,加法操作。B,减法操作。D,计算并显示结果。3.运算规则(按照一般计算器的功能要求):a.输入第一个数据,显示器跟随显示。b.按或 ,显示器内容不变。c.再输入第二个数据,显示器跟随显示。d.按,显示器显示计算结果,当超出能显示的最大值时,

2、显示“F”(溢出)。e.按 C,清除显示,重新开始运算。(二)提示1.七段数码管显示和键盘可参考软件实验9、 10, LED 显示实验,以及可参阅教材第9章有关章节。2.显示是动态的、要不断刷新,建议把键盘输入与运算作为主程序,动态显示作为子程序,在主程序中调用显示子程序。(三)要完成的工作1.设计出完整的汇编语言程序。2.上机调试,在实验系统中通过验收。3.写出课程设计报告,内容包括:设计思想、功能流程图、结果讨论和完整的源程序。; ( 1) 通过小键盘做十进制的加、 减运算, 允许不同数位的 5 个数相加或相减。 七段数码管显示器作输入数据和结果数据的显示。; ( 2) 数字用小键盘 0

3、9,A、 B、 C、 D 作功能键。;C开始运算(包括撤销运算),显示 0。;A 。;B 。;D。;E 退出,返回DOS。; ( 3) 运算顺序:; 输入一原始数据,显示器跟随显示。; 按 + 或 - ,显示器内容不变。; 再输入一数据,显示器跟随显示。; 按 = ,显示器显示结果数据,当超出能显示的最大值时,显示“FFFFF”(溢出)。; 按 C,重新开始运算。; 按 E,结束退出。;*;8086 系列微机接口实验系统软件实验项目1/15; 键盘扫描显示实验;*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(?);存放显示第一组数据numdb10 dup(?)Store1db10 dup(?);用于存放第一组数据num1db10 dup(?);用于存放第二组数据flagdb0;作为标记位,若为1 代表加为0 代表减tempdb0jinweidb0jie

5、weidb0in_flagdb 0Key_Buff db30dup(?);用于键盘输入的存储org 1000hStart:INIT StoreINIT numINIT LedBufmov si,-1;设置数组的下标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 里的数据放到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;比较两数大小,如果用小数减大数则交换数据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;交换两个数组中的数值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 ;最低位执行加法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 ;第三位执行加法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 ;执行加法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 ;最高位执行加法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; 系统原有的函数直接调用Disp:mov bx,offset LEDBufmov cl,6;共 6 个八段管mov ah,00100000b;从左边开始显示DLoop:mov dx,OUTBITmov al,0out dx,al;关所有八段管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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论