0

因为地址 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]是错误的,我已经阅读了一些类似的建议 但也没有帮助,那我该怎么办?

4

1 回答 1

2

NASM 的近调用和远调用语法不同于 TASM 和 MASM。

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

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

fptr dd 0x12345678
     dw 0xABCD

您也可以始终将远地址压入堆栈并执行retf.

于 2013-04-15T10:18:03.973 回答