逐位读取寄存器 - 汇编i8080

时间:2015-03-17 20:01:44

标签: assembly intel-8080

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

1 个答案:

答案 0 :(得分:1)

我记得,"注册对B"由B和C寄存器组成。 C是低8位,B包含高8位。因此,如果您在BC中有一个值并且想要获得十六进制数字(4位数),则过程类似于:

  1. MOV A,B
  2. 向右移动4个位置(见下文)。这将数字的高4位置于A的低4位,并清除A的高4位。因此,您有一个0到15的数字。
  3. 将该值转换为十六进制数字(0-9,A-F)。我似乎记得有一些非显而易见的方法,但我不记得它是什么。
  4. 输出该值(或将其保存在内存中以便稍后输出)。
  5. MOV A,B
  6. ANI 0x0F - 将高4位归零,为高位字节提供低4位。
  7. 执行第3步和第4步。
  8. MOV A,C
  9. 执行步骤2,3和4
  10. MOV A,C
  11. 执行第3步和第4步
  12. 自从我编写任何8080代码以来已经很长时间了,所以我不会在这里混淆你的代码。我上面概述的步骤将满足您的需求。

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

    我不认为8080有换班指令。但是,它确实有旋转指令。所以你做的不是向右移动4个位置是向右旋转四个位置然后屏蔽低4位。那就是:

    RAR
    RAR
    RAR
    RAR
    ANI 0x0F