Question

Because the address xxxx:yyyyyyyy is 32 bits in protected mode, I put a 48-bits address in a piece of memory and want to give indirect jmp, here is what I wrote:

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

address:dd 0
        dw 0

But the nasm shows that jmp fword [address] is wrong, I've read some suggestions like this, but didn't help either, so what should I do?

Était-ce utile?

La solution

The NASM's syntax for near and far calls is different from those of TASM and MASM.

Here are the two options for indirect jumps:

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

fptr dd 0x12345678
     dw 0xABCD

You can also always push the far address onto the stack and do retf.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top