因为地址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这样的建议,但也没有帮助,所以我该怎么办?
答案 0 :(得分:2)
NASM的远程和远程呼叫语法与TASM和MASM的语法不同。
以下是间接跳转的两个选项:
jmp [fptr] ; jump to CS:0x12345678
jmp far [fptr] ; jump to 0xABCD:0x12345678
fptr dd 0x12345678
dw 0xABCD
您也可以将远地址推送到堆栈并执行retf
。