我刚接触汇编,有点问题 。求教

leew1229 2011-01-12 08:31:25
汇编中 nop 有什么用,dump和他比较,会发生抢资源的情况么
现在接触的是8086 ,感觉单片机好控制多了。
dos就是简单啊,没那么多错误,出错了可以很快发现。
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫影 2011-01-13
  • 打赏
  • 举报
回复
清除由上一个算术逻辑指令设置的flag位...我还以为nop啥用都没呢,
znxllyuan 2011-01-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110105/15/874882dc-03a6-4700-9bb3-dadb311549d2.html
nop指令的作用是什么,我就想起来一条,就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。) baidu了一下,发现有许多答案:

1)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;-->具体应该说是占用了3个时钟脉冲!
2)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
3)清除由上一个算术逻辑指令设置的flag位;
4)破解:)对于原程序中验证部分使用nop来填充,使验证失效;
5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!
解释如下:在空间放射性环境下,放射性子粒很容易使内存位元改变(呵呵,有点基因突变的感觉),这样如果改变的是jump,call指令的存贮位置的话,就会导致程序跳转到一个不可以预置的位置,对于关键系统来说的确是灾难性的。所以就在被调用程序之前填充nop指令,这样即使跳转到稍前或者稍后的位置,也不会造成影响。
这样我想起"C tarp and fitfall"中举的那个导弹软件中的致命错误:因为导弹是以0.1s为单位进行记时的,但是由于浮点数没有办法精确的表示0.1,造成了舍尾误差,这个误差在导弹开启3天的之后逐渐的积累,结果误差了一秒。
renxu350 2011-01-13
  • 打赏
  • 举报
回复
NOP 的机器码是 90H,表示CPU不进行任何操作,继续向下一条指令执行,,,,,
紫影 2011-01-13
  • 打赏
  • 举报
回复
dump不知道,不过据我理解nop应该是数据"00",即不运行的代码...不知是否正确,

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧