martes, 4 de abril de 2017

Programa #8

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