按位读取寄存器对 - 汇编 i8080

Read register pair by bits - assembly i8080

我有一个十六进制值存储在寄存器对 B 中。我想通过字符读取它。例如在 B 中是 322(十六进制)我想在累加器 3 中然后是 2 然后是 2(在 ASCII 中)。这有可能吗?或者是否可以将此寄存器对存储到 "string" 中。通过字符串我的意思是这一行-> my_string: ds 30 我真的是汇编新手。

我记得,"register pair B" 是由 B 和 C 寄存器组成的。 C为低8位,B为高8位。所以如果你在 BC 中有一个值并且你想得到十六进制数字(4 位),过程是这样的:

  1. MOV A,B
  2. 将 A 右移 4 位(见下文)。这会将数字的高 4 位放入 A 的低 4 位,并清除 A 的高 4 位。所以你有一个从 0 到 15 的数字。
  3. 将该值转换为十六进制数字 (0-9, A-F)。我似乎记得有一些不太明显的方法可以做到这一点,但我不记得它是什么了。
  4. 输出该值(或将其保存在内存中以便稍后输出)。
  5. MOV A,B
  6. ANI 0x0F -- 这会将高 4 位归零,从而为您提供高字节的低四位。
  7. 执行第 3 步和第 4 步。
  8. MOV A,C
  9. 执行第 2、3 和 4 步
  10. MOV A,C
  11. 执行第 3 步和第 4 步

我已经有很长时间没有写任何 8080 代码了,所以我不会在这里用错误的代码来混淆你。我上面概述的步骤将满足您的需要。

请注意,我使用的 0x0F 可能不是您的汇编程序的正确语法。我正在尝试使用十进制值 15 或十六进制值 F 立即数。我不知道您的汇编程序如何表示十六进制常量。

我认为 8080 没有移位指令。但是,它确实有轮换指令。所以你要做的不是右移 4 位,而是右移四位,然后屏蔽低 4 位。即:

RAR
RAR
RAR
RAR
ANI 0x0F