智能车制作

标题: _asm(nop)是什么意思 [打印本页]

作者: 仁者    时间: 2010-2-5 11:52
标题: _asm(nop)是什么意思
_asm是内嵌汇编,nop(null   operation)是空操作,呵呵,什么都不干,保留一个字节的空间,以后可以直接改.一般nop用来延时。cpu的logic不变
作者: 姚先生    时间: 2010-3-3 12:30
不太明白ASM 的意思
作者: 仁者    时间: 2010-3-8 21:24
回复 2# 姚先生


    看看指令
作者: hellodede    时间: 2010-3-12 16:57
不太会用哈
作者: zhoulxm    时间: 2010-3-13 15:48
小延时
作者: starjiajia    时间: 2010-3-15 18:42
不就是嵌入汇编的小延时吗
作者: luson1321    时间: 2010-3-20 12:44
但是为什么要嵌入这个小延时呢?
作者: feisikaer_2010    时间: 2010-3-24 20:59
。。。
作者: zhuzhu0    时间: 2010-4-3 15:59
.......
作者: xiaoyang06022    时间: 2010-4-3 20:39
对!就是延时很短的一段时间!
作者: zls    时间: 2010-4-3 21:40
嵌入式 汇编 空指令
作者: msds-shelly    时间: 2010-4-4 18:56
嵌入汇编吧
作者: jinwei9999909    时间: 2010-4-6 16:53
为什么呢
作者: lansedeyueliang    时间: 2010-4-7 17:48
延时很短的一段时间
作者: anjiayu    时间: 2010-4-12 21:13
明白!!!!!
作者: comeon123    时间: 2010-4-13 20:01
……
作者: wanglin0215    时间: 2010-4-18 12:29
明白了
作者: kangluoyi    时间: 2010-4-24 15:48
asm  是个函数吗?  延时???
作者: kangluoyi    时间: 2010-4-24 15:50
内嵌?    不明白
作者: a7335562    时间: 2010-6-18 16:56
是一个机器周期的延时吧
作者: 猪都笑了    时间: 2010-6-30 20:53
nop是汇编语言,就是空操作,asm{}是c语言中嵌入汇编语言的嵌入语句
作者: yanshengbin    时间: 2010-7-8 20:35
应该就是延时吧
作者: xueyaping    时间: 2010-11-11 14:31
哦  半懂半不懂
作者: apple张    时间: 2010-11-20 23:02
???
作者: jiang1101    时间: 2010-11-22 13:30
是空指令,运行所用的时间对应一条汇编语言的时间
作者: wjj273155814    时间: 2010-11-24 00:05
汇编不太好玩,我还报了个三级PC的考试,过的概率貌似不大。
作者: 仁者    时间: 2010-11-24 10:57
回复 26# wjj273155814


    学学汇编对理解组成原理很有用的,我现在就很后悔没学汇编
作者: wjj273155814    时间: 2010-11-27 00:00
回复 27# 仁者


    嘿嘿,那东西真的不简单,我们现在微机原理就学汇编呢,但是都不怎么精,也就是个皮毛!
作者: hefeixuexi    时间: 2010-12-2 20:54
_asm表示在C语言中嵌入汇编程序,nop在汇编语言中是个空语句,通常作延时用。
作者: 黄振宇    时间: 2010-12-3 13:37
为了等待某些状态,比如锁相环里面有个LOCK状态,书上有!!
作者: sinsic    时间: 2011-1-27 14:49

作者: 功夫熊猫    时间: 2011-2-23 16:35
原来是 内嵌汇编指令啊
作者: 功夫熊猫    时间: 2011-2-23 16:38
回复 1# 仁者


    那写成_asm (nop)     _asm "nop"      _asm {nop}三种形式有什么区别呢?是一模一样的吗?
作者: 近水楼台    时间: 2011-2-24 07:14
回复 33# 功夫熊猫
应该是一样的,只是不同的格式吧!
作者: kui13575728208    时间: 2011-2-24 10:04
学习了
作者: 天边人1    时间: 2011-2-27 11:24
。。。。
作者: zqcwxd    时间: 2011-3-4 15:16
既然是延时的话用delay函数代替行吗?
作者: supper大毛    时间: 2011-3-4 16:11
顶你,好好学习
作者: 仁者    时间: 2011-3-4 19:55
回复 37# zqcwxd

可以
作者: kavin8000    时间: 2011-3-10 09:25
nop 的延时是微秒级的,即一个指令周期(对单片机来说是2个机器周期,也就是2*12个时钟周期),所以时间很短,以方便精确的延时。
与delay()不同的是,MCU在执行此代码时,不进行任何操作,即null operation.
作者: 吖会    时间: 2011-3-24 11:10
延时1us
作者: justbeatit    时间: 2011-3-29 19:12
晓得了。
作者: wangwang328    时间: 2011-3-30 20:26
我想应该是直接用硬件来延时的吧
作者: 刘汉超    时间: 2011-4-2 21:32
c语言嵌汇编,小延时
作者: 小明网我的天堂    时间: 2011-4-7 20:14
那么到底延时多少呢?
作者: 邹盼    时间: 2011-4-7 23:23
就是小延时
作者: wuxingcfchen    时间: 2011-4-11 16:44
其实asm(nop)与_asm(nop)又是否一样?
作者: wuxingcfchen    时间: 2011-4-11 16:44
其实asm(nop)与_asm(nop)又是否一样?
作者: wuxingcfchen    时间: 2011-4-11 16:45
其实asm(nop)与_asm(nop)又是否一样?
作者: wuxingcfchen    时间: 2011-4-11 16:45
其实asm(nop)与_asm(nop)又是否一样?
作者: wentianlin    时间: 2011-4-20 20:48
有什么好处啊 迷惘中
作者: Jarylove    时间: 2011-4-21 14:33
不太明白
作者: 376924623    时间: 2011-4-24 15:48
不太会用
作者: xining_yang    时间: 2011-12-11 20:58
具体延时多长时间呀?????
作者: xining_yang    时间: 2011-12-11 20:59
xs128中怎样调试delay()具体延时时间呀
作者: 沙漠上的狙    时间: 2011-12-12 20:28
那是一个空指令,MCU什么都不做,主要用来延时来的。比如你的总线是40M,那它的延时时间就是1/40,000000 S

作者: yaozhifeng    时间: 2012-2-6 09:59
小延时作用,看到很多人都在使用它
作者: dolorous1    时间: 2012-2-8 13:26
。。。
作者: 炒冰棍    时间: 2012-2-15 10:27
延时做什么啊
作者: 157688    时间: 2012-2-25 16:27
谢谢
作者: xiayayun    时间: 2012-2-27 22:35
延时
作者: lifei092    时间: 2012-2-28 10:13
SO!!!!
作者: 宁静致远    时间: 2012-2-28 17:04
说的挺透彻的
作者: jingandlin    时间: 2012-3-1 19:30
其实就是空操作,达到延时
作者: 鱼小闲    时间: 2012-3-2 21:02
C语言与汇编混合编程 用于精确延时
作者: 大胡子    时间: 2012-3-9 04:34
根据设定的晶振,怎么样确定asm("nop");延时了多少时间?比如7.3728MHz下,一个asm("nop");代表多少时间呢?

1,一个指令周期.

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析取数到执行完所需的全部时间。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是 计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间它一般由12个时钟周期组成。而时钟周期=1秒/晶振频率,因此单片机的机器周期=12秒/晶振频率

  补充其他几个周期:

  指令周期:取出并执行一条指令的时间。

  时钟周期:处理操作的最基本单位。(CPU的主频)

  存储周期:也就是一个访存指令周期。

  指令周期、机器周期和时钟周期之间的关系:指令周期通常用若干个机器周期表示,而机器周期时间又包含有若干个时钟周期。

--》指令周期=若干个机器周期=12个时钟周期12秒/晶振频率 (51系列)




2,1/7378200  = 0.000000135534 s = 135.5ns (51系列)

作者: Iiti    时间: 2012-3-9 16:31
哦,知道了!
作者: 陈胜利    时间: 2012-3-10 08:54
了解了
作者: 樱花流年    时间: 2012-3-10 11:37
浪费一断程序,就是在写的哪一行什么都不做。基本实现短暂的延时
作者: 小木偶    时间: 2012-3-14 19:07
嗯,精确延时
作者: 前行者cross    时间: 2012-3-18 20:50
有些时候,为了让设定的寄存器稳定工作(如PLL锁相环的初始化,液晶初始化),一般选择短暂的延时,相当短,只有微秒级别,就用这个_asm(nop)
作者: renqinglei    时间: 2012-3-18 21:02
一个NOP指令大约多长时间?
作者: dongpinbo    时间: 2012-4-1 19:33
混合编程
作者: reality    时间: 2012-7-15 20:20
嘿嘿,受教了
作者: 海波    时间: 2012-7-24 21:51
学习了、、
作者: ZHONGLAN    时间: 2012-8-9 20:45
见识
作者: melon_1    时间: 2012-8-15 22:28
学习了
作者: 追风聪    时间: 2012-9-5 19:46

作者: 469757565    时间: 2012-11-17 21:25
还是不明白
作者: 469757565    时间: 2012-11-17 21:27
为什么加这延时,
作者: verm    时间: 2012-12-26 12:04
__asm(nop); 实是单周期指令,等于一个时钟周期 如果时钟频率为16MHZ,那么延时就是 1/16M

作者: verm    时间: 2012-12-26 12:16
打错了  
__asm(nop); 等于一个时钟周期 如果时钟频率为16MHZ,那么延时就是 1/16M
一个指令周期含有1~4个机器周期,通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
一个机器周期=12个时钟周期
一个状态周期=2个时钟周期

作者: 飞龙再生    时间: 2013-1-15 17:21

作者: 望着着    时间: 2013-1-17 20:28

作者: gnbznc    时间: 2013-1-21 19:48
受用了
作者: haikuotiankong    时间: 2014-4-21 13:37
starjiajia 发表于 2010-3-15 18:42
不就是嵌入汇编的小延时吗

大神      请问_asm(nop)这个延时时间怎么算的?  谢谢

作者: Yanise    时间: 2014-4-21 22:57
类似延时,执行一次空操作。

作者: Bobsweetie    时间: 2014-4-27 19:06
振荡周期又称为时钟周期,等于晶振的倒数
状态周期等于两个时钟周期
一个机器周期为12个时钟周期
一个指令周期为2个或四个机器周期
作者: 你猜    时间: 2014-5-6 15:42
在K60里用_asm(nop)函数延时20uS怎么弄?
作者: 2417838042    时间: 2014-8-8 10:40
原来是这样
作者: 白梅    时间: 2014-10-31 13:17
只是延时为什么不用C语言的nop();而是用asm(nop);呢?
作者: zhaojinging302    时间: 2016-1-8 09:53
是一个机器周期还是一个时钟周期

作者: HYB0.0    时间: 2016-4-26 23:41
空语句 延时的
作者: demonlib    时间: 2016-5-8 20:28
调用汇编的一个空指令,占用一个机器周期,产生一个最短的延时




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2