求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

Djnz查看源代码讨论查看历史

跳转至: 导航搜索
  Djnz

DJNZ RN,REL 是一条件转移指令,先将工作寄存器Rn中的数减“1”,判断结果是否为“0”,不为“0”程序就跳转到行标为REL的地方执行,否则,为“0”就不转移,继续执行下一条指令。

简介

此指令是将操作数的内容减1,然后判断操作数的结果,若操作数为零,则顺序执行程序,不为零则程序转移。根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去。DJNZ指令有两种格式:DJNZ Rn,rel和DJNZ direct,rel,前者为双字节指令,其中第二个字节存储rel的相对地址,范围是-128~+127,所以转移范围很窄,所以转移的位置为指令的当前PC值加上rel;第二条指令的第三个字节也是存储rel的,和第一条指令的转移方式相同,都是PC+rel。

评价

在单片机中,DJNZ指令的具体功能是使操作数的内容减1,并判断操作数是否等于0,如果不等于0,则跳转至标号处,如果等于0,则顺序往下执行。利用DJNZ指令,可以进行有条件的程序转移,也可控制程序执行的次数,广泛用于进行延长时间的设计。“DJNZ”指令经常被用在循环程序中,利用将寄存器中的值减1不为零跳到相对地址的标号处,实现某一部分指令的重复执行,从而达到延长时间的目的。[1]

参考文献

  1. Djnz搜狗