DELAY: MOV R5,#1 D1: MOV R6,#2 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 这些汇编是什么意
答案:3 悬赏:70 手机版
解决时间 2021-04-02 06:37
- 提问者网友:一抹荒凉废墟
- 2021-04-02 02:17
DELAY: MOV R5,#1 D1: MOV R6,#2 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 这些汇编是什么意
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-04-02 02:25
DELAY 和 D1、D2是一个标号,相当是标记的地址。$标记的是本条指令地址。
DJNZ,Addr 是一个跳转指令,具体操作是:
Rx=Rx-1;
if Rx != 0
goto Addr
否则,往后执行
这一段代码其实就是一个多重循环,相当于 C 语言里的
for (i = 1;i >0 ;i--) // i 相当于R5
for (j= 2; j>0 ;j--) // j 相当于 R6
for (k=248;k>0 ;k--) // k相当于 R7
{
_NOP(); //每条汇编指令对应了一定的机器时间周期数(与具体型号有关),
DJNZ好像是3个机器周期,
一直在这循环打转,每执行一条指令就会花掉一定的时间,
所以起到延 时的作用
}
主要作用就是延时,数节拍数。在 单片机的教程定时器里都会有这样的范例。
DJNZ
Rx=Rx-1;
if Rx != 0
goto Addr
否则,往后执行
这一段代码其实就是一个多重循环,相当于 C 语言里的
for (i = 1;i >0 ;i--) // i 相当于R5
for (j= 2; j>0 ;j--) // j 相当于 R6
for (k=248;k>0 ;k--) // k相当于 R7
{
_NOP(); //每条汇编指令对应了一定的机器时间周期数(与具体型号有关),
DJNZ好像是3个机器周期,
一直在这循环打转,每执行一条指令就会花掉一定的时间,
所以起到延 时的作用
}
主要作用就是延时,数节拍数。在 单片机的教程定时器里都会有这样的范例。
全部回答
- 1楼网友:酒者煙囻
- 2021-04-02 03:42
DELAY: MOV R5,#1
D1: MOV R6,#2
D2:MOV R7,#248
DJNZ R7,$ R7减到0
DJNZ R6,D2 R6减一次跳到D2直到R6为0
DJNZ R5,D1 R5减一次跳到D1直到R5为0
实际上就是延时了1*2*248个机器周期 起到一个延时的作用追问能不能在具体一点 就是其中的D1 D2 DNJZ 是什么意思 ?
为什么是1*2*248个机器周期? 谢谢!
D1: MOV R6,#2
D2:MOV R7,#248
DJNZ R7,$ R7减到0
DJNZ R6,D2 R6减一次跳到D2直到R6为0
DJNZ R5,D1 R5减一次跳到D1直到R5为0
实际上就是延时了1*2*248个机器周期 起到一个延时的作用追问能不能在具体一点 就是其中的D1 D2 DNJZ 是什么意思 ?
为什么是1*2*248个机器周期? 谢谢!
- 2楼网友:过活
- 2021-04-02 03:32
;这是一段延时子程序,具体意思,我在每行语句中加以注释
DELAY:
MOV R5,#1 ;最外层循环次数,1的话可以不要
D1:
MOV R6,#2 ;中间层循环次数
D2:
MOV R7,#248 ;最内层循环次数
DJNZ R7,$ ;最内层循环,次数是:1*2*248
DJNZ R6,D2 ;中间层循环,次数是:1*2
DJNZ R5,D1 ;外层循环,次数是1
RET ;程序返回
DELAY:
MOV R5,#1 ;最外层循环次数,1的话可以不要
D1:
MOV R6,#2 ;中间层循环次数
D2:
MOV R7,#248 ;最内层循环次数
DJNZ R7,$ ;最内层循环,次数是:1*2*248
DJNZ R6,D2 ;中间层循环,次数是:1*2
DJNZ R5,D1 ;外层循环,次数是1
RET ;程序返回
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯