登陆
|
注册
|
搜索
|
最近新帖
发帖子
|
共享我的资料
|
精华帖子
|
热门话题
导航:
老古网
→
老古论坛
→
XMOS公共讨论区
→
XMOS开源项目区
→
单片机程序设计
→
嵌入式系统
→
广告区域
→
→大家早上好,昨天我写了个程序,结构如下:[carryonli]
*第14512篇: 大家早上好,昨天我写了个程序,结构如下:
楼 主:
carryonli
2003年7月17日09:11
大家早上好,昨天我写了个程序,结构如下:
org 00h
ajmp start
org 30h
start:
ajmp init
ajmp rd_sec
.
.
.
rd_sec:
.
.
ret
init:
.
.
ret
end
不知为什么,程序编译通过了,无错误,但发现当运行到init的ret后,程序不返回,而是跳到别的地方去了,不知为什么?请各位大侠帮助分析一下。
第
2
楼:
btzhy
2003年7月18日20:44
sp没有初始化,它的缺省值是07h,可能
sp没有初始化,它的缺省值是07h,可能被你的INIT程序占用了
第
3
楼:
eastzsp
2003年7月18日21:32
看看问题的根源
程序初始化的时候不要用跳转,就是跳转了也不能用RET去返回,
org 00h
ajmp start
org 30h
start:
acall init
acall rd_sec
ljmp start ;循环执行。
.
.
rd_sec:
.
.
ret
init:
.
.
ret
end
这样就没有问题了。
//**************************************
第
4
楼:
xdkjason
2003年7月19日10:33
他怎么调用子程序用跳转呢:)
第
5
楼:
bizhenke
2003年7月19日11:46
呵呵,是的,开始还没有注意!
呵呵,是的,开始还没有注意!
第
6
楼:
bizhenke
2003年7月19日11:40
你的init模块内有没有改写堆栈中的数据
你的init模块内有没有改写堆栈中的数据或者某些特殊寄存器中的数据?
第
7
楼:
Kuang-chingTsui
2003年7月19日17:31
RET指令必须与CALL指令共用。。。
第
8
楼:
avant
2003年7月19日19:12
看你的语言是51系列,ACALL和RET也不一定必须配合使用,看情况而定,要是MOV SP,#xxxxH又可以达到跳转功能
第
9
楼:
guest
2003年7月19日22:24
回复
可能是你的程序的散转长度超出了AJMP的散转范围吧?
第
10
楼:
zizzfish
2003年7月21日08:31
我的看法!
1、编译可以通过,那么AJMP是不会有问题,否则编译时会提示错误。
2、你在调用子程序AJMP那么你就不能用RET返回主程序。而也应该用AIMP跳转。
3、你就好不要用MOV SP,#XXXXH,除非你汇编高手中的高手,否则不要破坏程序的结构。
第
11
楼:
carryonli
2003年7月22日17:40
非常感谢大家,问题我找到了,就是跳转的问
非常感谢大家,问题我找到了,就是跳转的问题,acall命令应该与ret配合使用,匆忙之中犯了低级错误,给大家舔麻烦了。:)
>>>>>>对该主题发表你的看法
本主题贴数
11
,分页:
[第1页]
[上一篇主题]:
请教各位ARM学习应从什么地方入手,看些什么基础书,网上哪能下载?
[下一篇主题]:
[求助]大家看看这个延时程序