【发布时间】:2018-10-18 03:06:03
【问题描述】:
我知道在装配中跳转基本上是从一个位置到另一个位置。
假设我们有
804828f: 74 05 je XXXXXXX
8048291: e8 1e 00 00 00 call 80482b4
根据这本书,我真正要做的只是将 0x05 添加到 8048291 产生 8048291,但我对这里的命令要求什么感到困惑。根据书,操作数 je 是 je 等于 / 0
然后我们有一个复杂的问题,我真的很难理解。
8048357: 72 e7 jb XXXXXXXX
8048359: c6 05 10 a0 04 08 01 movb $0x1,0x804a010
据此,由于 e7 是 -25 的 1 位有符号表示, jb 转到地址 8048340。
那个。 . .对我来说毫无意义。 . .完全没有。一方面,如果某个东西是有符号的并且 1 字节不应该它的最大值只是 2?其次,如果某物是-25,那么为什么原点是8048340?如果没有 19 人,我们是如何从 59 人变成 40 人的?
我认为答案是:
我有一秒钟的想法,但是要从十六进制 25 中得到 19,我是否应该将 16 除以 25,取其余数 9,然后将 9 加到 10 中,即 1 在这种情况下代表什么?
不过,我真的迷失了有符号的单字节值。
【问题讨论】:
标签: assembly x86 machine-code