汇编实现两个数相加

您所在的位置:网站首页 jsp输入两个数求和 汇编实现两个数相加

汇编实现两个数相加

2023-09-22 18:44| 来源: 网络整理| 查看: 265

=================================================================

情景再现

学校里开了计算机基础原理的课,里面有汇编,装DOSBOX的那种。 老师布置了个作业:

键盘中输入两个数,然后求和并输出

我想了半天找了很多资料,看了许多大佬的代码,悟出些门道,马上奋笔疾书写下这篇博客期末复习的时候能看。如果有相关错误请大佬们留言。 Tip: 我这里没有用到栈来保护数据,因为我还没怎么懂汇编里的栈,等以后有空就来补充。另外我这个程序只能实现两个一位数的相加,比较菜,大佬们勿喷。

示例代码 DATA SEGMENT NUM1 DB 0 ;定义一个字节的NUM1并赋值为0 NUM2 DB 0 ;定义一个字节的NUM2并赋值为0 SUM DB 0 ;定义他们的和 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX ;输入第一个值把它保存在NUM1中 MOV AH,01H INT 21H SUB AL,30H ;将键盘输入的ASCII码转换成16进制的0到9 MOV NUM1,AL ;将值赋给NUM1 ;输入一个值后自动回车加换行并等待输入第二个数 MOV DL,0AH ;回车 MOV AH,2 INT 21H MOV DL ,0DH ;换行 MOV AH,2 INT 21H ;输入第二个值把它保存在NUM2中 MOV AH,01H INT 21H SUB AL,30H ;将键盘输入的ASCII码转换成16进制的0到9 MOV NUM2,AL ;将值赋给NUM2 ;把两个值相加并保存在SUM中 ADD BL,NUM1 ADD BL,NUM2 ;把两个数相加存放在BL中 MOV SUM,BL ;把和赋给SUM ;为了输出在新的一行 MOV DL ,0AH ;回车 MOV AH,02H INT 21H MOV DL ,0DH ;换行 MOV AH,02H INT 21H ;以下为输出程序 CMP SUM,9 ;判断是否不在0-9以内 JA Y ;超过9则跳转 MOV DL,SUM ;若没有则将SUM的值给DL ADD DL,30H ;需要在输出前转换到相应的ASCII码 JMP SHOW ;跳转到显示代码 ;10-18 Y: MOV DL,1 ;直接先输出十位上的值 ADD DL,30H ;需要在输出前转换到相应的ASCII码 MOV AH,02H INT 21H MOV DL,SUM ;先将SUM的值赋给DL SUB DL,10 ;把DL中的值减十进置的10,如果减十六进制的10会有误 ADD DL,30H ;需要在输出前转换到相应的ASCII码 JMP SHOW ;显示程序 SHOW: MOV AH,02H INT 21H ;程序结束 MOV AH,4CH INT 21H CODE ENDS END START 截图

在这里插入图片描述

============================================================================

小结

这是一个两个一位数相加的程序,两位数以上的我还没研究,xixixi~ 我把相关的代码的注释都写在了旁边,希望下一个时空的我能再看的时候能懂,也希望能帮到看到我这篇文章的老哥们。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3