【萌新求帮助】汇编怎么能让两个字符串相加并显示出来

qq_36207386 2016-12-22 06:49:22
我本来是想把两个字符串比如
num1 db '5879$'
num2 db '4689$'
全部转化成数据然后相加最后又转化回字符串存到一个新开辟的内存空间,用
mov dx,num
mov ah,09h
int 21h
来显示,但是我想能不能有一种更简便的方法来相加,这种方法太繁琐了,因为输出本身就是要求是字符串,能不能有一种不需要转化成数据就可以完成目的的方法呢,求各位大神解答。
...全文
1844 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36207386 2016-12-26
  • 打赏
  • 举报
回复
懂了懂了,帮大忙了,谢谢大神!
baidu_23107797 2016-12-22
  • 打赏
  • 举报
回复
若数字以字符串形式保存,只须考虑到进位,相加其实不难,但若两数长度不同就比较烦,大约要多两倍的代码,未必是楼主的要求.... 以下代码是假设两个数字字串長度相同,是最简单的作法.

numLen equ 4
DATA SEGMENT
  num1 db '5879' 
  num2 db '4689' 
  sum db numLen + 2 dup('$')
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
 mov ax,data
 mov ds,ax
 lea si,num1 + numLen-1
 lea di,num2 + numLen-1 
 lea bx,sum  + numLen
 mov cx,4
 mov dl,0
next: 
  mov al,[si]
  add al,[di]
  add al,dl
  mov dl,0
  sub al,'0'
  cmp al,'9'
  jbe next2
  sub al,10
  mov dl,1
next2:
  mov [bx],al
  dec bx
  dec si
  dec di
  loop next
  inc bx
  or dl,dl
  jz next3
  dec bx
  mov byte ptr [bx],'1'
next3:
  mov dx,bx
  mov ah,9
  int 21h
  MOV AH,4CH
  INT 21H 
CODE ENDS
END START

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧