c - 将 4 位数字从汇编发送到 C,以在 LCD 上显示为 ASCII 字符

标签 c assembly

所以标题很困惑,我很抱歉。我有一个混合语言汇编/C 项目,已完成 90%,但我陷入困境。我有一个在汇编中计算出的 4 位数字,例如 2500,存储在寄存器中为 09C4,例如 R8。我需要将每个十进制数字传递给名为 LCD_write 的 C 函数,使其以十进制格式显示在 LCD 屏幕上。如何从十六进制转换为十进制,然后将 4 位数字一次一位地传递给 C 函数?

此外,我无法更改 C 文件,只能更改汇编文件。 R0 将传递要在 LCD 上显示的行,R1 将传递列,R2 将传递 ASCII 字符的十六进制表示形式。

我知道这不是最好的描述,但如果有人可以提供帮助,我将不胜感激。

谢谢!

最佳答案

嗯,这取决于您的编译器和架构,但最简单的方法是从 R0 寄存器到某个变量进行内联移动。

不正确,并且可能无法编译

但它会是这样的:

int i;
__asm__( mov i, R0)

不用担心计算机中的十六进制/十进制转换,在显示之前它是相同的...

关于c - 将 4 位数字从汇编发送到 C,以在 LCD 上显示为 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813884/

相关文章:

c - 在eclipse中调试C程序时出错

c - C中的链表合并排序实现中丢失的节点

assembly - 为什么IA32不允许内存到内存mov?

c - 子串宏参数

C动态增长数组

performance - 为什么jnz不算循环?

Linux NASM OUTSB 段错误

assembly - 除法产生错误结果

c - GCC 在类似架构上使用 "-march=native"发出截然不同的代码

在 C 中将一个数组的元素复制到另一个数组