【发布时间】:2013-04-15 09:29:41
【问题描述】:
因为地址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 的建议,但也没有帮助,我该怎么办?
【问题讨论】:
-
见this,在我的情况下,一个方法选择了一个正确的tss来jmp,所以在运行之前地址是未知的,所以jmp xxxx:yyyyyyyy是没用的。
-
@AkiSuihkonen 你错了。您所说的是
JMP ptr16:32表单,但也有JMP m16:32。请参阅您的 Intel 或 AMD 手册。 -
Nasm 是一个不错的家庭汇编程序,并且不知道 fword。 :) 只是
jmp far [address]应该这样做。如果不是 32 位代码,可能是jmp far dword [address]。
标签: assembly x86 protected-mode