如何解决ASM 16Bit将输入缓冲区字符串转换为数字
也许有人可以帮助我。我正在尝试打印与用户输入的数量相同的''。所以我需要将字符串转换为数字。我正在尝试循环执行,但是有一些问题,我的代码无法正常工作,它正在打印65535'',基本上是最大的。也许有人可以解释我的问题在哪里?
.MODEL small
.STACK 200h
.DATA
input DB 4,?,4 dup (?)
Symbol DB '*$'
.CODE
Start:
mov AH,0Ah
mov ds,ax
mov DX,offset input
int 21h
mov cl,input[2]
mov si,2
mov ax,0
LoopStart:
mov bh,10
mul bh
mov ah,input[si]
add ah,al
sub cl,1
cmp cl,0
jne LoopStart
mov cx,ax
mov ax,@DATA
mov ds,ax
mov dx,offset Symbol
LoopStart1:
mov ah,9
int 21h;
sub cx,1
cmp cx,0
jne LoopStart1
mov ah,4Ch
int 21h
END Start
解决方法
所以这是可行的解决方案
.MODEL small
.STACK 200h
.DATA
Symbol DB '*$'
input DB 6,?,6 dup (?)
.CODE
Start:
mov ax,@DATA
mov ds,ax
mov AH,0Ah
mov DX,offset input
int 21h
mov AH,0Fh
int 10h
mov AH,0
int 10h
mov si,2
mov ax,0
mov cl,input[1]
LoopStart:
mov bh,10
mul bh
add al,input[si]
sub al,48
add si,1
sub cl,1
; cmp cl,0
jne LoopStart
mov cx,ax
mov dx,offset Symbol
LoopStart1:
mov ah,9
int 21h;
sub cx,1
cmp cx,0
jne LoopStart1
mov ah,0
int 16h
mov ah,4Ch
int 21h
END Start
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。