Z80:如何添加16位和8位寄存器?

发布于 2024-08-21 09:27:28 字数 41 浏览 9 评论 0原文

如何将带进位的 16 位和 8 位寄存器(例如 HL 和 A)相加?

How do you add a 16 and a 8 bit register with carry (for example, HL, and A)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

要走就滚别墨迹 2024-08-28 09:27:28

我想指出(卡尔·诺鲁姆)检查的答案是正确的,但不是最佳答案。
下面展示了两种策略与时钟周期的速度。
使用正确的解决方案可以节省时间,并且不会破坏第二个 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

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

I would like to point out that the checked response (by Carl Norum) is correct, but not the best answer.
The following shows the speed of the two strategies with clock cycles.
Using the right solution saves time, and won't destroy a second 16 bit register pair.

  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

However, the solution on the right does take an extra byte of code.

送君千里 2024-08-28 09:27:28

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

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

You can't do it directly. You need to copy A into a 16-bit register pair and then do the add:

LD  B, 0
LD  C, A
ADC HL, BC
温折酒 2024-08-28 09:27:28

来自 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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文