OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2562|回复: 9

stm32汇编初学寻求些帮助,谢谢

[复制链接]

20

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-27
在线时间
40 小时
发表于 2018-8-29 14:18:26 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 qq455717338 于 2018-8-29 14:20 编辑

其实我就是想看一看压栈和出栈的情况,结果都编译不过,因为只能看懂部分汇编,从来没编译过所有不知道错在那了。

我主要想研究的问题是,权威指南说的,“不管在寄存器中,寄存器序号是什么顺序,汇编都会从大到小出栈”

PUSH {R0-R2}  ;这个是不是 压栈顺序就是 R2,R1,R0
PUSH {R3-R5,R8,R12} ;压栈顺序就是 R12,R8,R5,R4,R3

POP {R0-R2} ;按照权威指南的说法这的出栈是不是 R0,R1,R2但是,此时值是不是就换了,R0=R3,R1=R4,R2=R5
POP {R3-R5,R8,R12}
{如果不交换值 pop的顺序不应该 是 POP{R3-R5,R8,R12}  POP {R0-R2}吗}
我的理解有错吗?

然后希望各位大大告诉我 汇编错在那,或者告诉我需要看什么书籍,谢谢.......

权威指南疑惑的地方

权威指南疑惑的地方

报错

报错

内嵌C代码

内嵌C代码

最佳答案

查看完整内容[请看2#楼]

PUSH {R0-R2}; PUSH {R3-R5,R8,R12} ; “”“”“” POP {R0-R2} ; POP {R3-R5,R8,R12}; 这样就一定错, 正确的是 PUSH {R0-R2}; PUSH {R3-R5,R8,R12} ; “”“”“” POP {R3-R5,R8,R12}; POP {R0-R2} ; 栈是后进先出的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-29 14:18:27 | 显示全部楼层
PUSH {R0-R2};
PUSH {R3-R5,R8,R12} ;
    “”“”“”
POP {R0-R2} ;
POP {R3-R5,R8,R12};

这样就一定错, 正确的是
PUSH {R0-R2};
PUSH {R3-R5,R8,R12} ;
    “”“”“”
POP {R3-R5,R8,R12};
POP {R0-R2} ;

栈是后进先出的
回复

使用道具 举报

20

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-27
在线时间
40 小时
 楼主| 发表于 2018-8-29 16:36:59 | 显示全部楼层
。。。
回复

使用道具 举报

20

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-27
在线时间
40 小时
 楼主| 发表于 2018-8-29 20:27:14 | 显示全部楼层
。。。。。。
回复

使用道具 举报

2

主题

711

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2018-8-29 21:36:13 | 显示全部楼层

兄弟啊,内嵌汇编不是这样写的吧!   
森罗万象
回复

使用道具 举报

2

主题

711

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2018-8-29 21:37:33 | 显示全部楼层
xiaotaotao 发表于 2018-8-29 21:36
兄弟啊,内嵌汇编不是这样写的吧!

建议你先看看ARM 的C语言内嵌汇编。
森罗万象
回复

使用道具 举报

2

主题

711

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2018-8-29 21:41:07 | 显示全部楼层
入栈的顺序应该是前面的先入栈,不过前后谁先入栈都无所谓了,一定是按照顺序来的;先入栈的后出栈。
森罗万象
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-29 21:51:17 | 显示全部楼层
PUSH {R0-R2}  

POP {R0-R2}   这是正确的, 顺序是不会错

PUSH {R3-R5,R8,R12}

POP {R3-R5,R8,R12}  这也是正确的, 顺序也是不会错
回复

使用道具 举报

20

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-27
在线时间
40 小时
 楼主| 发表于 2018-8-29 23:02:01 | 显示全部楼层
edmund1234 发表于 2018-8-29 21:54
PUSH {R0-R2};
PUSH {R3-R5,R8,R12} ;
    “”“”“”

好的谢谢
回复

使用道具 举报

20

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-27
在线时间
40 小时
 楼主| 发表于 2018-8-29 23:03:36 | 显示全部楼层
xiaotaotao 发表于 2018-8-29 21:37
建议你先看看ARM 的C语言内嵌汇编。

好的,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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