Z80: Как добавить регистры на 16 и 8 битов?

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

23
задан Martin 28 February 2010 в 14:56
поделиться

3 ответа

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

LD  B, 0
LD  C, A
ADC HL, BC
14
ответ дан 29 November 2019 в 02:19
поделиться

From 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
-4
ответ дан 29 November 2019 в 02:19
поделиться

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

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

26
ответ дан 29 November 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: