




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.十进制数加减计算器的设计1 问题描述用汇编语言设计一个十进制数加减计算器,能够实现两个二位十进制数的加减运算,并具有友好的界面。2 设计说明该程序数据流程图:开始输入DATA1,DATA2选择运算类型?+,?初始化界面进行加法运算进行减法运算显示运算结果继续计算?退出除ESC外任意键ESC键盘输入+键盘输入3 详细的算法描述定义两个数据段,通过键盘输入,存储于AX,BX中,选择运算符号“+或”,自动运算AX,BX中的数据,然后将结果转化为十进制输出。(详细解释见源程序)4 源程序与执行结果4.1 源程序:CURS MACRO A,B MOV AH,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,COLOR ;卷入行属性 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,0AH ;,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,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 ;代码段从这里开始 ;- 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 ;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调用 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 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,DATA1 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 ;计算两数字之和 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 ;设置光标位置为(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 ;如果不是就继续执行以上运算 EXIT: MOV AX,4C00H ;如果是就退出系统 INT 21H ;DOS调用 MAIN ENDP END MAIN4.2 对源程序汇编生成目标文件4.3 链接目标文件生成可执行文件“12.EXE”,并用DEBUG命令调试程序4.4 运行最终可执行程序“12.EXE”,执行结果:5 使用说明打开可执行文件“十进制加减计算器.exe”,键盘输入需要运算的两个十进制数,然后小键盘选择运算符号,则程序自动运算两个数并输出结果,并提供选择“ESC退出”、“任意键继续”。6 总结6.1 设计心得:通过本次汇编课程设计,让我对汇编这门计算机低级语言有了更深的认识。汇编是低级语言,也就是说对一个人的编程思想要求会高一些。可用的资源很少,某些指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025宠物狗买卖合同
- 语数英课件教学课件
- 诗联声律知识培训心得
- 红细胞溶血性贫血
- 诗经爱情名篇课件
- 建筑土石方协议
- 红楼梦刘姥姥教学课件
- 人工智能赋能2025年在线生鲜电商平台服务升级研究报告
- 2025年智能电网信息安全与技术创新策略分析报告
- 试验员岗前知识培训内容课件
- 安全文明施工措施费支付申请表实用文档
- 北师版八年级数学上课程纲要
- 华晨宝马大东厂区天然气分布式能源站项目环评报告
- 青海2023届高校毕业生就业报告出炉:医学和法学就业率最高
- 汽车电控发动机构造与维修(第三版)
- GB/T 328.13-2007建筑防水卷材试验方法第13部分:高分子防水卷材尺寸稳定性
- 茶叶实践报告3篇
- 西门子低压电器快速选型手册
- 最新教科版五年级科学上册《第2课时 地球的结构》教学课件
- Q∕SY 05129-2017 输油气站消防设施及灭火器材配置管理规范
- 企业微信私域流量运营方案
评论
0/150
提交评论