ASM 16位将输入缓冲区字符串转换为数字 [英] ASM 16Bit converting input buffer string to number
本文介绍了ASM 16位将输入缓冲区字符串转换为数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
也许有人能帮我。我正在尝试打印与用户输入的数量相同的""。所以我需要把字符串转换成数字。我尝试在循环中执行,但遇到一些问题,我的代码不能正常工作,它打印了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
这篇关于ASM 16位将输入缓冲区字符串转换为数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文