Pergunta

Como você adiciona um registro de 16 e 8 bits com Carry (por exemplo, HL e A)?

Foi útil?

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
scroll top