duda

duda

de Raul Angel Elias Ortega -
Número de respuestas: 1

hola, profe quería preguntar sobre el ejercicio 2 del tema 4 debo pasar de mario a luigi , cambiando los colores del sprite o debe hacer de otra forma en el código ??? Y como elegir las posiciones del pixel de color rojo si estas varían según el código q va desde arriba hacia abajo  ???

;1.2 Mario y Luigi
;a) Abra el ejemplo “Draw Sprite” (Para ello, vaya a “File”, luego a “Samples”, luego a
;“Draw Sprite”).
;b) Ensamble y ejecute el programa. El mismo dibuja un “Mario Bross” por pantalla.
;c) Modifique el código de manera que en lugar de Mario Bross, el programa dibuje a
;Luigi (Luigi tiene traje verde en lugar de traje rojo). El cambio de color debe
;realizarse a nivel de código, no a nivel de constantes
 
 
JMP boot
 
vslDisplay EQU 0x300
 
sprite: 
DB "\xFF\xFF\xFF\xFF\xFF\xC4\xC4\xC4"
DB "\xC4\xC4\xFF\xFF\xFF\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\xFF\xC4\xC4\xC4\xC4"
DB "\xC4\xC4\xC4\xC4\xC4\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\xFF\x8C\x8C\x8C\xF4"
DB "\xF4\x8C\xF4\xFF\xFF\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\x8C\xF4\x8C\xF4\xF4"
DB "\xF4\x8C\xF4\xF4\xF4\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\x8C\xF4\x8C\x8C\xF4"
DB "\xF4\xF4\x8C\xF4\xF4\xF4\xFF\xFF"
DB "\xFF\xFF\xFF\x8C\x8C\xF4\xF4\xF4"
DB "\xF4\x8C\x8C\x8C\x8C\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\xFF\xFF\xF4\xF4\xF4"
DB "\xF4\xF4\xF4\xF4\xFF\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\xFF\x8C\x8C\xC4\x8C"
DB "\x8C\x8C\xFF\xFF\xFF\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\x8C\x8C\x8C\xC4\x8C"
DB "\x8C\xC4\x8C\x8C\x8C\xFF\xFF\xFF"
DB "\xFF\xFF\x8C\x8C\x8C\x8C\xC4\xC4"
DB "\xC4\xC4\x8C\x8C\x8C\x8C\xFF\xFF"
DB "\xFF\xFF\xF4\xF4\x8C\xC4\xF4\xC4"
DB "\xC4\xF4\xC4\x8C\xF4\xF4\xFF\xFF"
DB "\xFF\xFF\xF4\xF4\xF4\xC4\xC4\xC4"
DB "\xC4\xC4\xC4\xF4\xF4\xF4\xFF\xFF"
DB "\xFF\xFF\xF4\xF4\xC4\xC4\xC4\xC4"
DB "\xC4\xC4\xC4\xC4\xF4\xF4\xFF\xFF"
DB "\xFF\xFF\xFF\xFF\xC4\xC4\xC4\xFF"
DB "\xFF\xC4\xC4\xC4\xFF\xFF\xFF\xFF"
DB "\xFF\xFF\xFF\x8C\x8C\x8C\xFF\xFF"
DB "\xFF\xFF\x8C\x8C\x8C\xFF\xFF\xFF"
DB "\xFF\xFF\x8C\x8C\x8C\x8C\xFF\xFF"
DB "\xFF\xFF\x8C\x8C\x8C\x8C\xFF\xFF"
 
boot:
MOV C, sprite ; C points to the sprite
MOV D, vslDisplay ; D points to the fb
 
.loop:
MOVB AL, [C] ; Print all the pixels
MOVB [D], AL
INC C
INC D
CMP D, 0x400
JNZ .loop
HLT

En respuesta a Raul Angel Elias Ortega

Re: duda

de Pablo Godoy -
Hola Raul, la idea es reemplazar el HLT por nuevo código. Puede realizarse de varias formas. Una de las posibles soluciones es:
1) Quizar la instrucción HLT final.
2) Leer el color de cada píxel, desde el primero (0x0300) al último (0x03FF). Cuando se encuentre un pixel rojo (0xC4) reemplazarlo por verde (0x15).
3) Colocar el HLT en su nueva posición final.
Deberás crear un bucle y utilizar instrucciones de comparación (CMP) y saltos condicionales e incondicionales (JZ y JMP).
Saludos.