数值求和问题怎么用汇编语言做了?

数值求和
提示输入数字;输入任意正整数数字int,点击Enter结束输入;输出“1+2+3+…+int”的值;点击Enter程序退出;

这个问题咋用最原始的汇编语言做了?实在是刚学学不明白,希望各位大佬帮帮我,或者给个思路也行,谢谢大家

data segment
d1 db 20 dup(0)
data ends
stack segment
db 128 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
lea di,d1
mov cx,5
l0:
mov ah,1 ;输入数为一位数字连续输入,多位数字时稍加改变即可
int 21h
mov [di],al
inc di
loop l0
cld
mov dl,0
mov bx,000fh
mov cx,5
mov si,0
l1:
lodsb ;将ascii码值转换为二进制并相加
and ax,bx
add dl,al
loop l1
cmp dl,10
jb b1
mov ax,0
mov al,dl
cbw
mov bl,10
div bl
add ah,30h ;讲二进制转换为ascii码
add al,30h
xchg al,ah
mov bx,ax
mov dl,ah
mov ah,2
int 21h
mov dl,bl
mov ah,2
int 21h
jmp b2
b1:
add dl,30h
mov ah,2
int 21h
b2:
mov ax,4c00h
int 21h
code ends
end start

下面的是1-100求和的

DATA SEGMENT
      RESULT DB 4 DUP(?)
      DB 0DH,0AH,'$'
DATA ENDS

STACK SEGMENT STACK
      DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
 ASSUME DS:DATA,SS:STACK,CS:CODE
 START:
 MOV AX,DATA
 MOV DS,AX
 MOV CX,100
 MOV AX,0
 NEXT:
 ADD AX,CX
 LOOP NEXT
 MOV DX,0
 MOV BX,10D
 DIV BX
 ADD DL,30H
 MOV RESULT[3],DL
 MOV DX,0
 DIV BX
 ADD DL,30H
 MOV RESULT[2],DL
 MOV DX,0
 DIV BX
 ADD DL,30H
 MOV RESULT[1],DL
 ADD AL,30H
 MOV RESULT[0],AL
 MOV AH,09H
 LEA DX,RESULT
 INT 21H
 MOV AH,4CH
 INT 21H
 CODE ENDS
 END START

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632