;=================================================================
; PROGRAMA : pt14_col
; FUNCION : imprime un texto con las letras de colores que parpadean
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : Lunes 3 abril 2017
;=================================================================
; DECLARACION DE CONSTANTES
CR EQU 13 ; Constante CR (Retorno de carro) En decimal o
LF EQU 10 ; Constante LF (Salto de l?nea) en hex es igual
BIOS EQU 10H ; Definicion de constantes o simbolos
DOS EQU 21H
TEXTO EQU 3
FIN EQU 4C00H
BIOS_10H EQU 10H
; DECLARACION DEL SEGMENTO DE DATOS
DATOS SEGMENT ; Inicio del segmento de datos
TITULO DB 'YESENIA_YARISETH_NANCY' ; Texto a imprimir
COLORES DB 11001110B ; Atributo de 'Y' los numeros binarios se pueden convertir a hexa
DB 11001111B ; Atributo de 'E' siendo dos digitos hexa el primero representa el
DB 11000001B ; Atributo de 'S' fondo y el segundo el texto.
DB 11001100B ; Atributo de 'E'
DB 11000001B ; Atributo de 'N'
DB 11001111B ; Atributo de 'I'
DB 11001011B ; Atributo de 'A'
DB 00101100B ; Atributo de '_'
DB 00101111B ; Atributo de 'Y'
DB 00101110B ; Atributo de 'A'
DB 00100001B ; Atributo de 'R'
DB 00101111B ; Atributo de 'I'
DB 00100001B ; Atributo de 'S'
DB 00101100B ; Atributo de 'E'
DB 00100001B ; Atributo de 'T'
DB 00101111B ; Atributo de 'H'
DB 00101011B ; Atributo de '_'
DB 11001100B ; Atributo de 'N'
DB 11001111B ; Atributo de 'A'
DB 11001110B ; Atributo de 'N'
DB 11000001B ; Atributo de 'C'
DB 11001111B ; Atributo de 'Y'
DATOS ENDS ; Fin del segmento de datos
; DECLARACION DEL SEGMENTO DE PILA
PILA SEGMENT STACK ; Inicio del segmento de pila
DB 64 DUP('PILA') ; Asignar espacio
PILA ENDS ; Fin del segmento de pila
; DECLARACION DEL SEGMENTO DE CODIGO
CODIGO SEGMENT ; Inicio del segmento de código
pt14_col PROC FAR ; Inicio procedimiento pe14_col
ASSUME CS:CODIGO,DS:DATOS,SS:PILA ; Indicar segmentos
MOV AX,DATOS ; Inicializar correctamente el
MOV DS,AX ; registro de datos
MOV AX,TEXTO ; Establecer modo de texto 80x25 16 colores
INT BIOS ; Interrupci?n BIOS pantalla (10H)
MOV CX,22 ; Bucle (22 caracteres)
XOR SI,SI ; Contador de caracteres (SI=0)
BUCLE:
PUSH CX ; Guardar CX (contador de bucle) en pila
MOV DX,SI ; DX=SI (DX=contador)
ADD DX,35 ; Columna=35+contador
MOV DH,12 ; Establecer fila (12)
CALL COLOCA ; Colocar el cursor
MOV AL,[SI+OFFSET TITULO] ; Obtener caracter
MOV BL,[SI+OFFSET COLORES] ; Obtener atributo
CALL COLOR ; Imprimir caracter y atributo
POP CX ; Recuperar CX (contador de bucle)
INC SI ; Incrementar contador o puntero
LOOPNZ BUCLE ; Repetir bucle mientras CX no sea 0
MOV AH,8 ; Esperar tecla
INT DOS ; Interrupcion servicios del DOS (21H)
XOR DX,DX ; Situar cursor en 0,0 (DH=0 y DL=0)
CALL COLOCA ; Interrupcion servicios del DOS (21H)
MOV AX,FIN ; Fin del programa
INT DOS ; Interrupcion servicios del DOS (21H)
pt14_col ENDP ; Fin del procedimiento pt14_col
;----------------------------------------------------------------------
; Definicion del procedimiento COLOR, que imprime un caracter en color
; Pasar en AL el codigo del caracter, y en BL el atributo
;----------------------------------------------------------------------
COLOR PROC ; Principio del procedimiento COLOR
MOV AH,9 ; Servicio que escribe caracter y atrib
XOR BH,BH ; Numero de pagina de video (BH=0)
INT BIOS ; Interrupcion BIOS pantalla (10H)
RET ; Retornar
COLOR ENDP ; Fin del procedimiento COLOR
;----------------------------------------------------------------------
; Definición del procedimiento COLOCA, que situa el cursor en la pantalla
; Pasar en DH la fila y en DL la columna
;----------------------------------------------------------------------
COLOCA PROC ; Principio del procedimiento COLOCA
MOV AH,2 ; Servicio que coloca el cursor
XOR BX,BX ; Numero de pagina de video (BH=0)
INT BIOS ; Interrupcion BIOS pantalla (10H)
RET ; Retornar
COLOCA ENDP ; Final del procedimiento COLOCA
CODIGO ENDS ; Fin del segmento de codigo
END pt14_col ; Fin del codigo e indicar direccion comienzo
No hay comentarios:
Publicar un comentario