十进制数加减计算器地设计

上传人:夏** 文档编号:511684217 上传时间:2023-07-14 格式:DOC 页数:13 大小:170.50KB
返回 下载 相关 举报
十进制数加减计算器地设计_第1页
第1页 / 共13页
十进制数加减计算器地设计_第2页
第2页 / 共13页
十进制数加减计算器地设计_第3页
第3页 / 共13页
十进制数加减计算器地设计_第4页
第4页 / 共13页
十进制数加减计算器地设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《十进制数加减计算器地设计》由会员分享,可在线阅读,更多相关《十进制数加减计算器地设计(13页珍藏版)》请在金锄头文库上搜索。

1、十进制数加减计算器的设计1问题描述用汇编语言设计一个十进制数加减计算器,能够实现两个二位十进制数的加减运算,并具 有友好的界面。2设计说明该程序数据流程图:3详细的算法描述定义两个数据段,通过键盘输入,存储于AX, BX中,选择运算符号“ +或-”,自动运算AXBX中的数据,然后将结果转化为十进制输出(详细解释见源程序)4源程序与执行结果4.1源程序:CURS MACRO A,BMOV AH,2 ;置光标位置MOV BH,0 ;页号为0MOV DH,A ;设置光标的坐标为(A.B)MOV DL,BINT 10H ;BIOS 调用ENDMDISPMSG MACRO MESSAGELEA DX,M

2、ESSAGE传递MESSAG的偏移地址MOV AH,9 ;显示字符串INT 21H ;DOS 调用ENDMCLEAR MACRO COLO清屏MOV AH,6 ;屏幕初始化MOV AL,0 ;页号MOV CH,0 ;设置左上角的坐标为(0,0)MOV CL,0MOV DL,100 ;设置右上角的坐标为(100,100)MOV DH,100MOV BH,COLOR卷入行属性INT 10H ;BIOS 调用ENDM.MODEL SMALL.STACK.DATA ;数据段定义MSGO DB * * * * * * * * * * * * * * * * * * * *,ODH,OAH ;,0dh,0

3、ah,0dh,0ahDB * *,0DH,0AH;db * *,0dh,0ah;db * *,0dh,0ahDB *COUNTER*,0DH,0AH ;,0dh,0ah,0dh,0ahDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DH,0AHDB * DATA1:DB *,0DH,0AH ;,0dh,0ah,0dh,0ah,0dhDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DHDB * DATA2:DB *,0DH,0AH ;,0dh,0ah,0dh,0ah,0dhDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DH

4、DB * RESULT:DB *,0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dhDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DH,0AHDB * *,0DH,0AHdb * * * * * * * * * * * * * * * * * * * * $MSG1 DB choose +,-,$MSG2 DB you choose wrong,$,0AH,0DHMSG3 DB Press ESC to Exit!,0DH,0AH,$MSG4 DB Press any key to c

5、ontinue!,0DH,0AH,$MSG5 DB -,$MSG6 DB .,$MSG7 DB error in put!,$MSG8 DB data2 is wron g!,$DATA1 DW ?DATA2 DW ?.CODE ;代码段从这里开始DEC_DIV PROC NEARCWD ;将字转换为双字,AX容符号扩展到DXDIV CXPUSH DXMOV DL,ALADD DL,30H ;将不是数字的字符转换为数字MOV AH,2 ;显示输出INT 21H ;DOS 调用POP DXMOV AX,DXRETDEC_DIV ENDPCHANGE PROC NEA该子程序的功能:将AX中存储的

6、十六进制数转换为十进制数CMP AX,1000JAE C1 ;AX 1000 则转移CMP AX,100JAE C2 ;AX 100 则转移CMP AX,10JAE C3 ;AX 10 则转移JMP C4 ;AX V 10C1: MOV CX,1000DCALL DEC_DIVC2: MOV CX,100DCALL DEC_DIVC3: MOV CX,10DCALL DEC_DIVC4: MOV CX,1DCALL DEC_DIVRETCHANGE ENDPBEGIN PROC NEARBACK: CLEAR 1EHCURS 2,20 ;设置光标为(2.20 )DISPMSG MSG0显示用户

7、界面,第一行CURS 8,41 ;设置光标为(8, 41)MOV BX,0MOV CX,2NEWCHAR1:MOV AH,1 ;键盘输入并回显INT 21H ;DOS 调用CMP AL,30H ;检查输入的字符是不是数字JAE J1 ;如果不是,则转移至J1JMP D2 ;是,转移到D2执行J1: CMP AL,39H ; 与 9 的 ASCII 侣氡JBE J2 ;如果输入的字符是0-9,则转移至J2JMP D2 ;如果不是数字,则转移至 D2J2: SUB AL,30HCBW ;AL的容符号扩展到 AHXCHG AX,BXMOV DI,10MUL DIXCHG AX,BXADD BX,AX

8、LOOP NEWCHAR1MOV DATA1,BXCURS 11,41 ;设置光标位为(11, 40),第二行MOV BX,0MOV CX,2NEWCHAR2:MOV AH,1 ;键盘输入并回显INT 21H ;DOS 调用CMP AL,30H ;与 0 的 ASCII 码比较JAE J3 ;如果输入数字大于等于0则跳转至J3JMP D2J3: CMP AL,39H ;与 9 比较JBE J4 ;如果小于或等于9则跳转JMP D2 ;如果输入不是数字则跳转J4: SUB AL,30H ;如果输入不是0-9,则转化成相应的字符CBW ;将AL符号扩展到AHXCHG AX,BXMOV DI,10M

9、UL DIXCHG AX,BXADD BX,AXLOOP NEWCHAR2MOV DATA2,BXMOV AX,DATA1MOV BXQATA2PUSH AXPUSH BXCURS 15,33 ;设置光标的位置为(15.33),第三行DISPMSG MSG1显示提示信息MOV AH,1 ;接受键盘输入并回显INT 21H ;DOS 调用CMP AL,+JE ADDI ;如果运算符为+,则计算两数之和CMP AL,-JE SUBT ;如果运算符为-,则计算两数之差CURS 16,25 ;设置光标为(16,25)DISPMSG MSG2在屏幕上输出提示信息JMP D1;ADD THE TWO DA

10、TASADDI: POP BXPOP AXADD AX,BX ;计算两数字之和PUSH AXCURS 14,41 ;设置光标位置为(14, 41)POP AXCALL CHANGE将结果转换为十进制数JMP D1SUBTRACT THE TWO DATASSUBT: POP BXPOP AXCMP AX,BX ;比较两数大小JAE D0 ;如果AX=BX则跳转XCHG AX,BXPUSH AXPUSH BXCURS 14,40 ;设置光标位置为(14,40)DISPMSG MSG5在屏幕上显示负号POP BXPOP AXD0: SUB AX,BX ;计算两数之差PUSH AXCURS 14,4

11、1 ;设置光标位置为(14, 41)POP AXCALL CHANGE将结果转换为十进制数JMP D1D1: RETD2: PUSH AXPUSH BXCURS 15,33 ;设置光标位置为(15, 33)DISPMSG MSG7提示输入出错POP BXPOP AXRETBEGIN ENDPMAIN PROC NEARMOV AX,DATAMOV DS,AXMOV ES,AXPUSH DSXOR AX,AXPUSH AXMOV DATA2,0 ;将缓冲区清空MOV DATA1,0AGAIN:CALL BEGINCURS 16,23 ;设置光标位置为(16.23)DISPMSG MSG3在屏幕上

12、输出提示信息,提示退出的方法CURS 17,23 ;设置光标位置为(17.23)DISPMSG MSG4在屏幕上输出提示信息,提示继续的方法MOV AH,7 ;键盘输入,无回显INT 21H ;DOS 调用CMP AL,27 ;判断输入的是否为 ESCJNE AGAIN ;如果不是就继续执行以上运算EXIT: MOV AX,4C00H ;如果是就退出系统INT 21H ;DOS 调用MAIN ENDPEND MAIN4.2对源程序汇编生成目标文件褚以诉导|扁译佶息Asennblirg 斗9774 + 42737C Bytes symbol space freeC War血g Errors0 S

13、evere Errors4.3目标文件生成可执行文件“12.EXE”并用DEBUGS令调试程序4.4运行最终可执行程序“ 12.EXE”执行结果:5使用说明打开可执行文件“十进制加减计算器.exe ”键盘输入需要运算的两个十进制数,然后小键盘选择运算符号,则程序自动运算两个数并输出结果,并提供选择“ESC退出”“任意键继续”6总结6.1设计心得:通过本次汇编课程设计,让我对汇编这门计算机低级语言有了更深的认识。汇编是低级语 言,也就是说对一个人的编程思想要求会高一些。可用的资源很少,某些指令只能用某些 寄存器,指令也不多,所以怎么尽量少用寄存器,怎么充分利用每一份资源就很重要。所 以汇编编程前一定得先画好流程图,以梳理编程思路,提前想好哪步怎么走。汇编就像写 好文章,得先列好提纲才能写好。6.2设计展望:本程序只能进行2位十进制数的加减运算,如果加以改进,可以进行乘法和除法的运算, 也可以扩展为任意十进制数的运算。使之成为功能更强大的计算器。实用文档

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号