ORG 0000H //伪指令 表示程序从地址0000h开始
AJMP MAIN //跳转到MAIN
ORG 0030H //主程序0030h开始
MAIN: MOV P0,#0FEH //点灯
ACALL DEL //调用子程序DEL 维持二极管的点亮
MOV P0,#0FFH //熄灯
ACALL DEL //
AJMP MAIN // 跳转到MAIN
DEL: MOV R5,#04H //延时子程序
DEL1: MOV R6,#0FFH //
DEL2: MOV R7,#0FFH //
DEL3: DJNZ R7,DEL3 // 内容-1 后判断若为0向下执行否则跳转到本身
DJNZ R6,DEL2 // 内容-1 后判断若为0向下执行否则跳转到del2
DJNZ R5,DEL1 // 内容-1 后判断若为0向下执行否则跳转到del1
RET
END
问题:
1:AJMP MAIN 这一句直接跳转到了MAIN 这个地方 ORG 0030H 这句话怎么能执行呢?
2:DEL: MOV R5,#04H 把04 送个R5更延迟时间有什么关系呢?还有书上说他会返回 那他怎么知道返回到哪里呢?难道是中断保护码?在跳转的时候 地址都保存起来了再返回的时候 调用出来??
3:ACALL 下面的AJMP 跳转到MAIN 这样不是成为死循环了 ,还是说 执行了这句 他还会往下执行下去的?
4:DJNZ R6,DEL2 这一句内容-1如果为0象下执行否者 跳转 这里的DEL2是有什么用的?是告诉他要跳转的地方吗?他跳转的时候 是直接返回还是直接往下执行?? 既然已经跳转了R6的值又一次的被赋予0ffh 那下面的-1还有什么用呢?下面那句也是