¿Cómo convertir cadena a número en Tasm?
Hice un programa que lee una cadena y la convierte en un número. Una representación de cadena del número introducido en el sistema decimal. El resultado de la conversión está en el registro ax. Yo uso tasm16.
¿Cómo puedo hacer que pueda convertir una cadena más grande (más de 65535)?
<code>model small stack 100h printstring macro msg mov ah,09h mov dx,offset msg int 21h endm data segment cr equ 0dh lf equ 0ah errorInput db 'Wrong input',cr,lf,'$' inputAmsg db 'Please input A',cr,lf,'$' outstring db 'Output:',cr,lf,'$' maxAbuf db 10 db ? db 10 dup(0) db '$' result dw 0 data ends code segment assume cs:code, ds:data start: mov ax,data mov ds,ax ;input A printstring inputAmsg mov ah,0ah lea dx,maxAbuf int 21h printstring outstring mov ah,09h lea dx,maxAbuf+2 int 21h ;in: ;dx:address of string ;out ;dx:ax - result ;work only ax ; call Convert jmp exit ;in: ;dx:address of string ;out ;dx:ax - result ;9999989d = 989675h Convert proc xor ax,ax xor cx,cx mov bx,10 ;base mov si, offset dx xor dx,dx getnewchar: mov cl,[si] cmp cl,0dh ;if `$` exit jz endproc sub cl,'0' ;or 30h mul bx add ax,cx ;I do not know what to write here, if there is an exit for the bit grid. adc dx,0 inc si jmp getnewchar endproc: ret endp exit: mov ax,4c00h int 21h code ends end start </code>