TFN con registros de 32 bits

Lee una cadena numérica y aplica el teoréma fundamental de la numeración. Manipula registros de 32 bits EAX

Búsqueda de ejemplos en Ensamblador
;Autor Victor De la Rocha
;URL http://www.mis-algoritmos.com

.model small
.stack
.data
 
 cuantos db 6
 cad     db '000000$'
 num     dd 0
 tfn     dd 1000000,100000,10000,1000,100,10,1
 
.386
.code
.startup

 ; limpiar pantalla
 ;mov ah,00h
 ;mov al,03h
 ;int 10h
 
 mov cl,0   ; contar los caracteres leidos
 mov SI,0   ; Indice de posiciones en la cadena cad
 otro:
    mov ah,07h      ; leer caracteres sin eco
    int 21h
    cmp al,13       ;comparo con enter
    je salir
    cmp al,30h      ; comparo si es menor que cero leo otro
    jl otro
    cmp al,39h      ; comparo si es mayor que 9 leo otro
    jg otro
    mov cad[SI],al  ; guardo en la cadena cad los caracteres leidos
   
    mov dl,al       ; imprimo el caracter leido
    mov ah,02h
    int 21h
   
    inc SI          ; incremento el indice de la cadena
    inc cl          ; incremento el contador
    cmp cl,cuantos  ; pregunto si ya lei todos los digitos
    jne otro
   
 salir:

 ; convierte una cadena de carcteres en un solo numero
 mov SI,0
 mov DI,0
 mov cl,0
 masdiv:
    mov EAX,0
    mov al,cad[SI]  ; tomo el primer carcater
    sub al,30h      ; lo convierto a numero restando 30h
    mul tfn[DI]     ; multiplico por 10 a la posicion
    add num,EAX      ; voy agregando las posiciones en num
    inc SI          ; dsiminuyo el indice de posicion y cadena
    inc cl          ; disminuyo el contador
    add DI,4
    cmp cl,cuantos  ; comparo con cero
    jne masdiv      ; si no es cero hago otro de lo contrario sale
   
 
.exit
end