从汇编到C发送4位数字,以LCD字符显示在LCD上

时间:2014-11-08 04:48:55

标签: c assembly

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

另外,我无法更改C文件,只能更改程序集文件。 R0将传递行显示在LCD上,R1将通过列,R2将传递ASCII字符的十六进制表示。

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

不正确,并且不会编译(可能)

但它会是这样的:

int i;
__asm__( mov i, R0)
不要担心计算机中的十六进制/十进制转换在显示之前是一样的...

答案 1 :(得分:0)

我对asm并不是很熟悉,但基本上你想在asm中重新实现itoa。有一个example here

十六进制变换将非常相似,但+ 0x48应该更改并考虑到ascii表中[a-f]字符的位置