ASM: Ejecuar un JP a una dirección de memoria almacenada en otra (puntero)

Página 3/3
1 | 2 |

Por theNestruo

Expert (106)

Imagen del theNestruo

04-08-2019, 11:56

Manel46 wrote:
theNestruo wrote:

Quizá me expliqué mal. No quería decir que "JP HL" exista, sino que el mnemónico de "JP (HL)" debería haber sido "JP HL", ya que la instrucción no salta a (HL) (a la dirección de memoria contenida en la dirección de memoria apuntada por HL), sino a HL (la dirección de memoria contenida en HL).

No. Tanto si es JP (HL) como JP HL, salta a la dirección contenida en (HL).
Esto lo usé hace tiempo, para arrancar una rom. Los dos primeros bytes son el indicativo de rom, #41,#42 ( A, B), y los dos siguentes, es la dirección de inicio. O sea que haciendo:
LD HL,#4002
JP (HL)
Arrancamos la rom.
Una rom se arranca sola, por supuesto. Esto era en un cargador de roms especial.

Insisto en que no es así. "JP (HL)" no salta a la dirección contenida en (HL); salta a la dirección contenida en HL (sin indirección).
El ejemplo de código que has puesto no ejectua la dirección contenida en $4002; simplemente salta a $4002.
¿Es posible que el código fuera en realidad "LD HL,($4002) / JP (HL)"?

Por Manel46

Champion (417)

Imagen del Manel46

04-08-2019, 12:18

theNestruo wrote:

¿Es posible que el código fuera en realidad "LD HL,($4002) / JP (HL)"?

Si, tienes razón. Así lo hacia.

Página 3/3
1 | 2 |