所以标题令人困惑,我向你道歉。我有一个混合语言汇编语言/C项目,已经完成了90%,但我被卡住了。我有一个用汇编计算的4位数,比方说2500,存储在寄存器中,比如R8中的09C4。我需要将每个十进制数字传递给一个名为LCD_write的C函数,使其以十进制格式显示在液晶屏上。如何从十六进制转换为十进制,然后将4位数一次传递给一个C函数?
另外,我不能更改C文件,只能更改程序集文件。R0将传递要在液晶屏上显示的行,R1将传递列,R2将传递ASCII码字符的十六进制表示。
我知道这不是最好的描述,但如果有人能帮助我,我将非常感激。
谢谢!
发布于 2014-11-08 13:22:36
这取决于你的编译器和arch,但最简单的方法是从R0寄存器到某个变量的内联移动。
不正确,并且不会编译(可能)
但它会是这样的:
int i;
__asm__( mov i, R0)不要担心十六进制/十进制在计算机中的转换,它是一样的,直到它被显示出来……
发布于 2014-11-08 13:01:19
我对asm不是很熟悉,但基本上你想在asm中重新实现itoa。有一个example here
十六进制转换将非常相似,但+0x48应更改并考虑a-f字符在ascii表中的位置。
https://stackoverflow.com/questions/26813884
复制相似问题