1

如果有人可以向我解释“:”在 jmp 指令中的用途,我将不胜感激,下面是来自 wiki 的 wiki

JMP 0x89AB, I know that this one is to jump to that position 
JMP 0xACDC:0x5578 what is that?
4

5 回答 5

1

如果不参考 wiki,我只能猜测,但我敢说这与 8088/86/286/386 处理器和它们的“分段”地址空间有关。

于 2012-04-20T20:48:26.720 回答
1

基于 x86 的处理器采用分段内存架构工作。

基本上内存是使用两个部分来寻址的。段地址和偏移地址。':' 之前的部分是段地址,':' 之后的部分是偏移地址。

于 2012-04-20T20:48:56.637 回答
1

0x1234:0x5678 样式地址是分段地址。它的意思是0x1234 * 0x10 + 0x5678。你给出的例子是0xB2338.

于 2012-04-20T20:54:02.583 回答
1

那是一个很大的跳跃。真实模式和保护模式的含义不同:

  • 实模式 → 它有一个段和一个偏移量,跳转目标是segment * 16 + offset.
  • 保护模式 → 它有一个选择器,指向 GDT(全局描述符表,用于整个系统)或 LDT(本地描述符表,每个进程)中的描述符。跳转目标取决于描述符类型(并且需要有足够的权限):
    • 代码段:它跳转到offset所描述的段内。
    • 调用门、任务门、TSS:offset被忽略,并执行适当的操作(例如:任务切换)。
于 2012-04-21T11:01:46.810 回答
0

我猜 0xACDC 是代码段地址,而 0x5578 是代码内的偏移量。

于 2012-04-20T20:48:43.017 回答