Letrero con colores

Anuncio
pe14_col.asm
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
1 / 3
;===========================================================================
;===========================================================================
; PROGRAMA
: pe14_col.asm
; FUNCION
: Imprime un texto utilizando colores.
; REALIZADO POR
: Prof. Juan Juárez Fuentes
; COMPILADOR EN EL QUE SE EJECUTO: TASM 5.0
; FECHA
: 20091111175644
;===========================================================================
;===========================================================================
; 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
;===========================================================================
; DECLARACION DEL SEGMENTO DE DATOS
;===========================================================================
DATOS SEGMENT
; Inicio del segmento de datos
;----------------------------------------------------------------------TITULO DB 'ENSAMBLADOR'
; Texto a imprimir
COLORES DB 01001110B
; Atributo de 'E' los numeros binarios se pueden convertir a hexa
DB 01101111B
; Atributo de 'N' siendo dos digitos hexa el primero representa el
DB 00110001B
; Atributo de 'S' fondo y el segundo el texto.
DB 01011100B
; Atributo de 'A'
DB 00110001B
; Atributo de 'M'
DB 01011111B
; Atributo de 'B'
DB 01101011B
; Atributo de 'L'
DB 01011100B
; Atributo de 'A'
DB 01101111B
; Atributo de 'D'
DB 01001110B
; Atributo de 'O'
DB 00110001B
; Atributo de 'R'
;----------------------------------------------------------------------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
;-----------------------------------------------------------------------
November 13, 2012
Crimson Editor
pe14_col.asm
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
2 / 3
PILA ENDS
; Fin del segmento de pila
;===========================================================================
; DECLARACION DEL SEGMENTO DE CODIGO
;===========================================================================
CODIGO SEGMENT
; Inicio del segmento de c¢digo
;----------------------------------------------------------------------pe14_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,11
; Bucle (11 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)
pe14_col ENDP
; Fin del procedimiento pe14_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)
November 13, 2012
Crimson Editor
pe14_col.asm
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
3 / 3
RET
; Retornar
COLOR ENDP
; Fin del procedimiento COLOR
;---------------------------------------------------------------------; Definici¢n del procedimiento COLOCA, que sit£a 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 pe14_col
; Fin del codigo e indicar direccion comienzo
;===========================================================================
;===========================================================================
;===========================================================================
November 13, 2012
Crimson Editor
Descargar