`

nop指令

阅读更多
一个nop为1个指令周期,主要用于精确定时或者延时

nop指令的作用:
1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)
2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;-->具体应该说是占用了3个时钟脉冲!
3)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
4)清除由上一个算术逻辑指令设置的flag位;
5)破解:)对于原程序中验证部分使用nop来填充,使验证失效;
6)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!
分享到:
评论

相关推荐

    单片机C51中的NOP指令使用经验

    作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用...

    1个NOP延时多上时间,怎么计算?

    而NOP指令本身就是一个指令周期,因此执行一个NOP指令的时间就是1个CPU指令周期的时间。根据前面的分析,这也就是1.67MHz的倒数,即大约0.6微秒(µs)。 因此,在CPU频率为20MHz的情况下,执行一个NOP指令大约需要...

    单片机C语言中_nop_函数使用及延时计算

    第一种情况是对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当于汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。 第二种情况是对于延时比较长的...

    RISCV常见指令的执行周期表

    - **注释**:nop指令不执行任何操作,主要用于调试目的或作为流水线中的填充指令。 - **用途**:通常用来调整指令执行的时间,例如为了实现特定的同步效果。 2. **addi (Add Immediate)** - **执行周期**:1 - ...

    南昌大学06年单片机试卷和答案

    2. **延时程序**:给定程序通过MOV、NOP和DJNZ指令实现延时,其中NOP指令用于插入一个机器周期的空闲时间。若要延时50us,需计算R3的初始值以确保执行循环次数正确。 3. **数值相加**:该程序将两个位于内存40H和...

    nop.rar_nop_nop键盘

    标题中的“nop.rar_nop_nop键盘”暗示了我们讨论的主题是关于计算机编程中的NOP指令以及与键盘交互的实现。NOP,全称是"No Operation",在计算机指令集中,它通常表示一个空操作或者无操作指令。NOP指令在程序设计中...

    Ollydbg篇NOP位移法

    **什么是NOP指令?** NOP(No Operation)是汇编语言中的一种指令,它在执行时不做任何操作,通常用作填充空间或调整指令地址。在16位x86架构下,NOP指令通常表示为`0x90`;在32位和64位环境中,NOP指令有多种变体,...

    单片机c语言中nop函数的使用方法和延时计算

    标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。  这在汇编语言中很容易实现,写几个nop就行了。

    Cortex-M0指令集(1)

    处理器使用的是ARMv6-M Thumb指令集,包括大量的32位的使用Thumb-2技术的指令。表7-22列出了Cortex-M0指令和它们的周期数。周期计数以零等待状态的系统为基准

    单片机C语言中nop函数使用及延时计算.pdf

    nop函数相当于汇编语言中的NOP指令,延时几微秒。NOP指令为单周期指令,可以由晶振频率算出延时时间,对于12M晶振,延时1uS。 在Keil C51中,可以直接调用库函数#include<intrins.h> void _nop_(void);_nop_();来...

    单片机c语言中nop函数的使用方法和延时计算.pdf

    `,然后使用`_nop_()`函数来产生一条NOP指令,这个函数相当于汇编NOP指令,延时几微秒。 对于延时很短的,要求在us级的,可以采用“_nop_”函数来实现。NOP指令为单周期指令,可以由晶振频率算出延时时间,对于12M...

    (完整版)西门子PLC指令教程应用指令.ppt

    NOP指令的格式为:NOP N 例如:NOP 30 5.1.2 结束及暂停 结束及暂停指令有两条:END和MEND。END指令是条件结束指令,用于终止用户主程序。MEND指令是无条件结束指令,用于无条件终止用户程序的执行。 END指令的...

    C语言里如何编写精确的微量延时.doc

    首先,我们需要为1到N个时钟周期定义N个宏,每个宏调用相应数量的NOP指令。例如: ```c #define NOP_1 asm("nop") //延时一个时钟周期 #define NOP_2 NOP_1; asm("nop") //延时两个时钟周期 //... #define NOP_40 ...

    51单片机的常用指令

    NOP指令是一种空操作指令,用于占用 CPU 的时钟周期,但不执行任何操作。 ADD和ADDC指令 ADD和ADDC指令是51单片机中的一种加法指令,用于将两个寄存器或存储器的值相加。ADDC指令用于带 CY 的加法。 SUBB指令 ...

    单片机C语言的延时计算.doc

    在 Keil C51 中,可以直接调用库函数 `_nop_()` 来产生一条 NOP 指令,这个函数相当于汇编语言中的 NOP 指令,延时几微秒。 二、使用循环语句 对于延时比拟长的,要求在大于 10us,采用 C51 中的循环语句来实现。...

    第04章-汇编指令1

    在OllyDbg中,我们可以直接编辑反汇编代码,将PUSH 0指令替换为NOP,并观察EIP寄存器的变化,理解NOP指令如何影响程序的执行。 堆栈相关指令包括PUSH和POP,它们在处理数据存储和传递中起到关键作用。 1. PUSH指令...

    精通8051程序设计 指令集

    NOP指令通常用于程序调试过程中,例如在发现某段代码存在问题时,可以使用NOP指令来替代原有的指令而不必擦除整个程序存储器。这为程序员提供了一种快速修正错误的方法。 #### 二、DJNZ指令(递减与跳转指令) ...

    feature-fixups-test.rar_out

    在"feature-fixups-test.c"这个C语言源文件中,很可能包含了一个或多个函数或代码段,这些代码可能在特定情况下需要被“nop out”,即被替换为nop指令,以便在运行时不起作用。这可能是为了测试某个功能,或者在出现...

    安川机器人指令手册

    NOP功能: NOP指令用于程序开头指令。例如 NOPTIME功能: TIME指令用于暂停时间。例如 T=12.50暂停 12.5 秒后执行下一指令。 CWAIT功能: CWAIT指令用于等待 NWAIT 指令,那一行指令执行完毕才继续执行下一行指令。...

    nop简单的事务实现.rar_nop简单的事务实现

    NOP指令通常被用作占位符,它在执行时不会有任何实际操作,但可以用于控制流程或者在某些场景下作为事务边界标记。在分布式系统或数据库事务管理中,使用NOP作为事务标记可以帮助开发者理解事务的开始和结束。 描述...

Global site tag (gtag.js) - Google Analytics