Ensamblador - Cambiar color de fondo

   
Vista:

Cambiar color de fondo

Publicado por Mike (1 intervención) el 11/03/2014 21:13:54
Saludos, necesito agregarle un colo de fondo a la pantalla en cierto punto del programa. Exactamente en la parte donde dice MENSAJE RESPECTO A LA TECLA. Toda la parte de datos esta en la libreria. Cualquier ayuda se las agradezco mucho

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
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
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
include libreria2.lib
.model small			;Modelo del programa
 
.stack 100h				;Pila 256 bytes
 
.code					; Espacio para los codigos del programa
 
 
Inicio:
        MOV     AX, @data
        MOV     DS, AX          	; Se ubica el segmento de datos
 
        MOV     AH,00            ; Selecciona modo de video
        MOV     AL,03            ; Modo de video 03H 80colx25filas
        INT     10H             ; Llama a la INT de video
 
	; Imprimir el Titulo 1
 
	    MOV     X,20
        MOV     Y,0
 
        MOV     AH,2
        MOV     DL,X
        MOV     DH,Y
        INT     10H                     ; Coloca cursor para desplegar el mensaje
 
	    MOV     AH, 9           	    ; Servicio 9 en AH = Imprimir string
        MOV     DX, OFFSET titulo1 	; Direccion del string
        INT     21h             	    ; Llamada a la interrupcion 21h DOS
 
 
        ;MOV	    AH,1			;Espera tecla por medio del DOS	INT	21H
  	    ;INT	    21H
 
        ;MOV     AH,0			    ;Selecciona modo de video
        ;MOV     AL,3			    ; Modo de video 03H 80colx25filas
        ;INT     10H
 
	; Imprimir el Titulo 2
 
	    MOV     X,20
        MOV     Y,2
 
	    MOV     AH,2
        MOV     DL,X
        MOV     DH,Y
        INT     10H
 
        MOV     AH, 9
	    LEA     DX, titulo2     	; otra forma de dar la direccion
        INT     21h
 
  	    MOV	    AH,1			;Espera tecla por medio del DOS	INT	21H
  	    INT	    21H
 
 
  	    MOV     AH,0			;Selecciona modo de video
        MOV     AL,3			; Modo de video 03H 80colx25filas
        INT     10H
 
 
        A20:
     	MOV AH,0			;Selecciona modo de video(limpiar pantalla)
        MOV AL,3
	    INT	10H
 
        MOV     X,10
        MOV     Y,1
        CALL    CURSOR
        LEA     DX,MENSAJE1
        CALL    MENSAJE
 
        MOV     X,10
        MOV     Y,3
        CALL    CURSOR
        LEA     DX,VALOR1
        CALL    MENSAJE
 
 
        MOV     X,10
        MOV     Y,4
        CALL    CURSOR
        LEA     DX,VALOR2
        CALL    MENSAJE
 
        MOV     X,10
        MOV     Y,5
        CALL    CURSOR
        LEA     DX,VALOR3
        CALL    MENSAJE
 
        MOV     X,10
        MOV     Y,6
        CALL    CURSOR
        LEA     DX,MENSAJE2
        CALL    MENSAJE
 
	    CALL 	LEER
        CALL    COMPARA
        CALL    SALIR
       	RET
ENDP
 
 
;*******************DESPLIEGA EL MENSAJE*******************************
 
MENSAJE PROC
  	    MOV	    AH,9
        INT     21H
        RET
ENDP
 
;*******************LEE DEL TECLADO************************************
 
LEER PROC
  	 MOV     AH,1
     INT     21H   ; EL DATO QUEDA EN AL
	 RET
ENDP
 
;*********************COLOCA CURSOR*************************************
 
CURSOR  PROC
        MOV     AH,2
        MOV     DL,X
        MOV     DH,Y
        INT     10H                     ;Coloca cursor para dezplegar mensaje
        RET
ENDP
 
;*********************DISCRIMINA LA TECLA*******************************
 
COMPARA PROC
        CMP     AL,31H                  ;1=31H
        JE      uno               	    ;Salta si es igual
        CMP     AL,32H                  ;2=32H
        JE      dos               	    ;Salta si es igual
        CMP     AL,33H                  ;3=33H
        JE      tres                 	;Salta si es igual
	    CMP     AL,34H                  ;4=34H
        JE      SALIR                   ;Salta si es igual
        JMP     INICIO                  ;salto incondicional
        RET
ENDP
 
;*********************SALIR DEL PROGRAMA*********************************
 
 ;SALIR: CALL SALIR1
 
SALIR   PROC
        MOV     AH,0
        MOV     AL,3
        INT     10H
        MOV     AH,4CH
        INT     21H
        RET
ENDP
 
 
OTRO	PROC
	    MOV     X,15
        MOV     Y,12
        CALL    CURSOR
        LEA     DX,MENSAJE6
        CALL    MENSAJE
	    RET
ENDP
 
 
 
;**********************MENSAJE RESPECTO A LA TECLA*************************
 
uno: MOV     AH,2
	MOV	DL,15
	MOV	DH,10
	MOV AH,0			;Selecciona modo de video(limpiar pantalla)
    MOV AL,3
 
	INT	10H			;Coloca el cursor para el  mensaje
	MOV     X,10
    MOV     Y,8
    CALL    CURSOR
    MOV  DX,OFFSET MENSAJE3	        ;Despliega  mensaje
	MOV	AH,9H
	INT	21H
	CALL 	OTRO
	MOV	AH,1
	INT	21H
	JMP	A20
 
 
 
dos: MOV     AH,2
	MOV	DL,15
	MOV	DH,10
	MOV AH,0			;Selecciona modo de video(limpiar pantalla)
    MOV AL,3
 
	INT	10H			;Coloca el cursor para el primer mensaje
	MOV     X,10
    MOV     Y,8
    CALL    CURSOR
    MOV     DX,OFFSET MENSAJE4	        ;Despliega mensaje
	MOV	AH,9H
	INT	21H
	CALL 	OTRO
	MOV	AH,1
	INT	21H
	JMP	A20
 
 
tres: MOV     AH,2
	MOV	DL,15
	MOV	DH,10
	MOV AH,0			;Selecciona modo de video(limpiar pantalla)
    MOV AL,3
	INT	10H			;Coloca el cursor para el mensaje
	MOV     X,10
    MOV     Y,8
    CALL    CURSOR
        MOV     DX,OFFSET MENSAJE5	        ;Despliega mensaje
	MOV	AH,9H
	INT	21H
	CALL 	OTRO
	MOV	AH,1
	INT	21H
	JMP	A20
 
	;MOV     AH, 4Ch			; Terminar el programa retornando al DOS
    ;INT     21h
END INICIO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cambiar color de fondo

Publicado por Pico (50 intervenciones) el 12/03/2014 18:19:17
Si lo que quieres es que a partir de ese momento escriba con otro color de fondo, con la función 09h, en bl, se lo pasas.
Si quieres que cambie el color de lo que ya está escrito, accede a la memoria de vídeo y le cambias los atributos. La memoria de vídeo en modo texto empieza en b800h en color y en b000h en monocromo. Las posiciones pares son los caracteres y las impares los atributos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar