汇编语言 输入输出数字问题

thyw1 2019-10-13 04:02:37
输入数字然后输出
请大神帮忙看看我的代码哪里错了



DATAS SEGMENT
;此处输入数据段代码
intig db 0ah,0dh,'Please input a number:$'
outtig db 0dh,0ah,'The result is:$'

flag db 0
D DW 0
A DB 0
DATAS ENDS

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

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码

MOV D,0

lea dx,intig
mov ah,9
int 21h

L1: MOV AH,01H
INT 21H
CMP AL,'0'
Jl L2
CMP AL,'9'
Jg L2

MOV BL,AL
SUB BL,30H
MOV AX,10
MUL D

MOV BH,0
ADD D,BX
JMP L1

L2:
lea dx,outtig
mov ah,9
int 21h

mov ax,d
mov dx,0
mov bx,10000
div bx
mov d,dx

cmp dl,0
jz l3
mov dl,al
mov ah,2
int 21h
mov flag,1

l3:
mov ax,d
mov dx,0
mov bx,1000
div bx

mov d,dx

cmp flag,0
jnz l4
cmp dl,0
jz l5
l4:
mov dl,al
mov ah,2
int 21h

l5:
mov ax,d
mov dx,0
mov bx,100
div bx

mov d,dx

cmp flag,0
jnz l6
cmp dl,0
jz l7

l6:
mov dl,al
mov ah,2
int 21h

l7:
mov ax,d
mov dx,0
mov bx,10
div bx

mov d,dx

cmp flag,0
jnz l8
cmp dl,0
jz l9
l8:
mov dl,al
mov ah,2
int 21h
l9:
mov dx,d
mov ah,9
int 21h


MOV AH,4CH
INT 21H
CODES ENDS
END START

...全文
1467 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2019-10-14
  • 打赏
  • 举报
回复
输入时 mul D 结果是在 DX:AX 里,不是保存到 D 的,要自己进行保存;输出时,每个字符都要 add dl,30h 进行数值到字符的转换,最后个位数应该是 mov ah, 2 而非 9

21,459

社区成员

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

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