Bien pues vamos a ver que es lo que hace este código:
ORG 40000 LD HL, 16384 LD A, 162 LD (HL), A LD DE, 16385 LD BC, 6911 LDIR RET
Este código se compila, se ensambla en unos bytes, que es binario. Lo que hace este código es poner toda la pantalla con el byte 162.
Paso a paso:
ORG 40000 Es la directiva del compilador, donde se indica dónde debe compilar el código que le sigue.
LD HL, 16384 carga el valor 16384 en el registro HL(16384 = $4000 -> H=$40 L = $00)
Hay que decir que a partir de 16384 se ubica la memoria de video. Los primeros bytes son el contenido de pixels activos y no activos, y a partir de 22528 se ubican los atributos de color [1 byte por cada bloque de 8x8]
LD A, 162 carga el valor 162 en el registro A(A=162).
LD(HL), A mete el valor de A en la dirección de memoria apuntada por HL. El HL vale $4000(Hexadecimal) y A vale 162; quiere decir que en la dirección de memoria 16384 va a meter el valor 162.
LD DE, 16385 carga 16385 en el registro DE. 16835 es la siguiente dirección de vídeo, es decir, la siguiente dirección después de 16384 que se metio un 162(LD A, 162). DE suele ser un registro de "DE"stino.
LD BC, 6911 carga 6911 en el registro BC. BC suele ser el registro contador, tanto en B como en C.
LDIR es un incrementador repetido, quiere decir LoaD Incrementando Repetido. que lo que hace es leer el contenido de memoria apuntada por DE, incrementa HL y DE, decrementa BC, y se repite hasta que BC valga 0.
Es decir, lo que hace en general este código es arrastrar el 162 desde la primera dirección de memoria que le indicamos, en este caso el primer valor de HL 16384($4000 hexadecimal), pasando por 16385, 16386, etc...
Y en ámbitos generales lo que hace este programa es rellenar con el valor 162, 6912 bytes, empezando por el primer valor de HL(16384). En lugar de 6192(pixeles más atributos de color), rellena solo 6144(BC = 6143).
Otro ejemplo:
ORG 40000 LD HL, 0 LD DE, 20000 LD BC, 16 LDIR RET
En este ejemplo, copia 16 bytes desde la posición "0" de memoria, a la posición 20.000 de memoria.
No hay comentarios:
Publicar un comentario