汇编实现15位加法(带输入和输出)

本文介绍了如何用汇编语言实现15位加法,包括输入和输出功能。难点在于加法函数,作者尝试了两种方法,最终采用将较短数右移并补0的方法。程序中存在一个小错误,即extrn拼写错误,已修正。目前程序只能处理15位加法,且前导零不正确显示,计划后续改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近两天一直在想可不可以用汇编做15位加法,带输入和输出的那种,经过调试,大致的思路如下。

  有一个输入函数input,它接受从键盘输入的字符,并转换为数字存入内存;有一个输出函数output,它将已经转换过的结果输出;有一个加法函数plus,它实现的功能是把输入的两个数相加,并处理为ASCII码字符。

  input、output以及main函数都相对简单,我认为难点主要是在plus函数这一块。

  我刚开始想用两个指针分别指向两个数据,然后通过移动指针将数据相加,后来我发现这个方法有点麻烦(主要是不确定两个数据的长度是否一样,然后是否有进位);后来想到了另外一种方法,浮点数相加需要对阶,这里的加法也可以将短的数向右移(是整个数据右移,不是指移位操作),然后前面用0来补位,然后就方便处理了。

  具体的代码如下:

extrn input:far,output:far,plus:far
public num1,num2,result

data segment
	num1 db 16 dup(0)				; 存放已经经过转化的十进制数据
	num2 db 16 dup(0)
	result db 17 dup(0ffh),'$'
	onceMore db 10,'Do you want to add your numbers once more(y/n): $'
data ends 

code segment
assume cs:code,ds:data
start:
	mov ax,data
	mov ds,ax
	;--------------------------------------------------------------------
mainProces
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值