鱼C论坛

 找回密码
 立即注册
查看: 5668|回复: 9

关于汇编neg指令

[复制链接]
发表于 2014-10-28 21:43:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问0-f000h的结果是1000,那么-f000的补码是多少,第一位符号位已经是负数了,负数负数的补码是怎么算的?0-0001h结果就很清楚是ffffh,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-28 23:24:32 | 显示全部楼层
不知道楼主想表达什么,但是我想说neg指令就是求一个数的相反数(无论他是正数还是负数)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-29 20:01:01 | 显示全部楼层
avatar10010 发表于 2014-10-28 23:24
不知道楼主想表达什么,但是我想说neg指令就是求一个数的相反数(无论他是正数还是负数)

你说错了neg指令时求一个数的补码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-30 00:47:24 | 显示全部楼层
jesus 发表于 2014-10-29 20:01
你说错了neg指令时求一个数的补码

mov ax,4
neg ax
你试试这两条指令就知道了,求的真心不是补码,是相反数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-30 08:52:07 | 显示全部楼层
本帖最后由 zhihuzheye 于 2014-10-30 08:58 编辑

看看官方文档Intel® 64 and IA-32 Architectures是怎样描述的

NEG—Two's Complement Negation

Description
Replaces the value of operand (the destination operand) with its two's complement. (This operation is equivalent to
subtracting the operand from 0.) The destination operand is located in a general-purpose register or a memory
location.
This instruction can be used with a LOCK prefix toallow the instruction to be executed atomically.
In 64-bit mode, the instruction’s default operation size is32 bits. Using a REX prefix inthe form of REX.R permits
access to additional registers (R8-R15). Using a REX prefix in the form of REX.W promotes operation to 64 bits. See
the summary chart at the beginning of this section for encoding data and limits.
Operation
IF DEST =0
THEN CF ←0;
ELSE CF ←1;
FI;
DEST ←[– (DEST)]           <-- 这一句的意思非常明确
Flags Affected
The CF flag set to 0 if the source operand is 0; otherwise it is set to 1. The OF, SF, ZF, AF, and PF flags are set
according to the result.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 10:02:55 | 显示全部楼层
avatar10010 发表于 2014-10-30 00:47
mov ax,4
neg ax
你试试这两条指令就知道了,求的真心不是补码,是相反数

neg指令是用0去减,如果是负数就用补码表示。C:\Users\feiyue\Desktop\QQ截图20141030100507.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-30 15:36:15 | 显示全部楼层
本帖最后由 avatar10010 于 2014-10-30 15:41 编辑
jesus 发表于 2014-10-30 10:02
neg指令是用0去减,如果是负数就用补码表示。

正数则用0去减,负数就用补码表示,这跟求这个数的相反数有区别吗?区别只是不同的描述过程,但都得到了相同的结果,没什么好纠结的,
我否定你的只是这一句“你说错了neg指令时求一个数的补码”,应为正数的补码是其本身,你这样描述是不严谨的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-1 11:23:24 | 显示全部楼层
avatar10010 发表于 2014-10-30 15:36
正数则用0去减,负数就用补码表示,这跟求这个数的相反数有区别吗?区别只是不同的描述过程,但都得到了 ...

负数的补码是自己的相反数吗?  负数的补码是自己的相反数+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-1 19:28:15 | 显示全部楼层
本帖最后由 avatar10010 于 2014-11-1 19:31 编辑
jesus 发表于 2014-11-1 11:23
负数的补码是自己的相反数吗?  负数的补码是自己的相反数+1
不解释
实践是检验真理的唯一标准,请亲自在debug下单步调试(代码已给出),谁对谁错自知
mov ax,1
neg ax
mov ax,-1
neg ax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-1 19:56:49 | 显示全部楼层
avatar10010 发表于 2014-11-1 19:28
不解释
实践是检验真理的唯一标准,请亲自在debug下单步调试(代码已给出),谁对谁错自知
mov ax,1

不知道怎么发图片,neg 1,必然结果是ffff,0-1结果是-1,在-1的补码是ffff,。neg -1 ,结果必然是是1,1的结果是正数,补码就是他本身,哎,你还是不懂,自己看书吧,推荐你看本书,微型计算机技术及应用,他是用0去减的啊,为什么是取反,搞不懂你再说神马,明明是补码,硬要说取反,0-正数等于负数,用补码表示。0-负数是正数,就是他自己,你自己不懂的话自己在看看,我也懒得解释了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 17:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表