neg指令(求补) 也就是前面我们所提到过的补码的非
也可以把它看做是用0减去后面的数,来判断对标志位的影响

这个neg指令可以配合标志寄存器里面的CF位和OF位使用
a.不为0的操作数求补 CF=1
b.为0的操作数求补 CF=0
(至于为什么会影响CF位的话,把它想象成用0去减一个数,减的如果是非零数CF位肯定改变呀)
c.操作数为-128(字节运算)或操作数为-32768(字运算) OF=1
d.当求补运算的操作数不为-128(字节)或操作数为-32768(字运算) OF=0

解释为什么影响OF位:
8位数的补码,可以表示的是-128~+127。
  运算结果超出这个范围,就是溢出。
  CPU 就会令 OF = 1。
  -----------问---
  NEG 指令,是连同符号位一起,求反加一。
  NEG 指令,求出的是《相反的数》答。
  --------------
  mov al,-128 ;al=10000000b
  neg al ;al=10000000b, OF = 1
  +128,超出了8位数的补码的范围,就是溢专出了。
  OF = 1,是属合理的。
  --------------
  mov al,+127 ;al=01111111b
  neg al ;al=10000000b, OF = 0
  应该是:
  neg al ;al=10000001b, OF = 0
  这是-127的补码,不超出范围,没有溢出。
  OF = 0,是合理的。

利用这个可以实现条件跳转

SCAS 隐式地把AL/AX/EAX的数值与地址为EDI的内存数值比较(可以实现C语言里面的strlen函数)
xor al,al
mov ebx,edi
repne scasb
sub edi,ebx

STOS 把AL/AX/EAX的数值与写入EDI所指向的内存,常用于把缓存初始化为常量值(可以实现C语言里面的memset()函数)
xor eax,eax
push 9
pop ecx
mov edi,esi
rep stosd
(相当于memset(edi,0,36))

LODS是这个系列的另一个指令,它从ESI读出1,2或4字节数值并存入AL,AX或EAX

2020-12-2(详细解释neg指令 以及SCAS ,STOS的运用)相关推荐

  1. ps -aux详细解释

    ps -aux详细解释 ps-aux 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用"date -s"命令来修改系统时间 ...

  2. php.ini配置文件中文详细解释

    php.ini配置文件中文详细解释 ;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ;  ; 此配置针对开发目的,并且*不是*针对生产环境 ...

  3. linux aux是什么命令,Linux命令ps aux详细解释

    ps  aux详细解释 ps aux 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用"date -s"命令来修改系统时间 ...

  4. Linux下函数调用堆栈帧的详细解释【转】

    转自:http://blog.chinaunix.net/uid-30339363-id-5116170.html 原文地址: Linux下函数调用堆栈帧的详细解释 作者:cssjtuer http: ...

  5. 英语2020.12.22

    英语2020.12.22 第一份(翻译第一段) (成功)7 Many people simply say that they want something, but they do not expen ...

  6. Python之pandas:pandas.set_option函数的参数详细解释

    Python之pandas:pandas.set_option函数的参数详细解释 目录 pandas.set_option函数的参数解释 函数API:pandas.set_option pandas. ...

  7. linux中useradd的文件路径,linux的useradd命令详细解释

    Linux中的useradd命令顾名思义就是添加用户的命令.下面由学习啦小编为大家整理了Linux的useradd命令的详细解释的相关知识,希望对大家有帮助! linux的useradd命令的详细解释 ...

  8. theano中的Rop和Lop的详细解释

    #------------------------------------------序------------------------------------------------------- ...

  9. MapReduce的工作原理,详细解释WordCount程序

    本篇文章主要说两部分:简单介绍MapReduce的工作原理:详细解释WordCount程序. MapReduce的工作原理 在<Hadoop in action>一书中,对MapReduc ...

最新文章

  1. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari...
  2. android+sdk九宫格游戏,GitHub - mikegame/Android-SDKDemo: 米壳游戏Android SDKDemo
  3. vscode使用教程python-VS Code 配置 Python 开发环境
  4. 异步社区本周半价电子书(6月11-17日)
  5. 保护个人信息需出“重典”
  6. 离线安装 KubeSphere 2.1.1 与 Kubernetes
  7. 修改Linux系统默认编辑器
  8. linux 脚本做成服务,Shell脚本注册到Linux系统服务实例
  9. JAVA基础之n+=1与n=n+1的区别
  10. fcm模糊聚类matlab实例_智能控制-Fuzzy控制- matlab
  11. java_math_BigInteger
  12. Java实现Unicode编码和中文互转
  13. python 移动/剪切文件
  14. win7 微信 代理服务器设置,手把手为你讲解win7系统电脑登录多个微信的详细方法...
  15. kiv8测量方法_measure_测量 | measure_Scikit image_参考手册_非常教程
  16. C#操作word定位光标
  17. sticky 失效问题
  18. 服务器ae是什么位置,ae 渲染服务器
  19. 北京大学可视化发展前沿研究生暑期学校第二讲
  20. Js实现金额转换为中文繁体

热门文章

  1. ML之ME/LF:基于不同机器学习框架(sklearn/TF)下算法的模型评估指标(损失函数)代码实现及其函数(Scoring/metrics)代码实现(仅代码)
  2. OpenCV的k - means聚类 -对图片进行颜色量化
  3. JAVA_OA管理系统(二):SpringMVC笔记基础篇01注入方法
  4. Codeforces - 662A 思路巧妙的异或
  5. 【算法总结】图论相关
  6. GitHub如何删除一个repository(仓库)
  7. Delphi设置表格样式
  8. 多线程,线程同步,synchronized关键字的用法
  9. Linux grep
  10. ES6(三)数组的扩展