Z80: Cómo agregar registros 16 y 8 bits?
Pregunta
¿Cómo agregar un 16 y un 8 bits se registra en el transporte (por ejemplo, NS, y A)?
Solución
No se puede hacer directamente. Es necesario copiar A en un par de registros de 16 bits y luego hacer el complemento:
LD B, 0
LD C, A
ADC HL, BC
Otros consejos
Me gustaría señalar que la respuesta marcada (por Carl Norum) es correcta, pero no es la mejor respuesta. A continuación se muestra la velocidad de las dos estrategias con ciclos de reloj. Utilizando la solución adecuada ahorra tiempo, y no va a destruir un segundo par de registros de 16 bits.
4 ld c,a 4 add a,l
7 ld b,0 4 ld l,a
11 add hl,bc 4 adc a,h
4 sub l
4 ld h,a
Sin embargo, la solución a la derecha embargo, toma un byte de código adicional.
Add Byte with Carry-In Instructions
8080 Mnemonic Z80 Mnemonic Machine Code Operation
ADC M ADC A,(HL) 8E A <- A + (HL) + Carry
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow