nop这个指令在编程时从来没有使用过,看帮助写明是执行一次空操作。
百度了一些说法,总结起来是占用一个字节的程序存储空间,产生微小延迟,常用来做代码地址对齐。
不是很理解啊
有什么实际作用啊?以前编程根本不用考虑它
恳请有使用心得的大侠分享一下经验,举例说明一下,谢谢!
最佳答案
1、现于网上搜索NOP指令的用法,多源于针对微机与单片机的汇编指令的解释。的确,微机与单片机的汇编指令对NOP指令汇编指令的用法的解释,缩精为:“占用一个字节的程序存储空间,产生微小延迟,常用来做代码地址对齐。”。而对于,PLC来讲,应理当别论。
2、占用一个字节的程序存储空间:
、这是在对微机与单片机进行汇编指令指令编程时常用的手法,例如,为了刻意使某个程序段在一个特定的地址开始,或在某个程序段中删除了一些指令而还刻意要求地址不变,基于这些的需求,通常是应用NOP指令汇编指令来充填空闲的地址。
、对于S7-STL编程语言来讲,通常是应用NOP指令汇编指令来充填被删除的指令的位置,以便留言痕迹,以便备查。通常的做法是,在删除的指令的位置写为NOP指令,重要的是在其注释之处写上原指令,留有备忘的痕迹。
3、产生微小延迟:
、这是在微机与单片机进行汇编指令指令编程时常用的手法,微机与单片机的编程并非是周期扫描的执行机制,例如,在读取某个外围通道输入值时,先发出一个请求命令,带一定延时后,再读其数值,通常是应用NOP指令来进行延时。
、对于西门子PLC来讲,其执行程序的机制是周期扫描,NOP指令只是起到占用周期扫描时间的作用,对于那些已固定了扫描周期时间的PLC而言,是没有意义的。
4、常用来做代码地址对齐:
这个纯粹是对与对微机与单片机进行汇编指令指令编程来讲的。这与上述的1、占用一个字节的程序存储空间的作用相同,不再赘述了,即汇编编译后生成机器代码的效果。
5、本人认为“占用一个字节的程序存储空间”,对于PLCSTL编程语言来讲,通常是应用NOP指令汇编指令来充填被删除的指令的位置或作为一个无如何操作的指令的来应用。
提问者对于答案的评价:
感谢阿鸣老师的详细回答
并没有发现有什么情况下这个指令是“没它不行的”
还有一点,在驿站927老师给的那段代码中,标签后加了NOP 0,这个有什么必要性吗?不加的话,难道在什么情况下跳转会出现错误码
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc302840.html