装配中的jmp

时间:2012-04-20 20:42:59

标签: assembly

如果有人可以向我解释一下jmp指令中的“:”有什么用,我真的很感激,下面是来自wiki的wiki

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

5 个答案:

答案 0 :(得分:1)

没有引用wiki,我只能猜测,但我担心这与8088/86/286/386处理器有关,它们具有“分段”地址空间。

答案 1 :(得分:1)

基于x86的处理器工作为segmented memory architecture

基本上使用两部分来解决内存问题。段地址和偏移地址。 ':'前面的部分是段地址,':'后面的部分是偏移地址。

答案 2 :(得分:1)

0x1234:0x5678样式地址是分段地址。它的全部意思是0x1234 * 0x10 + 0x5678。您提供的示例为0xB2338

答案 3 :(得分:1)

这是一个很大的跳跃。它的意义在真实模式和保护模式之间有所不同:

  • 实模式→它有一个段和一个偏移量,跳转目标是segment * 16 + offset
  • 保护模式→它有一个选择器,指向GDT(全局描述符表,整个系统)或LDT(本地描述符表,每个进程)中的描述符。跳转目标取决于描述符类型(并且需要具有足够的权限):
    • 代码段:它会在所描述的细分中跳转到offset
    • 调用门,任务门,TSS:忽略offset,并执行相应的操作(例如:任务切换)。

答案 4 :(得分:0)

我猜0xACDC是代码段地址,0x55​​78是代码中的偏移量。