Es una mejora del convertidor de 2 dígitos, este programa convierte cadenas de 8 dígitos a números utilizando registros de 32bits (extendidos), el programa convierte de cadena a numero y de numero a cadena.
;elgame
;programa que lee hasta 8 caracteres y los convierte a
;un numero para manipularlo con operaciones + - / *
;o cualquier otra utilidad
.model small
.stack
.data
numstr db 8 dup ('0'),'$'
numstr2 db ' $'
numero dd 0
posi dd 10000000,1000000,100000,10000,1000,100,10,1
.386 ;emular con registros de 32bits
.code
.startup
mov si,0 ;leemos los numeros del teclado
lee:
mov ah,01h ;01h lee un caracter
int 21h
cmp al,13 ;si el caracter es enter
je recore ;salta a recorer los numeros
mov numstr[si],al ;almacenamos el caracter
inc si ;incrementamos el indice si
cmp si,8 ;si si es 8
jne lee ;si no lee otro caracter
je continua ;si si salta a continua
recore:
mov di,8
recorre: ;recorremos los numeros a la derecha
dec si
dec di
mov al,numstr[si]
mov numstr[di],al
mov numstr[si],30h
cmp si,0
jne recorre
continua:
mov si,0 ; convierte de cadena a numero
mov di,0
convierte:
sub EDX,EDX
mov EAX,0
mov al,numstr[si]
sub EAX,48
mov ecx,posi[di]
mul ecx
add numero,EAX
inc si
add di,4
cmp si,8
jne convierte
mov si,0 ; convierte de numero a cadena
mov di,0
mov EAX,numero
convierte2:
mov EDX,0
div posi[di]
add EAX,48
mov numstr2[si],al
mov EAX,EDX
inc si
add di,4
cmp si,8
jne convierte2
mov ah,09h
lea dx,numstr2
int 21h
.exit
end