ASM 16位将输入缓冲区字符串转换为数字 [英] ASM 16Bit converting input buffer string to number

查看:0
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆