论坛风格切换切换到宽版
  • 3130阅读
  • 6回复

请教一个pc指针的问题 [复制链接]

上一主题 下一主题
离线BG4ABM
 
发帖
1139
只看楼主 倒序阅读 0楼 发表于: 2006-02-25
有些程序在end前要加一个ljmp $,否则pc指针就会跑到外部rom中去,如果在外部rom中跑完了后,是停在那里呢,还是会回到程序的开始呢?
离线BG7IGJ
发帖
1998
只看该作者 1楼 发表于: 2006-02-25
ljmp $ 是一条死循环程序, 就是 不停运行 这条指命,其他的什么也不做
离线BG4ABM
发帖
1139
只看该作者 2楼 发表于: 2006-02-25
'
ljmp $ 是一条死循环程序, 就是 不停运行 这条指命,其他的什么也不做
'
我知道,我只是不明白指针如果跑到外面去了后还会回来吗。
离线XLDZZ
发帖
443
只看该作者 3楼 发表于: 2006-02-25
你指的是那种,据我的了解好象不会跑到外边去。会停在原地的?

欢迎讨论!
离线BG7JUN
发帖
889
只看该作者 4楼 发表于: 2006-02-26
cpu不知道下一条指令是不是有效的指令,所以会一直执行下去——无论取到什么数据,它都当指令去执行。
至于rom之外的数据是什么,那就和cpu的地址、数据线有关了——有的读出来是全“1”的,也有随机的,象8031这种数据/地址复用的,有时读出来是1、2、3……这种有规律的。
反正就是乱执行,结果也是不可预测的,通常叫“跑飞了”。
不妨用仿真机单步跟一跟就明白了。
不一定要跑到rom之外,rom中有效程序之后的部分执行结果也是不可预测的。
离线BG4ABM
发帖
1139
只看该作者 5楼 发表于: 2006-02-26
main:

mov p2,#0ffh
mov p1,#0f9h(输入1)
clr p2.0(选第一位)

mov p2,#0ffh
mov p1,#0a4h(输入2)
clr p2.1(选第二位)

mov p2,#0ffh
mov p1,#0b0h(输入3)
clr p2.2(选第三位)

ljmp main
end
这是我上次询问的数码管显示1、2、3的程序,现在因为有ljmp main这一步,所以数码管显示出来的字符很稳定,但是我把ljmp main去掉后,也能显示1、2、3,只是会一闪一闪的,这是不是说明pc指针跑到外部rom后又回到了程序的开始处呢?我用的是89s51
离线BG7JUN
发帖
889
只看该作者 6楼 发表于: 2006-02-27
后面全是ff,是空指令,后以pc跑完全“1”后会回到0。