大一汇编累加器求教

Fat_Otaku 2018-05-09 10:40:36
就是代码已经写完了 可以运行但是出不了结果

如图
DATAS SEGMENT
A DB 'Input a number:','$'
B DB 10,?,10 dup('$')
D DB 'input error $';
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,offset A
MOV AH,09H
INT 21H ;输出提示语
MOV DX,offset B
MOV AH,0aH
INT 21H;输入字符串
MOV AH,02H
MOV DL,0dH
INT 21H
MOV AH,02H
MOV DL,0aH
INT 21H;换行
LEA SI,A+1
MOV AX,[SI]
MOV AX,00H
MOV CX,AX;读取字符串长度
MOV BX,00H
LEA SI,A+2
S1: MOV AX,00H
MOV AL,[SI]
SUB AL,30H
ADD AX,BX
CMP CX,01H
JBE ONE
MOV DX,0aH
MUL DX
MOV BX,AX
ADD SI,01H
LOOP S1;将输入的字符串转换为整数
ONE:MOV CX,00h
MOV CX,AX
CMP AX,361;判断得出的数是否符合要求
JBE EXIT
MOV DX,offset D
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
EXIT:MOV AX,00H
MOV BX,01H
S2: ADD AX,BX
ADD BX,01H
LOOP S2;累加
PUSH AX
MOV BX,0aH
MOV BL,00H
MOV DX,00h
TWO:DIV BX
ADD CX,01H
MOV DX,00H
CMP AX,0aH
JAE TWO
ADD CX,01H
LEA SI,A+2
ADD SI,CX
SUB SI,01H;计算所累加和和长度
POP AX
S3: MOV BX,1
DIV BX
ADD DX,30H
MOV [SI],DL
SUB SI,01H
MOV DX,00h
LOOP S3;将所累加的和转换为字符串
MOV DX,offset A+2
MOV AH,09H
INT 21H;输出字符串
;
MOV AH,4CH
INT 21H
CODES ENDS
END START
...全文
1530 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42965137 2018-08-14
  • 打赏
  • 举报
回复
挺赞的一个工具。初学者很容易上手,谢谢了
Ptrtoptr 2018-06-24
  • 打赏
  • 举报
回复
DATAS SEGMENT
A DB 'Input a number:','$'
B DB 10,?,10 dup('$')
D DB 'input error $';
DATAS ENDS

STACKS SEGMENT
;
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,offset A
MOV AH,09H
INT 21H ;display input tip
MOV DX,offset B
MOV AH,0aH
INT 21H; read input info from keyboard
MOV AH,02H
MOV DL,0dH
INT 21H
MOV AH,02H
MOV DL,0aH
INT 21H;
LEA SI,B+1
xor cx, cx
xor ax,ax
MOV cl,[SI]
MOV BX,00H
LEA SI,B+2
S1:
MOV DX,0aH
MUL DX
XOR BX, BX
MOV BL,[SI]
SUB BL,30H
ADD AX,BX
ADD SI,01H
LOOP S1 ;convert string to integer value, save the result into ax register
ONE:MOV CX,00h
MOV CX,AX
CMP AX,361;
JBE EXIT
MOV DX,offset D
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
EXIT:
PUSH AX ; save the result
MOV BH,00H ;下面看不明白想要干什么,自己修改吧
MOV BL,0aH
MOV DX,00h
TWO
zara 2018-05-10
  • 打赏
  • 举报
回复
div 出错,就是溢出了,在 div 指令上下断点看看啊,比如第一个 div bx 那里时 bx 前面被置 0 了
  • 打赏
  • 举报
回复
S3: MOV BX,1 DIV BX 这个MOV BX,1很奇怪,没用啊,应该是MOV BX,10吧

21,459

社区成员

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

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