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
;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