打印
[STM32F3]

高手看看那里错了?

[复制链接]
995|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gzzcq|  楼主 | 2015-1-6 17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gzzcq 于 2015-1-7 10:31 编辑

PUSH        {R0,R1}
LDR                R0,=0x08000190
LDR                R1,[R0]
PUSH        {R1}
POP                {R0,R1,PC}
注:0x08000190地址出存放了另一个函数的入口地址,但跳不过去,是什么原因?
沙发
gzzcq|  楼主 | 2015-1-6 22:12 | 只看该作者
这段程序在堆栈是r0,r1,r1这样存放吗?
出栈数据是否对应到了r0,r1,pc中?

使用特权

评论回复
板凳
zh113214| | 2015-1-6 23:07 | 只看该作者
额 ,对微机原理现在都忘得差不多了。。。

使用特权

评论回复
地板
pattywu| | 2015-1-7 00:15 | 只看该作者
最低位是为什么1,不是0.

使用特权

评论回复
5
gzzcq|  楼主 | 2015-1-7 10:25 | 只看该作者
我把代码改成如下:
PUSH        {R0,R1,LR}
                                LDR                R0,=0x08000190
                                LDR                R1,[R0]
                                STR                R1,[SP,#8]
                                POP                {R0,R1,PC}
现在可以调用函数了,但现在又有个新问题,上面这段调用语句和地址0x08000190
存放的函数地址是在同一个工程的,通过上面这段语句可以调用函数,
但如果我在B工程里面也写上面同样的语句,又调用不了函数了,是什么原因?

使用特权

评论回复
6
SLHSu37| | 2015-1-7 10:40 | 只看该作者
太复杂····

使用特权

评论回复
7
airwill| | 2015-1-7 10:56 | 只看该作者
PUSH        {R0,R1}
LDR                R0,=0x08000190
LDR                R1,[R0]
BLX                 R1

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

34

帖子

0

粉丝