中易网

keil程序问题,定义一个全局整型变量dat=12345,但在变量观察窗口显示却为0.

答案:2  悬赏:0  
解决时间 2021-01-19 16:30
keil程序问题,定义一个全局整型变量dat=12345,但在变量观察窗口显示却为0.
最佳答案
这可能是编译程序优化的结果,实际上,程序没有为存储空间初始化指定的值,数值直接进寄存器了,所以存储空间值为0。如果dat值会被改变,就不一样了,你试试增加一条指令dat=dat*2看看,就有值了。
追问:可以帮我区分下存储空间和寄存器吗?我暂时不是很理解你说的,加了你说的那句话后,dat的初始赋值语句也开始执行了。但只是不明白!
追答:存储空间就是在内存中开辟2个字节存放这个数,寄存器是为了加快运算速度的专用存储单元,比如51系列中的A累加器,B寄存器,R0-R7等,很多。
你可以看看编译后的汇编程序,就知道这个初值放到哪儿去了。
追问:有时跑寄存器,有时跑存储空间。这分别对应什么情况呢?在我根本不清楚的情况下,我试过把dat的定义语句放主函数外面,dat赋值语句同样会执行。dat值也不曾改变啊?但它这却跑存储空间去了,何解?
追答:这个是编译程序生成的结果,编译程序有自己的规则,不需要解释,就像一个运算,是直接用存储空间的值运算还是先送到寄存器,再运算,你是没办法控制的,除非你直接用汇编。其实这个问题也没必要关心,爱放哪儿就那儿吧。
追问:谢了,我们上单片机课,老师留给我们的问题,我们暂时还只上到很肤浅的内容,我以为这个课后“思考题”是已知知识能解决的。我想这个问题确实不应该是自己能理解的。或许只是我们理解复杂化了,或许是我老师把它想简单化了!
追答:可以看看单片机的硬件结构,里面会说到存储结构,如程序存储,RAM和寄存器等。
追问:非常感谢你,我是初学者,请问可以交个朋友吗?希望以后能在程序方面得到你的指点。我的QQ:646743653
追答:好的
全部回答
dat是uint类型,有可能超出了其最大范围。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
23个月的宝宝发育标准
用vs2015 C++MFC编写图形界面计算器
描写落日的古诗,要整首诗,3-4首,速求阿!
已知冲激响应和零状态响应 怎么求自由和强迫
什么食物含氯元素
手机出现fastboot mode怎么办
皆=みなorみんな?
为什么前任忽然不让我看他的动态了
猜迷猜36种动物:迷语是朝回日日典春衣,每日
祈福父亲早日安康的诗句
7分之2x十40=21分之10x解方程
眼镜的8位海关编码是多少
为什么有的钟表上四的表述有四竖的表述方法呢
什么叫“三套领导班子”?
阴阳师胖揍百分比,阴阳师镰鼬技能哪个好,阴
推荐资讯
中国古代历朝爱字写法从秦代到现在爱字不同字
求高人作一首独自偷欢的藏头诗
东乡县黎圩派出所怎么去啊,有事要去办理
洒一特专业美发怎么去啊,我要去那办事
Tl3842p的7脚工作电压是几伏?tl842p可以用uc
楞严经中所说五大咒 能破一切不能破的咒 只能
怎么根据奇偶性和周期来求对称轴
驼背怎样校正?
谁有好玩的游戏,求给我了,
请问大神们二手房产怎么做
所有电路都断开,漏电保护器还是会断
余江优卓国际外语学校地址在哪,我要去那里办
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?