按位读取寄存器对 - 汇编 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 位),过程是这样的:
- MOV A,B
- 将 A 右移 4 位(见下文)。这会将数字的高 4 位放入 A 的低 4 位,并清除 A 的高 4 位。所以你有一个从 0 到 15 的数字。
- 将该值转换为十六进制数字 (0-9, A-F)。我似乎记得有一些不太明显的方法可以做到这一点,但我不记得它是什么了。
- 输出该值(或将其保存在内存中以便稍后输出)。
- MOV A,B
- ANI 0x0F -- 这会将高 4 位归零,从而为您提供高字节的低四位。
- 执行第 3 步和第 4 步。
- MOV A,C
- 执行第 2、3 和 4 步
- MOV A,C
- 执行第 3 步和第 4 步
我已经有很长时间没有写任何 8080 代码了,所以我不会在这里用错误的代码来混淆你。我上面概述的步骤将满足您的需要。
请注意,我使用的 0x0F 可能不是您的汇编程序的正确语法。我正在尝试使用十进制值 15 或十六进制值 F 立即数。我不知道您的汇编程序如何表示十六进制常量。
我认为 8080 没有移位指令。但是,它确实有轮换指令。所以你要做的不是右移 4 位,而是右移四位,然后屏蔽低 4 位。即:
RAR
RAR
RAR
RAR
ANI 0x0F
我有一个十六进制值存储在寄存器对 B 中。我想通过字符读取它。例如在 B 中是 322(十六进制)我想在累加器 3 中然后是 2 然后是 2(在 ASCII 中)。这有可能吗?或者是否可以将此寄存器对存储到 "string" 中。通过字符串我的意思是这一行-> my_string: ds 30
我真的是汇编新手。
我记得,"register pair B" 是由 B 和 C 寄存器组成的。 C为低8位,B为高8位。所以如果你在 BC 中有一个值并且你想得到十六进制数字(4 位),过程是这样的:
- MOV A,B
- 将 A 右移 4 位(见下文)。这会将数字的高 4 位放入 A 的低 4 位,并清除 A 的高 4 位。所以你有一个从 0 到 15 的数字。
- 将该值转换为十六进制数字 (0-9, A-F)。我似乎记得有一些不太明显的方法可以做到这一点,但我不记得它是什么了。
- 输出该值(或将其保存在内存中以便稍后输出)。
- MOV A,B
- ANI 0x0F -- 这会将高 4 位归零,从而为您提供高字节的低四位。
- 执行第 3 步和第 4 步。
- MOV A,C
- 执行第 2、3 和 4 步
- MOV A,C
- 执行第 3 步和第 4 步
我已经有很长时间没有写任何 8080 代码了,所以我不会在这里用错误的代码来混淆你。我上面概述的步骤将满足您的需要。
请注意,我使用的 0x0F 可能不是您的汇编程序的正确语法。我正在尝试使用十进制值 15 或十六进制值 F 立即数。我不知道您的汇编程序如何表示十六进制常量。
我认为 8080 没有移位指令。但是,它确实有轮换指令。所以你要做的不是右移 4 位,而是右移四位,然后屏蔽低 4 位。即:
RAR
RAR
RAR
RAR
ANI 0x0F