Cadena a numérico mediante Teorema fundamental de la numeracion y de regreso a cadena

Permite convertir una cadena de caracteres (numérica) a su valor numérico mediante el teorema fundamental de la numeracion., y de regreso permitiendo convertir su valor numérico a cadena para poder mostrar valores correctamente legibles por el usuario en su pantalla.

Búsqueda de ejemplos en Ensamblador
;Autor Hector Torres
;URL

.model small
.stack
.data

dato db 5 dup('0'),'$'
date db 5 dup('0'),'$'
cade dd 10000,1000,100,10,1  ;,'$' no se pone este signo porque no es cadena
nume dd 0                    ;5 dup('0'),'$' lo inicializo en cero porque guarda el numero final y no una cadena de numeros

.386
.code
.startup

mov si,0

;***** limpia ****
mov ah,00h
mov al,03h
int 10h

;****** lee numeros
num:
  mov ah,07h
  int 21h
  cmp al,58
  jg num
  cmp al,13
  je conv
  cmp al,48
  jl num
 

;  jne guarda   no s necesita este salto etiqueta de todas pues es la sig instruccion
;guarda:        esta etiqueta no es necesaria pues lo hace junto con la etiqueta num

  mov dato[si],al
  mov ah,02h
  mov dl,dato[si]
  int 21h
;  sub dato[si],30h
  inc si
  cmp si,5
  jne num

conv:
mov ah,09h
lea dx, dato
int 21h

mov ah,07h
int 21h

;  je inicia
;****convierte****
;inicia:

  mov di,4
  mov si,4
;  cmp cl,01h
;  jne conv
;  je desconv

;conv:
  lea EAX,dato[si]
  mov EDX,cade[di]
  mul EDX
  add EAX,nume
  mov nume,EAX
  dec di
  dec si
  cmp si,4
  mov cl,01h
  jne conv
  mov ah,09h
  lea dx,dato
  int 21h
  je desconv

desconv:
  mov EAX,cade[di]
  mov EDX,nume
  div EDX
  mov dl,al
  add dl,30h
  mov ah,02h
  int 21h



.exit
end