23

如何添加一个 16 位和一个 8 位的带进位寄存器(例如 HL 和 A)?

4

3 回答 3

28

我想指出,检查过的回复(由 Carl Norum 撰写)是正确的,但不是最佳答案。下面显示了两种策略与时钟周期的速度。使用正确的解决方案可以节省时间,并且不会破坏第二个 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

但是,右侧的解决方案确实需要额外的代码字节。

于 2010-07-26T22:12:10.927 回答
14

你不能直接做。您需要将 A 复制到 16 位寄存器对中,然后添加:

LD  B, 0
LD  C, A
ADC HL, BC
于 2010-02-11T21:44:16.910 回答
-4

来自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
于 2010-02-11T21:44:28.670 回答