Z80: Como adicionar registros de 16 e 8 bits?
Pergunta
Como você adiciona um registro de 16 e 8 bits com Carry (por exemplo, HL e A)?
Solução
Você não pode fazer isso diretamente. Você precisa copiar A em um par de registros de 16 bits e depois add:
LD B, 0
LD C, A
ADC HL, BC
Outras dicas
Gostaria de ressaltar que a resposta verificada (de Carl Norum) está correta, mas não a melhor resposta. A seguir, mostra a velocidade das duas estratégias com os ciclos de relógio. O uso da solução certa economiza tempo e não destruirá um 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
No entanto, a solução à direita obtém um byte extra de código.
A partir de http://nemesis.lonestar.org/computers/tandy/software/apps/m4/qd/opcodes.html
Add Byte with Carry-In Instructions
8080 Mnemonic Z80 Mnemonic Machine Code Operation
ADC M ADC A,(HL) 8E A <- A + (HL) + Carry
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow