问一个汇编单片机混合编程的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:14:09
PUBLIC _DELAY
DELAYP SEGMENT CODE
RSEG DELAYP
_DELAY: NOP
DELAY: MOV R5,#250
DEL: NOP
NOP
DJNZ R5,DEL
DJNZ R7,DELAY
MOV A,R6
JZ EXIT
DJNZ R6,DELAY
EXIT: RET
END

这是一个延时汇编程序
第四行是什么作用
为什么我把第四行注释了之后 编译无法通过 将会提醒到undefined symbol?

第四行,_DELAY: NOP,

_DELAY,它只是个标号。

在第一行,把这个标号定义了“公共”的,所以不能删除,删除就出错。

以下几个作用:
1)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟:);
2)i/o传输时,也会用一下nop,等待缓冲区清空,总线恢复;
3)清除由上一个算术逻辑指令设置的flag位;

NOP 他的作用是为了让程序不容易跑飞。让程序在执行的时候能够按照你所编写的那样。当一个程序跳转会来的时候,有了NOP 更容易找到跳回的位置。

PUBLIC _DELAY PUBLIC表示公共的 在JAVA 和 c++里面也有,都是同一个意思 那些DJNZ是要跳到第4行的那个上面的。如果你删了第4行 就不找到跳到那里了·

什么MCU,的程序?