page 60, 132
title Cien_Caracteres
;--------------------
pila segment para stack 'stack'
DB 12 dup ('pilapila')
pila ends
;--------------------
dato segment para 'data'
dato ends
;--------------------
codigo segment para 'code'
inicio proc far
assume cs: codigo, ds:dato, es:dato, ss:pila
push ds
sub ax, ax
push ax
mov ax,
dato
mov ds, ax
mov es, ax
;-------------------- PROGRAMA PRINCIPAL -------------------
mov bl, 31h;asignacion b=1
mov cl, 41h;asignacion c=A
unidades1:; en esta etiqueta se imprimen los primeros
numeros de un digito del 1 a 9
mov
ah,08; se lee un caracter de pantalla
int
21h
mov
ah, 02
mov
dl, bl; salida en pantalla de bl (numeros del 1 al 9)
int
21h
mov
ah, 02
mov
dl, 20h;salida en pantalla de espacio para separar los numeros
int
21h
inc
bl;incremento de bl
cmp
bl, 39h;comparacion de bl con 9
ja
unidades2;salto condicional: si bl es igual a 9 salta a unidades2 para ahora
imprimir de la A a la F
jmp
unidades1;salto incondicional a unidades 1 para continuar imprimiendo numeros
unidades2:; en esta etiqueta se imprimen los primeros
numeros de un dígito de la A a la F
mov
ah,08;se lee un caracter de pantalla
int
21h
mov
ah, 02
mov
dl, cl; salida en pantalla de letras de la A a la F
int
21h
mov
ah, 02
mov
dl, 20h;salida en pantalla de espacio para separar los numeros
int
21h
inc
cl ;incremento de cl
cmp
cl, 46h; comparacion de cl con F
ja
decenas;salto condicional: si cl es mayor que F saltara a decenas
jmp
unidades2;salto incondicional a unidades2
decenas:;en
esta etiqueta asignamos nuevos valores a bl y cl para comezar con los numeros
de dos digitos
mov
bl, 31h;asignamos a bl 1
mov
cl, 30h;asignamos a cl 0
jmp
doble1;salto incondicional a doble1
incremento1:;aqui se majen las letras para los numeros de
dos cifras
mov
cl,41h; se asigna a cl A
cmp
cl,46h;se compara cl con F
ja
incremento2;salto condicional: si cl es mayor
que F salta a incremento2
jmp
doble2;salto incondicional a doble2
incremento2:;aqui se controla el incremento de bl y se
asigna a cl 0 para iniciar una nueva impresion de unidades
mov
cl,30h; asignacion a cl de 0
inc
bl;; se incrementa bl
cmp
bl,36h;se compara bl con 6
je
doble3;salto condicional: si bl es igual a 6 salta a doble3
jmp
doble1;salto incondicional a doble1 para
continuar imprimiendo numero con numero
doble1:;en esta etiqueta se muestran en pantalla numeros de
dos digitos (numero con numero)
mov
ah,08;lee un caracter en pantalla
int
21h
mov
ah,02
mov
dl, bl;se imprime en pantalla un numero(del 1 al 5)
int
21h
mov
ah,02
mov
dl, cl¨;se imprime en pantalla un numero(del 0 al 9)
int
21h
mov
ah, 02
mov
dl, 20h; se imprime un pantalla un espacio
int
21h
inc
cl;incremento de cl
cmp
cl,39h;comparacion de cl con 9
ja
incremento1;salto condicional: si cl es
mayor que 9 salta a incremento1
jmp
doble1;salto incondicional a doble1 para continuar imprimiendo numero y numero
doble2:;en esta etiqueta se imprimen numeros de dos cifras
formados por numero y letra
mov
ah,08;leer un caracter en pantalla
int
21h
mov
ah,02
mov
dl, bl;se imprime en pantalla un numero(del 0 al 9)
int
21h
mov
ah,02
mov
dl, cl;se imprime en pantalla una letra(de la A a la F)
int 21h
mov
ah, 02
mov
dl, 20h;muestra en pantalla un espacio
int
21h
inc
cl;incremento de cl
cmp
cl,46h;comparacion de cl con F
ja
incremento2;salto condicional: si cl es mayor que F salta a incremento2
jmp
doble2;salto incondicional a doble2 para seguir imprimiendo numero y letra
doble3:; aqui se terminan de imprimir los numeros del 60 al
64 para no llegar hasta el 6F
mov
ah,08;lee un caracter de la pantalla
int
21h
mov
ah,02
mov
dl, bl;imprime un numero, que en esta parte siempre es 6
int
21h
mov
ah,02
mov
dl, cl;imprime numeros del 0 al 4
int
21h
mov
ah, 02
mov
dl, 20h; muestra en pantalla el espacio
int
21h
inc
cl;incremento de cl
cmp
cl,34h;comparacion de cl con 4
ja
fin;salto condicional: si cl es mayor a 4 salta a fin
jmp
doble3;salto incondicional a doble3 para
continuar imprimendo del 60 al 64
;------------
fin:; fin del programa
nop;no
realiza accion alguna
;-------------------------- END PP -------------------------
ret
inicio endp
codigo ends
end inicio
ENSAMBLADO, ENLACE Y EJECUCIÓN USANDO TASM Y TLINK