lenguaje interfaz colores

13
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6 AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS 6-1 PRÁCTICA 6 1. INTRODUCCIÓN La práctica siguiente está enfocada a que el alumno se familiarice con los valores ASCII de todas las funciones del teclado. Ya que mediante estos valores ASCII se puede obtener cualquier carácter, signo o símbolo. Además, se empieza a introducir el uso de los colores en el modo alfanumérico. 2. OBJETIVOS 2.1. El alumno aprenderá a hacer programas residentes. 2.2. El alumno aprenderá a usar el trazado de líneas y marcos en cualquier programa. 2.3. Aprenderá a usar y cambiar atributos para color. 2.4. Conocerá los códigos ASCII de todas las teclas. 2.5. Aprenderá a ampliar cualquier tipo de ventana FAMILIARIZARSE CON LOS VALORES ASCII DE TODAS LAS FUNCIONES DEL TECLADO

Upload: erik-romero

Post on 17-Jan-2016

5 views

Category:

Documents


1 download

DESCRIPTION

Los colores basicos para el emsamblador TASM de lenguaje interfaz

TRANSCRIPT

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-1

PRÁCTICA 6 1. INTRODUCCIÓN La práctica siguiente está enfocada a que el alumno se familiarice con los valores ASCII de todas las funciones del teclado. Ya que mediante estos valores ASCII se puede obtener cualquier carácter, signo o símbolo. Además, se empieza a introducir el uso de los colores en el modo alfanumérico. 2. OBJETIVOS

2.1. El alumno aprenderá a hacer programas residentes.

2.2. El alumno aprenderá a usar el trazado de líneas y marcos en cualquier programa.

2.3. Aprenderá a usar y cambiar atributos para color.

2.4. Conocerá los códigos ASCII de todas las teclas.

2.5. Aprenderá a ampliar cualquier tipo de ventana

FAMILIARIZARSE CON LOS VALORES ASCII DE TODAS LAS FUNCIONES DEL TECLADO

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-2

3. DESARROLLO 3.1 Capturar el siguiente programa con el nombre de TASCII.ASM.

; TASCII.COM R. Cortes B. 4/ago/87

Sesgo1 EQU 9*4 ;Intercepta servicio al teclado Seg1 EQU 9*4+2 ;Palabra para el segmento Ventana col * ;14 hileras

IDEAL DOSSEG MODEL tiny ;Modelo para archivos *.COM SMART CODESEG assume cs:_text,ds:_text org 100h

PROC Programa

jmp Carga

LABEL Normal Sesgo2 DW 0 Seg2 DW TABLA DB “┌─────────────────────┬─────────────────────────┬────────┐” DB “│ MAYÚSCULAS │ MINÚSCULAS │ LETRAS │ DB “│ 65 A 72 H 79 O 86 V │ 97 a 104 h 111 0 118 v │ 65 90 │ DB “│ 66 B 73 I 80 P 87 W │ 98 b 105 i 112 p 119 w │ A Z │“ DB “│ 67 C 74 J 81 Q 88 X │ 99 c 106 j 113 q 120 x │ │“ DB “│ 68 D 75 K 82 R 89 Y │ 100 d 107 k 114 r 121 y │ 97 122 │“ DB “│ 69 E 76 L 83 S 90 Z │ 101 e 108 l 115 s 122 z │ a z │“ DB “│ 70 F 77 M 84 T │ 102 f 109 m 116 t │ │ DB “│ 71 G 78 N 85 U │ 103 g 110 n 117 u │ │” DB “├─────────────────────┴──────────────────────┬──┴────────┤” DB “│ SIGNOS 38 & 42 * 45 – 58 : 61 = 64 @ │ NÚMEROS │” DB “│ 33 ! 36 $ 40 ( 43 + 46 . 59 ; 62 > │ 48 57” │” DB “│ 35 # 37 % 41 ) 47 / 60 < 63 ?” │ 0 9 │” DB “└────────────────────────────────────────────┴───────────┘” Descarga DB 1764 dup (¿) ;Área ventanas x 2

;Este programa es una adaptación autorizada de COLORES.COM escrito por R. Tavares y T. ;Maldonado S. Es un ejemplo de programa residente y a la vez constituye una utilería valiosa ;para recordar caracteres especialmente comprendidos entre 1 y 255. Se ejecuta el programa, y;al accionarse la combinación Alt-Shift izquierdo se despliega una tabla que contiene los;códigos. Con cualquier tecla se suprime la tabla. Adaptado para IDEAL de turbo assembler por ;S. Saucedo, Ene/93. ;Ensamblar y ligar mediante ; tasm tascii ; tlink /t tascii

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-3

PROC Inicia

pushf ;Almacena ventanas call [dword cs:Sesgo2] push dx ax ds si ;Salva todos los registros para cuidar el despliegue push cx di es bx ;Que está activo mov ax,0040h ;40h para mov ds,ax ;segmento de datos mov si,0017h ;inversión de video mov al,,[si] and al,10 ;Combinación Alt-Shift izquierdo cmp al,10 ;¿Se accionó? Jnz Sale ;Salto corto Call Prepara ;Llama a procedimiento Call Final Jmp Sale ;Salto largo

PROC Prepara ;Salva RAM de video en buffer Descarga

mov ax,0b800h ;Apunta a RAM de video mov es,ax push cs ;Salva segmento de código pop ds ;Recupera segmentos de datos mov si,offset Descarga mov di,0 mov cx,Area ;Contador área = 14*64 mov bx,1 mov dx,0

etiq1:

mov al,[es:di] ;Trae carácter ASCII mov [si],al ;Lo salva inc di ;Ajusta apuntadores inc si mov al,[es:di] ;Hace lo mismo para atributo mov [si],al inc di ;Ajusta apuntador y contador inc si inc dx cmp dx,62 ;¿Llegó a 63 ? jbe etiq2 ;Si, salta mov ax,160 ;160 bytes por fila mul bx mov di,ax inc bx ;Aumenta fila

etiq2:

loop etiq1 ret

ENDP Prepara

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-4

Sale:

Jmp Salida

PROC Ventana ;Exhibe tabla ASCII extendida

mov si,offset TABLA ;Apunta a la tabla de ASCII mov di,0 mov cx,Area ;Contador mov bx,1 ;Fila 1 mov dx,0 ;Columna 0

@@10:

mov al,[si] ;Trae código ASCII mov [es:di],al ;Lo pone en RAM de video inc di mov al,74h ;Atributo (rojo sobre blanco) mov [es:di],al ;Lo pone en RAM de video inc di inc si inc dx ;Incrementa columna cmp dx,62 jbe @@20 mov dx,1 mov ax,160 ;160 bytes por fila mul bx ;Multiplica por número de fila mov di,ax ;ES:DI apunta a RAM de video inc bx

@@20:

loop @@10 ret

ENDP Ventana ; Repone ventana original cuando se oprime una tecla.. PROC Final

mov ah,0 ;Espera a que se accione una tecla int 16h ;Para borrar la tabla mov si,offset Descarga mov di,0 mov cx,Area mov bx,1 mov dx,0

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-5

@@10:

mov sb ;Trae carácter y lo pone en RAM de video ;e incrementa apuntadores mov sb ;Trae atributo y lo pone en RAM de video inc dx ;Incrementa columna cmp dx,62 ;¿Llegó al final? Jbe @@20 ;No, brinca mov dx,1 ;Otra fila mov ax,160 mul bx mov di,ax inc bx ;Aumenta fila

@@20:

loop @@10 ret

ENDP Final Salida:

pop bx es di cx ;Recupera los registros pop si ds ax dx iret ;Retorno de IRQ9

ENDP Inicia LABEL Fin Resid DB ‘El programa con tabla ASCII quedó residente’,13,10 DB ‘Se activa con Alt-Shift izquierda’,’s’ YaResid DB ‘El programa tabla ASCII ya está residente’,13,10,’s’ ; Esta parte del programa corre una vez y deja residente a INICIA.. PROC Carga

or ax.ax ;Apunta a parte baja de RAM mov ds,ax ;Con DS:SI cmp [byte 4dfh],123 ;¿Ya residente? jne @@10 ;No, salta mov ax,cs ;Avisa que ya está residente mov ds,ax mov ah,9 mov dx,offset YaResid int 21h ;Saca cadena mov ax,4c00h int 21h ;Regreso normal a DOS

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-6

@@10:

mov [byte 4dfh],123 ;Pone bandera. Deshabilita interrupciones mov si,Sesgo1 ;Trae vector mov ax,[si] mov [cs:Sesgo2]ax ;Salva sesgo de vector mov si,Sesgo1 mov ax,[si[ ;Trae segmento de vector mov [cs,Seg2],ax ;Lo salva mov [word ptr ds:Sesgo1],offset Inicia mov ax,cs mov [ds:Seg1],ax sti ;Habilita interrupciones

; Limpia la pantalla

mov cx,0 ;Vértice superior izquierdo mov dx,184fh mov al,0 ;Toda la pantalla mov bh,15 ;Sigue blanco sobre negro mov ah,6 ;Función de movimiento de pantalla int 10h ;Llamada a BIOS

; Ubicar el cursor

mov bh,0 ;Página #0 mov dx,0 ;Renglón 0, columna 0 mov ah,2 ;Función de ubicación int 10h ;llamada a BIOS mov ax,cs mov ds,ax mov ah,9 mov dx,offset Resid int 21h ;Avisa que instaló TASCII mov dx,offset Fin int 27h ;Queda residente int 20h ;Terminación para COM

ENDP Carga ENDP Programa

END Programa ;Fin del programa TASCII.ASM

3.2 Ensamblar el programa anterior mediante:

C:\>tasm /zi tascii

3.3 Ligar el programa TASCII mediante:

C:\>tlink /t tascii

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-7

3.4 Ejecutar el programa anterior mediante:

C:\>tascii

4. TAREAS 4.1 Cambiar de color la tabla ASCII, usando la tabla dada al final y que el cuadro quede

más centrado en la pantalla. 4.2 Ampliar la tabla de valores ASCII con todas las funciones del teclado. 4.3 Modificar la información exhibida para mostrar los caracteres ASCII para trazado de

líneas y marcos. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █ 218 196 194 191 █ 201 202 187 █ █ ┌ ─ ┬ ┐ █ ╔ ╦ ╗ █ █ █ █ █ 179 │ █ █ █ █ █ █ 195 ├ ┼ ┤ 180 █ 204 ╠ ╬ ╣ 185 █ █ █ 206 █ █ █ █ █ └ ┴ ┘ █ ╚ ╩ ╝ █ █ 192 193 217 █ 200 202 188 █ █ █ █ █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ █ 213 205 209 184 █ 214 210 183 █ █ ╒ ═ ╥ ╕ █ ╓ ╥ ╖ █ █ █ █ █ █ 186 ║ █ █ █ █ █ 198 ╞ ╪ ╡ 181 █ 199 ╟ ╪ ╢ 182 █ █ █ █ █ ╘ ╧ ╛ █ ╙ ╨ ╜ █ █ 212 207 190 █ 211 208 189 █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ▄ ▌ ▐ ▀ 219 220 221 222 223

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-8

TABLA PARA ATRIBUTOS DE COLOR

FRENTE FONDO VALOR EN HEXADECIMAL

VALOR EN DECIMAL

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro

Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro Negro azul azul azul azul azul azul azul azul azul azul azul azul azul azul azul azul

verde verde verde verde verde verde verde verde verde verde verde verde verde verde verde verde cian

00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH 1EH 1FH 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 30H

0 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 44 45 46 47 48

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-9

FRENTE FONDO VALOR EN HEXADECIMAL

VALOR EN DECIMAL

azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian

cian cian cian cian cian cian cian cian cian cian cian cian cian cian cian rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo rojo

magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta magenta

café café café café

31H 32H 33H 34H 35H 36H 37H 38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 50H 51H 52H 53H 54H 55H 56H 57H 58H 59H 5AH 5BH 5CH 5DH 5EH 5FH 60H 61H 62H 63H

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 87 88 89 90 91 92 93 94 95 96 97 98 99

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-10

FRENTE FONDO VALOR EN HEXADECIMAL

VALOR EN DECIMAL

rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

negro azul verde cian rojo magenta café blanco gris azul intenso verde intenso cian intenso rojo intenso magenta intenso amarillo blanco brilloso

café café café café café café café café café café café café

blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco blanco

64H 65H 66H 67H 68H 69H 6AH 6BH 6CH 6DH 6EH 6FH 70H 71H 72H 73H 74H 75H 76H 77H 78H 79H 7AH 7BH 7CH 7DH 7EH 7FH

100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-11

MODO ALFANUMÉRICO (TEXTO) En el modo alfanumérico o de texto, cada posición de despegue de carácter se define mediante dos bytes en el buffer del adaptador y el esquema del byte de atributo es el siguiente:

Las letras R, G y B representa los colores rojo, verde y azul, respectivamente: Se conserva esta nomenclatura inglesa debido a que en el mercado se ofrecen monitores de color bajo estas características. Los bits de centelleo e intensidad se aplican en el primer plano (en el carácter que se despliega). En el modo de texto, el adaptador de color produce despliegues con fondo dependiendo del byte de atributo El fondo puede tener 8 colores, dados por las diferentes combinaciones de los bits R, G y B (000 a 111), y el primer plano puede tener 16 colores porque se incluye el bit de intensidad (0000 a 1111). En la siguiente tabla se muestran los valores de color para el primer plano.

I R G B COLOR 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

NEGRO AZUL VERDE CIAN ROJO MAGENTA CAFÉ BLANCO GRIS AZUL CLARO VERDE CLARO CIAN CLARO ROJO CLARO MAGENTA CLARO AMARILLO BLANCO (alta intensidad)

Bit No.

Atributo

7 6 5 4 3 2 1 0 ----

C R G B I R G B ----

CENTELLEO

COLOR DE FONDO

INTENSIDAD

COLOR DE PRIMER PLANO

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

6-12

Algunos ejemplos de bytes de atributo son los siguientes:

BINARIO CRGB IRGB DEC HEX COLOR 0000 0001 1110 1001

0001 0100 0101 0110

01 20

229 150

01 14 E5 96

AZUL/NEGRO ROJO/AZUL MAGENTA/AMARILLO CAFÉ/AZUL CLARO

EJEMPLOS DE CORRIDA DE TASCII C:\SEM386>TASCII El programa con tabla ASCII quedó residente. Se activa con Alt-Shft izquierda C:\SEM386>TASCII El programa tabla ASCII ya estaba residente ──

EJEMPLO DE ACTIVACIÓN CON ALT-SHFT IZQ: ASÍ SE VE EN PANTALLA ┌────────────────────────────────────────────────────────────────────┐ │╔═════════════════════╦═════════════════════════╦═══════╗ │ │║ MAYÚSCULAS ║ minúsculas ║LETRAS ║ │ │║ 65 A 72 H 79 O 86 V ║ 97 a 104 h 111 o 118 v ║ 65..90║ │ │║ 66 B 73 I 80 P 87 W ║ 98 b 105 i 112 p 119 w ║ A z ║ ante’0’ │ │║ 67 C 74 J 81 Q 88 X ║ 99 c 106 j 113 q 120 x ║ ║ │ │║ 68 D 75 K 82 R 89 Y ║ 100 d 107 k 114 r 121 y ║ 97-122║ azul’,0 │ │║ 69 E 76 L 83 S 90 Z ║ 101 e 108 l 115 s 122 z ║ a z ║ │ │║ 70 F 77 M 84 T ║ 102 f 109 m 116 t ║ ║ 0’,0 │ │║ 71 G 78 N 85 U ║ 103 g 110 n 117 u ║ ║ ’,0 │ │╠═════════════════════╩══════════════╦══════════╩═══════╣ │ │║ SIGNOS 38 & 42 * 45 – 58 : 61 = ║ NÚMEROS ║ │ │║ 33 ¡ 36 $ 40 ( 43 + 46 . 59 ; 62 > ║ 48...57 ║ │ │║ 34 # 37 % 41 ) 47 / 60 < 63 ¿ ║ 0 P ║ │ │╚════════════════════════════════════╩══════════════════╝ │ │ │ │ CODESEG │ │; De CADENAS,OBJ y MANCADE.OBJ │ │ EXTRN SacaCadena:proc,LargoCad:proa │ │ │ │; De VIDEO.OBJ │ │ EXTRN IniciaPan:proc,PanIrXY:proc,PanLimpRect:proa │ │ EXTRN PanPoneCar:proc,FijaFondo:proc,FijaFrente:proa │ │ EXTRN PanPoneCad:proc,QuitaBrillo:proc,PoneBrillo:proa │ │ EXTRN PoneDest:proc,QuitaDest:proa │ └────────────────────────────────────────────────────────────────────┘

Nombre de archivo: practica 6 ensamblador 80386 Directorio: C:\Computacion V\practicas 80386 Plantilla: C:\WINDOWS\Application

Data\Microsoft\Plantillas\Normal.dot Título: PRÁCTICA 6 Asunto: Prácticas de laboratorio de Computación V Autor: M. en C. Salvador Saucedo Flores Palabras clave: Comentarios: Fecha de creación: 12/07/02 09:49 A.M. Cambio número: 45 Guardado el: 30/07/02 10:28 A.M. Guardado por: Pablo Fuentes Ramos Tiempo de edición: 889 minutos Impreso el: 30/07/02 10:28 A.M. Última impresión completa Número de páginas: 12 Número de palabras: 2,056 (aprox.) Número de caracteres: 11,721 (aprox.)