我想把我的C程序转换成AVR汇编程序将十进制数转换为二进制数的程序。这个程序是为Atmega32a指定的. 有人能帮帮我吗?谢谢。这是我需要转换为汇编程序的程序:
int main()
{
int num, bin = 0, rem = 0, place = 1;
printf("Enter a decimal numbern");
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("%dn", bin);
return 0;
}
scanf
,printf
&Atmega不是很好的朋友:)
没有什么比十进制整数更像的了,只有整数。
转换为二进制表示您需要包含'0'
和'1'
字符的字符串。
使用这种任务的功能。此功能针对8位AVR架构进行了优化。
char *tobin(char *str, unsigned val)
{
char *buff = str;
unsigned mask = 1ULL << (sizeof(mask) * 8 - 1);
char start = 0;
while(mask)
{
char bit = !!(val && mask);
if(!start) start = bit;
if(start)
*buff++ = bit + '0';
mask >>= 1;
}
*buff = 0;
return str;
}
程序集:https://godbolt.org/z/osW6YYKbv