【问题标题】:Extracting LSB and MSB on Z80 Assembly在 Z80 组件上提取 LSB 和 MSB
【发布时间】:2021-02-08 19:46:59
【问题描述】:

假设我在内存 0040 上有一个数据 (15H)。

我的问题是,我如何提取最重要和最不重要的位以供进一步使用?

我在Z80 User manual 上进行了查找,但一无所获。任何帮助将不胜感激

【问题讨论】:

  • 要获得 LSB,请按位使用 AND 和 1。要获得 MSB,请右移 7。这些是一般方法,不特定于 Z80。
  • Z80 确实有一个AND,所以这很容易。除了右移,您可以使用左旋转 RLCA 将 MSB 移动到 LSB,然后像以前一样使用 AND。或者,如果您想要进位标志中的结果,则不需要 AND 并且可以使用右旋转 RRCA 作为 LSB。还有BIT 指令直接通过零标志测试位。
  • 在将字节加载到 A 后,您至少有 3 个选项:1) AND a, #1,然后您的 LSB 位于 A。 2)RRCA,然后你的 LSB 在CF。 3)BIT 0, A 然后你的位在ZF 否定。
  • RLCA 然后你的 MSB 在CF。关注AND a, #1 将其保存在A。或者,使用BIT 7, A 将其放入ZF 否定。
  • 我没有投反对票,但您没有展示您从用户手册中尝试过的内容,以及您认为它不起作用的原因。

标签: assembly microcontroller z80


【解决方案1】:

我只想写下@Jester 已经向我解释过的内容

如何获得 LSB

  1. 使用与
LD A, 1
LD B, 19H ;The data
AND B     ;LSB is at register A
  1. 使用 RRCA
  2. 使用 BIT

如何获取 MSB

  1. 使用 RLCA 后跟 AND
  2. 使用 BIT

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2011-11-09
  • 2010-10-19
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多