Поскольку адрес хххй: YYYYYYYY 32 бита в защищенном режиме, я поставил 48-битный адрес в куске памяти и хотим, чтобы дать косвенную jmp
, вот что я писал:Вопросов о косвенном 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] (http://en.wikipedia.org/wiki/FWord), и в моей ситуации метод выбирает правильный tss для jmp, так что адрес неизвестен до его запуска, поэтому jmp xxxx: yyyyyyyyy бесполезно. – reavenisadesk
@AkiSuihkonen Вы ошибаетесь. Речь идет о форме 'JMP ptr16: 32', но есть также' JMP m16: 32'. См. Руководство Intel или AMD. –
Nasm - хороший семейный ассемблер и не знает флага. :) Просто 'jmp far [address]' должен это сделать. Может быть, 'jmp far dword [address]', если это не в 32-битном коде. –