【发布时间】:2021-11-28 18:53:43
【问题描述】:
我想将我的 C 程序转换为 AVR 汇编 程序,该程序将十进制数转换为二进制数。该程序是为 Atmega32a 指定的。有人能帮我吗 ?谢谢你。 这是我需要转换为 Asssembly 的程序:
int main()
{
int num, bin = 0, rem = 0, place = 1;
printf("Enter a decimal number\n");
scanf("%d", &num);
printf("\nBinary equivalent of %d is ", num);
while(num)
{
rem = num % 2;
num = num / 2;
bin = bin + (rem * place);
place = place * 10;
}
printf("%d\n", bin);
return 0;
}
【问题讨论】:
-
假设您实际上想要
unsigned int,因为负数的num % 2将是0 或-1。此外,通常人们会转换为一串 ASCII 数字,而不是一个巨大的十进制数字,它与原始数字具有相同的 base-10 数字具有 base-2 数字。你最终想打印它,所以你的目标是最终在char buffer[17]上使用printf("%d\n")而不是puts,这只会让事情变得更难 -
使用编译器。将源代码转换为汇编是编译器所做的。
标签: c assembly binary avr atmega32