martes, 11 de junio de 2013

Imprimir un número de 3 digitos

Este programa es muy sencillo pero es bueno para saber la lógica al momento de imprimir algún número que hay algunas veces que hacemos una operación y no sabemos en donde guarda el número si son unidades, decenas o centenas.

El programa funciona de la siguiente manera: 
* Definimos un número de 3 digitos en decimal.
* Vamos separando con ajustes las unidades, decenas y centenas en un registro.
* Hacemos respaldo en tres variables de los numeros que separamos.
* Imprimimos las variables.

Limitaciones:
Solo se puede imprimir un número menor a 255, ya que el tamaño de bytes del registro en AL (8 bytes) no nos permite guardar un número mayo.

Programa:

.model small
.stack 100
.data

;Declaramos nuestras 3 variables, uni (unidades), dece (decenas) y cen (centenas)
cen db 0
dece db 0
uni db 0
.code


inicio:
mov al,234 ; asigno un valor de 3 digitos en decimal al registro AL
aam ;ajusta el valor en AL por: AH=23 Y AL=4

mov uni,al ; Respaldo 4 en unidades
mov al,ah ;muevo lo que tengo en AH a AL para poder volver a separar los números

aam ; separa lo qe hay en AL por: AH=2 Y AL=3
mov cen,ah ;respaldo las centenas en cen en este caso 2

mov dece,al ;respaldo las decenas en dec, en este caso 3


;Imprimos los tres valores empezando por centenas, decenas y unidades.

mov ah,02h

mov dl,cen
add dl,30h ; se suma 30h a dl para imprimir el numero real.
int 21h

mov dl,dece
add dl,30h
int 21h

mov dl,uni
add dl,30h
int 21h

;Termina programa
mov ah,04ch
int 21h
end
Captura de pantalla del programa ejecutado:



Recomendación. Si se quiere imprimir un numero mayor a 255 pasar el número directo al registro completo AX o en su caso a un registro extendido EAX.

1 comentario: