循環轉移指令
DJNZ指令是一種在單片機彙編中使用的循環轉移指令,其全稱為「Decrement and Jump if Not Zero」。該指令的功能如下:
操作:將指定的運算元(暫存器或直接定址的位元組)減1。
轉移條件:如果運算元不為0,則跳轉到指定的標籤或相對地址;如果運算元為0,則繼續執行下一條指令。
DJNZ指令有兩種格式:
DJNZ Rn,rel:這是一個雙位元組指令,其中第二個位元組存儲rel的相對地址,範圍是-128到+127。這意味著轉移的範圍較窄,轉移的位置為指令的當前PC值加上rel。
DJNZ direct,rel:與第一種格式類似,第三個位元組也存儲rel的相對地址,轉移方式和第一種指令相同,即PC+rel。
注意事項:
執行DJNZ指令時,工作暫存器中的數值會先減去1,然後判斷是否返回。例如,如果Rn中原來是2,執行兩次DJNZ後,Rn中就是0了。
DJNZ指令常用於控制循環次數。例如,`DJNZ R6, Loop` 表示每次轉移到標籤Loop時,R6就減1,直到R6等於0時執行下一條指令。
綜上所述,DJNZ指令是一種在單片機彙編中用於控制循環的重要指令,它通過減1操作和條件轉移來實現循環的控制。