89S51单片机中的DJNZ指令是怎么用的呢? 例如: DJNZ Rn ,rel ; Rn←(Rn)- 1

[复制链接]
查看11 | 回复3 | 2012-3-23 02:39:00 | 显示全部楼层 |阅读模式
DJNZ指令有两种格式:DJNZ Rn,rel和DJNZ direct,rel,前者为双字节指令,其中第二个人字节存储rel的相对地址,范围是-128~+127,所以转移范围很窄,所以转移的位置为指令的当前PC值加上rel;第二条指令的第三个字节也是存储rel的,和第一条指令的转移方式相同,都是PC+rel,你的想法是对的。 Sjmp实现原地跳转时只能用$,没听说过直接用绝对地址的数值来表示的。"D2"在源代码中是标号,但是编译器在将其翻译为机器代码时会自动计算出它的物理地址并且用在指令中。一般只源代码中都使用标号来表示地址,几乎不同数字来直接表示地址,因为计算地址是很复杂的问题。...
回复

使用道具 举报

千问 | 2012-3-23 02:39:00 | 显示全部楼层
Rn减1后的完整地说是:减1后不为0则跳转;减1后为0则顺序执行。...
回复

使用道具 举报

千问 | 2012-3-23 02:39:00 | 显示全部楼层
减一后的内容...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行