Z80: Как добавить 16- и 8-битные регистры? - PullRequest
22 голосов
/ 12 февраля 2010

Как добавить регистр 16 и 8 бит с переносом (например, HL и A)?

Ответы [ 3 ]

25 голосов
/ 27 июля 2010

Я хотел бы отметить, что проверенный ответ (Карл Норум) является правильным, но не лучшим ответом. Ниже показана скорость двух стратегий с тактовыми циклами. Использование правильного решения экономит время и не разрушает вторую пару 16-битных регистров.

  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

Однако для решения справа требуется дополнительный байт кода.

14 голосов
/ 12 февраля 2010

Вы не можете сделать это напрямую. Вам нужно скопировать A в 16-битную пару регистров, а затем выполнить сложение:

LD  B, 0
LD  C, A
ADC HL, BC
0 голосов
/ 12 февраля 2010

С 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
...