Sigamos con nuestra exploración, en esta ocasión la instrucción sirve para almacenar el valor numérico de tamaño un byte, de la dirección de memoria indicada por el registro de 16 bits IX mas un incremento, en un registro de 8 bits.
Instrucción | LD r,(IX+d) |
---|---|
Tamaño | 3 Bytes |
Ciclos de Máquina | 5 Ciclo M |
Ciclos de Reloj | 19 Ciclos T |
FLAGS | N/A |
Tan sencillo como esto, ejemplos pueden ser LD A,(IX+20), LD H,(IX+AF) … o cualesquiera combinaciones que se nos ocurran.
Los FLAGS (CNPHZS) no se ven afectados por esta instrucción.
Tabla de OP-Codes
Para las variaciones de esta instrucciones, la tala de OP-Codes sería como sigue:
Mnemotécnico | OP-Code |
---|---|
LD A,(IX+d) | DD 7E XX |
LD B,(IX+d) | DD 46 XX |
LD C,(IX+d) | DD 4E XX |
LD D,(IX+d) | DD 56 XX |
LD E,(IX+d) | DD 5E XX |
LD H,(IX+d) | DD 66 XX |
LD L,(IX+d) | DD 6E XX |
En la tabla XX corresponde con el valor “d” em HEX
Lógica de ejecución de LD r,(IX+d)
A continuación, trato de explicar el funcionamiento de la instrucción, desgranando la lógica en términos humanos, pero sin llegar a bajar a nivel de ciclos como tal.
Orden | Operación | Notas |
---|---|---|
1 | Obtiene la dirección de memoria contenida en IX | Direccion = (IX) |
2 | Suma “d” a la dirección de memoria | Dirección += d |
3 | Obtiene el valor almacenado en la dirección contenida en IX+d | Valor = Contenido(Direccion) |
4 | Guarda en el registro correspondiente el valor leído de la dirección de memoria. | Registro = Valor |
Ejecución detallada por ciclos M
Detallo aquí la ejecución de la instrucción, ciclo a ciclo:
Instrucción | LD r,(IX+d) |
---|---|
M1 | OCF(4)/OCF(4) |
M2 | OD(3) |
M3 | IO(5) |
M4 | MW(3) |
M5 | – |
- IO = Internal CPU Operation
- MR = Memory Read
- MW = Memory Write
- OCF = Op Code Fetch
- OD = Operation Data Read
Bibliografía
- Z80 Users Manual JJ Carr 1980 Reston (EN, 1980) [página 244]
- Z80 Family product specifications handbook – Feb84 (EN, 1984) [pçagina 10]
- Microprocessor Technology ISBN 0835943925 (EN, 1983)
- Z80 CPU User Manual Zilog (EN, 2016)
- Z80 Instruction Set Summary version 2000c (EN, 2000)
- Curso de Código Máquina de Microhobby (ES, 1986)
- Z80 CPU Microprocessor Instant Reference Card. (EN, 1981)
- Ciclos de Máquina del Z80 (Web)
- Tabla de Z80 Opcodes