请达人解释一下这个指令的意思

[复制链接]
2378|4
 楼主| 还我今生 发表于 2008-1-28 20:51 | 显示全部楼层 |阅读模式
CJNE  Rn, #data, rel  ; A≠#data,(PC)+ 3 + rel→(PC)
这条指令 我这么理解 不知道对不对:假设data=100,那么如果A的内容不等于100则 当前的PC指向(PC)+3+rel的地址,但为什么是加3呢?
如果A的内容等于100,则程序往下执行,也就是(PC)+1→(PC).
有理解错误的地方请高手指出.谢谢
 楼主| 还我今生 发表于 2008-1-28 20:57 | 显示全部楼层

再问

cjne a,#100,next ;判断计数器是否满100?
mov temp,#0;满100就清零重新开始
next: ljmp stlop;不满就循环执行

这里中的rel是怎么算的呢,难道就是next吗?
bsbjx 发表于 2008-1-29 07:52 | 显示全部楼层

cjne指令长度3字节,所以pc+3

  无论A等于或不等于100,都是pc+3.

   rel是目标地址减去当前地址的值,带符号的。由编译器自动计算。
xwj 发表于 2008-1-29 08:33 | 显示全部楼层

你给标号就行了,至于偏移是多少,编译器会自动帮你计算

 楼主| 还我今生 发表于 2008-1-29 21:27 | 显示全部楼层

多谢 我明白了 顿悟

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

本版积分规则

218

主题

1381

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0