C语言 将AVR组件Atmega32a的十进制转换为二进制



我想把我的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

最新更新