Вопрос

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

Это было полезно?

Решение

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

LD  B, 0
LD  C, A
ADC HL, BC

Другие советы

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

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

От 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top