標(biāo)題: 對(duì)單片機(jī)C語(yǔ)言printf函數(shù)的疑惑 各位大佬健康快樂 [打印本頁(yè)]

作者: cys9981    時(shí)間: 2022-9-9 08:53
標(biāo)題: 對(duì)單片機(jī)C語(yǔ)言printf函數(shù)的疑惑 各位大佬健康快樂
對(duì)printf函數(shù)的疑惑
各位大佬健康快樂!
請(qǐng)看如下問題:
在程序中如果嵌入了匯編語(yǔ)言,則printf函數(shù)就會(huì)對(duì)浮點(diǎn)數(shù)出錯(cuò),何耶?


#include"stdio.h"
#include"reg51.h"
float xyz=123.45;
main()
{
//串口初始化();
printf("xyz=%8.3f\n",xyz);  //此時(shí)輸出正確“xyz=123.45”
while (1);
}

在程序中如果嵌入了匯編語(yǔ)言,則printf函數(shù)就會(huì)對(duì)浮點(diǎn)數(shù)出錯(cuò),何耶?

#include"stdio.h"
#include"reg51.h"
float xyz=123.45;
main()
{
//串口初始化();
#pragma asm
NOP
#pragma endasm

printf("xyz=%8.3f\n",xyz);  //此時(shí)輸出不正確:“xyz=??”
while (1);
}


作者: yzwzfyz    時(shí)間: 2022-9-9 11:11
誠(chéng)如是則需要重視了。
作者: 188610329    時(shí)間: 2022-9-9 15:44
這個(gè)問題不應(yīng)該出現(xiàn), 都插入?yún)R編了, 你 ctrl + F5 之后的東西,應(yīng)該完全能看懂。 就應(yīng)該知道  是不是只加了 一個(gè) NOP 而沒有其他變化。如果在真的仔細(xì)分析過, 提出來的問題不應(yīng)該是這樣的, 而是 兩個(gè)代碼  編譯后的 差異對(duì)比。 而能玩匯編的, 會(huì)還喜歡用 printf 的人,更是少見…… 自己隨便寫個(gè)庫(kù),不比 printf 這種傻瓜形的強(qiáng)百倍?
作者: cys9981    時(shí)間: 2022-9-10 06:53
似乎全網(wǎng)無(wú)解
作者: Hephaestus    時(shí)間: 2022-9-10 10:34
cys9981 發(fā)表于 2022-9-10 06:53
似乎全網(wǎng)無(wú)解

有仿真器用仿真器排查,沒有仿真器只能空想,當(dāng)然也可以從map文件下手。

51這個(gè)落后的體系被主流社會(huì)淘汰了20多年了,如果繭中網(wǎng)無(wú)法直接搜到你的答案,那么就是沒有直接答案,需要你排查。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1