十进制数加减计算器的设计资料

上传人:f****u 文档编号:114325688 上传时间:2019-11-10 格式:DOC 页数:13 大小:69KB
返回 下载 相关 举报
十进制数加减计算器的设计资料_第1页
第1页 / 共13页
十进制数加减计算器的设计资料_第2页
第2页 / 共13页
十进制数加减计算器的设计资料_第3页
第3页 / 共13页
十进制数加减计算器的设计资料_第4页
第4页 / 共13页
十进制数加减计算器的设计资料_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

1、汇编语言程序设计课程设计说明书十进制数加减计算器的设计1 问题描述用汇编语言设计一个十进制数加减计算器,能够实现两个二位十进制数的加减运算,并具有友好的界面。2 设计说明该程序数据流程图:开始输入DATA1,DATA2选择运算类型?+,?初始化界面进行加法运算进行减法运算显示运算结果继续计算?退出除ESC外任意键ESC键盘输入+键盘输入3 详细的算法描述定义两个数据段,通过键盘输入,存储于AX,BX中,选择运算符号“+或”,自动运算AX,BX中的数据,然后将结果转化为十进制输出。(详细解释见源程序)4 源程序与执行结果4.1 源程序:CURS MACRO A,B MOV AH,2 ;置光标位置

2、 MOV BH,0 ;页号为0 MOV DH,A ;设置光标的坐标为(A.B) MOV DL,B INT 10H ;BIOS调用 ENDM ;- DISPMSG MACRO MESSAGE LEA DX,MESSAGE ;传递MESSAGE的偏移地址 MOV AH,9 ;显示字符串 INT 21H ;DOS调用 ENDM ;- CLEAR MACRO COLOR ;清屏 MOV AH,6 ;屏幕初始化 MOV AL,0 ;页号 MOV CH,0 ;设置左上角的坐标为(0,0) MOV CL,0 MOV DL,100 ;设置右上角的坐标为(100,100) MOV DH,100 MOV BH,C

3、OLOR ;卷入行属性 INT 10H ;BIOS调用 ENDM .MODEL SMALL .STACK .DATA ;数据段定义 MSG0 DB * * * * * * * * * * * * * * * * * * * *,0DH,0AH ;,0dh,0ah,0dh,0ah DB * *,0DH,0AH ;db * *,0dh,0ah ;db * *,0dh,0ah DB * -COUNTER- *,0DH,0AH ;,0dh,0ah,0dh,0ah DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * DATA1: DB _ *,0DH,0A

4、H ;,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH DB * DATA2: DB _ *,0DH,0AH ;,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH DB * RESULT: DB _ *,0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,

5、0AH DB * * * * * * * * * * * * * * * * * * * *,$ MSG1 DB choose +,-,$ MSG2 DB you choose wrong,$,0AH,0DH MSG3 DB Press ESC to Exit!,0DH,0AH,$ MSG4 DB Press any key to continue!,0DH,0AH,$ MSG5 DB -,$ MSG6 DB .,$ MSG7 DB error input!,$ MSG8 DB data2 is wrong!,$ DATA1 DW ? DATA2 DW ? .CODE ;代码段从这里开始 ;-

6、 DEC_DIV PROC NEAR CWD ;将字转换为双字,AX内容符号扩展到DX DIV CX PUSH DX MOV DL,AL ADD DL,30H ;将不是数字的字符转换为数字 MOV AH,2 ;显示输出 INT 21H ;DOS调用 POP DX MOV AX,DX RET DEC_DIV ENDP ;- CHANGE PROC NEAR ;该子程序的功能:将AX中存储的十六进制数转换为十进制数 CMP AX,1000 JAE C1 ;AX1000则转移 CMP AX,100 JAE C2 ;AX100则转移 CMP AX,10 JAE C3 ;AX10则转移 JMP C4 ;

7、AX10 C1: MOV CX,1000D CALL DEC_DIV C2: MOV CX,100D CALL DEC_DIV C3: MOV CX,10D CALL DEC_DIV C4: MOV CX,1D CALL DEC_DIV RET CHANGE ENDP ;- BEGIN PROC NEAR BACK: CLEAR 1EH CURS 2,20 ;设置光标为(2.20) DISPMSG MSG0 ;显示用户界面 CURS 8,41 ;设置光标为(8,41) ,第一行 MOV BX,0 MOV CX,2 NEWCHAR1: MOV AH,1 ;键盘输入并回显 INT 21H ;DOS

8、调用 CMP AL,30H ;检查输入的字符是不是数字 JAE J1 ;如果不是,则转移至J1 JMP D2 ;是,转移到D2执行 J1: CMP AL,39H ; 与9的ASCII侣氡 JBE J2 ;如果输入的字符是0-9,则转移至J2 JMP D2 ;如果不是数字,则转移至D2 J2: SUB AL,30H CBW ;AL的内容符号扩展到AH XCHG AX,BX MOV DI,10 MUL DI XCHG AX,BX ADD BX,AX LOOP NEWCHAR1 MOV DATA1,BX CURS 11,41 ;设置光标位为(11,40),第二行 MOV BX,0 MOV CX,2

9、NEWCHAR2: MOV AH,1 ;键盘输入并回显 INT 21H ;DOS调用 CMP AL,30H ;与0的ASCII码比较 JAE J3 ;如果输入数字大于等于0则跳转至J3 JMP D2 J3: CMP AL,39H ;与9比较 JBE J4 ;如果小于或等于9则跳转 JMP D2 ;如果输入不是数字则跳转 J4: SUB AL,30H ;如果输入不是0-9,则转化成相应的字符 CBW ;将AL符号扩展到AH XCHG AX,BX MOV DI,10 MUL DI XCHG AX,BX ADD BX,AX LOOP NEWCHAR2 MOV DATA2,BX MOV AX,DATA

10、1 MOV BX,DATA2 PUSH AX PUSH BX CURS 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 DATAS ADDI: POP BX POP AX ADD AX,BX ;计算两

11、数字之和 PUSH AX CURS 14,41 ;设置光标位置为(14,41) POP AX CALL CHANGE ;将结果转换为十进制数 JMP D1 ;- ;SUBTRACT THE TWO DATAS SUBT: POP BX POP AX CMP AX,BX ;比较两数大小 JAE D0 ;如果AX=BX则跳转 XCHG AX,BX PUSH AX PUSH BX CURS 14,40 ;设置光标位置为(14,40) DISPMSG MSG5 ;在屏幕上显示负号 POP BX POP AX D0: SUB AX,BX ;计算两数之差 PUSH AX CURS 14,41 ;设置光标位

12、置为(14,41) POP AX CALL CHANGE ;将结果转换为十进制数 JMP D1 ;- D1: RET D2: PUSH AX PUSH BX CURS 15,33 ;设置光标位置为(15,33) DISPMSG MSG7 ;提示输入出错 POP BX POP AX RET BEGIN ENDP ;- MAIN PROC NEAR MOV AX,DATA MOV DS,AX MOV ES,AX PUSH DS XOR AX,AX PUSH AX MOV DATA2,0 ;将缓冲区清空 MOV DATA1,0 AGAIN: CALL BEGIN CURS 16,23 ;设置光标位置为(16.23) DISPMSG MSG3 ;在屏幕上输出提示信息,提示退出的方法 CURS 17,23 ;设置光标位置为(17.23) DISPMSG MSG4 ;在屏幕上输出提示信息,提示继续的方法 MOV AH,7 ;键盘输入,无回显 INT 21H ;DOS调用 CMP AL,27 ;判断输入的是否为ESC JNE AGAIN ;如果不是

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

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