关于保护模式中间接jmp的问题

时间:2013-04-15 09:29:42

标签: assembly x86 protected-mode

因为地址xxxx:yyyyyyyy在保护模式下是32位,所以我在一块内存中放了一个48位的地址,并希望给出间接jmp,这是我写的:

mov eax,s1
mov [address],eax
mov ax,SelectorCode32
mov [address+4],ax
jmp  fword [address]

address:dd 0
        dw 0

但是,nasm表明jmp fword [address]是错误的,我已经阅读了一些像this这样的建议,但也没有帮助,所以我该怎么办?

1 个答案:

答案 0 :(得分:2)

NASM的远程和远程呼叫语法与TASM和MASM的语法不同。

以下是间接跳转的两个选项:

jmp [fptr] ; jump to CS:0x12345678
jmp far [fptr] ; jump to 0xABCD:0x12345678

fptr dd 0x12345678
     dw 0xABCD

您也可以将远地址推送到堆栈并执行retf

相关问题