找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1600|回复: 4
打印 上一主题 下一主题
收起左侧

对单片机C语言printf函数的疑惑 各位大佬健康快乐

[复制链接]
跳转到指定楼层
楼主
ID:362599 发表于 2022-9-9 08:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对printf函数的疑惑
各位大佬健康快乐!
请看如下问题:
在程序中如果嵌入了汇编语言,则printf函数就会对浮点数出错,何耶?


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

在程序中如果嵌入了汇编语言,则printf函数就会对浮点数出错,何耶?

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

printf("xyz=%8.3f\n",xyz);  //此时输出不正确:“xyz=??”
while (1);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2022-9-9 11:11 | 只看该作者
诚如是则需要重视了。
回复

使用道具 举报

板凳
ID:624769 发表于 2022-9-9 15:44 | 只看该作者
这个问题不应该出现, 都插入汇编了, 你 ctrl + F5 之后的东西,应该完全能看懂。 就应该知道  是不是只加了 一个 NOP 而没有其他变化。如果在真的仔细分析过, 提出来的问题不应该是这样的, 而是 两个代码  编译后的 差异对比。 而能玩汇编的, 会还喜欢用 printf 的人,更是少见…… 自己随便写个库,不比 printf 这种傻瓜形的强百倍?
回复

使用道具 举报

地板
ID:362599 发表于 2022-9-10 06:53 | 只看该作者
似乎全网无解
回复

使用道具 举报

5#
ID:883242 发表于 2022-9-10 10:34 | 只看该作者

有仿真器用仿真器排查,没有仿真器只能空想,当然也可以从map文件下手。

51这个落后的体系被主流社会淘汰了20多年了,如果茧中网无法直接搜到你的答案,那么就是没有直接答案,需要你排查。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表