Snow 发表于 2011-7-13 01:11:30

关于jmp指令!!!求助

如果有一个jmp指令 机器码是F6EB
即跳到偏移为F6的地址去
那怎么知道F6是个正数还是个负数?就是说CPU执行这条指令的时候怎么知道要向下跳转还是向上跳转?

嗜血丨灵异狂 发表于 2011-7-13 04:51:52

是负数应该往上跳

Snow 发表于 2011-7-13 09:29:14

此问题纠结已久。。
请问如何判断一个十六进制数补码是正数还是负数?

demon 发表于 2011-7-13 09:41:44

正数的补码是其本身。
十六进制 F6H的二进制 数表示为1111-0110

1-111-0110最左边为1代表为负数
负数以补码存放,对其减一取反
减一1111-0101
取反0000-1010   
结果为 -10

libocdf 发表于 2011-7-13 09:42:24

这一点我倒是没注意,谢楼主提醒额

Snow 发表于 2011-7-13 10:02:54

4楼的哥十分彪悍 威猛..
你最后算到的是0000-1010 十进制是10吧? 我是这样算的 看看对吗
F6的二进制原码:11110110除符号位外取反得10001001然后加1得10001010

demon 发表于 2011-7-13 10:32:08

Snow 发表于 2011-7-13 10:02 static/image/common/back.gif
4楼的哥十分彪悍 威猛..
你最后算到的是0000-1010 十进制是10吧? 我是这样算的 看看对吗
F6的二进制原码 ...

{:5_109:}
000-1010 是十进制10

你后面的理解我说下,做个交流!
这个数是正数或者负数,我们看它的符号位,1为负,0为正

负数是补码形式存放的,
也就是正数先去反加1
例:
0000-0101            ??你猜我们算下这个正数的负数表示形式
先取反
1111-1010
在加1
1111-1011         由符号位,这个数已经是负数了,至于是负几,看下它的正数!

知道负数,求正数
先减1,在取反,就是把上面的一个逆向!
是全部位进行操作!



demon 发表于 2011-7-13 10:42:56

以上理解的话,你之前计算的二进制码!

10001010算下正数


~~~~~~~~算完再看~~~~~~~~~~~~


减一
10001001
取反
01110110
结果76H十进制118!

Snow 发表于 2011-7-13 11:42:55

demon 发表于 2011-7-13 10:42 static/image/common/back.gif
以上理解的话,你之前计算的二进制码!

10001010算下正数


取反 符号位是不变的吧?

Snow 发表于 2011-7-13 14:27:34

看你说得好晕啊。

Snow 发表于 2011-7-13 17:30:14

没问题 了 搞掂了 谢谢

沧海一笑 发表于 2011-7-29 11:37:24

:lol。。。。。。。。。。。。

weixianlang 发表于 2011-7-30 11:39:27

这就是SF标志位的作用了!

yulin3192 发表于 2011-7-30 13:14:58

看来的我理解能力还是太差啊
:Q
页: [1]
查看完整版本: 关于jmp指令!!!求助