Z80:Как добавить 16- и 8-битные регистры?
Вопрос
Как добавить 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
Не связан с StackOverflow