我在keil软件 用c语言写51单片机的时候发现?
c语言里面的一个8位变量居然是和另一个8位变量一起共用一个寄存器r7,并且还是第三个16位变量的后8位。这样一来,在16位变量自减的时候前两个变量也会变化。而以上我都是仿...
c语言里面的一个8位变量居然是和另一个8位变量一起共用一个寄存器r7,并且还是第三个16位变量的后8位。这样一来,在16位变量自减的时候前两个变量也会变化。而以上我都是仿真的时候一个一个观察寄存器和变量的变化对应才发现的。
那么这样其中一个变量引起的变化不会对其他变量有影响吗,而且我在编写c的时候也不知道到底和哪几个变量共用了一个寄存器(可以自己给变量选寄存器吗?),很疑惑啊 展开
那么这样其中一个变量引起的变化不会对其他变量有影响吗,而且我在编写c的时候也不知道到底和哪几个变量共用了一个寄存器(可以自己给变量选寄存器吗?),很疑惑啊 展开
3个回答
展开全部
不会改变其他变量的值不会改变其他变量的值,因为变量的值都存储在寄存器中,在变量的值发生变化的时候,该变量所在的寄存器中的值会发生变化,而其他变量所在的寄存器中的值不会变化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接用汇编语言就不会出现这种情况的。当然用汇编语言编写时,要注意每个寄存器的变化。你用了一个 居然,怕什么呢? 除非keil把C编译成汇编不成功。但作为大公司应该考虑的,你不用担心。 事实上直接用汇编更加自由发挥,更加有效率,就不会被C所局限了。你是否全面跟踪了,最后发现担心是不必须要的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询