永发信息网

51单片机执行中断时是不是不将临时数据压入堆栈,比如一些临时变量。只是将断点的地址压入,

答案:2  悬赏:50  手机版
解决时间 2021-02-15 18:50
8086系列的cpu也是这样么?
最佳答案
在汇编程序中,51单片机进入中断时,只是将断点的地址压入, 其他的都需要自己保存

在C语言中又不一样, 程序会自动保护一些寄存器中的临时数据,如寄存器,ACC
全部回答
尽管51可以通过栈操作的方式传递变量,但在通过c语言编译产生的代码当中,压栈和出栈操作更多的是用于保护操作,防止子程序调用造成一些寄存器的误修改。而局部变量则尽可能使用访问速度最快的或执行代码最少的内部ram,比如工作寄存器r0~r7等。 堆栈一般是汇编语言编程时需要考虑的问题,在c语言里可以不考虑堆栈,编译器会根据情况做优化,设定堆栈的起始地址和大小。另外需要说明一下:至少在51中堆栈与ram不是独立的两个部件,堆栈空间包含于直接寻址的内部ram中,其它的cpu我不了解,就不敢说了。 其实内部ram及外部ram都可以用于保存局部变量: 1、内部直接寻址ram(data):地址0x00h->0x7f的内部ram,长度128字节 2、内部间接寻址ram(idata):地址0x80h->0xff的内部ram,长度128字节 3、可位寻址ram(bdata):地址0x20h->0x3f的内部ram,长度16字节 4、外部ram(xdata):标准空间地址0x0000-->0xffff 5、及按页访问的外部ram(pdata):一般用的不多。 软件编程人员可以根据具体要求声明变量的存储类型进而确定使用哪个区域,或者在编译选项中选择数据存储模式。如果不做特殊声明,只要资源够用,一般编译器都会自动优化选择访问速度最快的直接寻址内部ram(也就是0x00->0x7f范围内的ram)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想问下,我想考西安交大的在职研究生,同等
一个文件怎么样都删不掉
顺德乐从乐然居二手楼四房,时间2016电梯房有
浴室防水条能用在水泥地上吗
有科学家将蛋白质、核酸、糖类和脂类等物质放
二点水三点水的字有哪些
咖啡小屋地址在哪,我要去那里办事
请教esxi中多lan口怎么配置
天心区长沙遵义羊肉粉地址有谁知道?有点事想
阳台门走上轨道还是走上下轨道好?我的阳台推
干面皮机器做出来怎么回事啊中点温度高呢
美亿佳地址在哪,我要去那里办事
本科学的法学,考研什么专业好?哪个大学好?
炎陵县株洲中国人寿保险鹿原服务部地址在哪里
请问一下,我有几年没交社保了现在补交的话,
推荐资讯
汽车油表上显示汽油是什么意思?如果没有应该
广东省国家税务局通用手工发票问题。
那些食物不宜放入冰箱中?
渔民和鱼鹰的作文立意
一次函数y=kx+b图像与直线y=2x+3平行,它又与
魅族MX3更新固件之后系统所占存储变大
南县益阳桥头超市我想知道这个在什么地方
新鲜子姜能拿太阳下晒吗?
中小制造企业的定义
聚源旅社地址在什么地方,想过去办事
江淮瑞风s5要多少升机油
1910年,陆士谔在他的幻想作品《新中国》里虚
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?