Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > передача управления


Автор: DjoNIK 16.10.2006, 18:42
Препод задал написать boot, кот передаёт управление ядру. Всё хорошо, но компиляторы (TASM,MASM61 и MASM611) - ругаются на 
Код

call     far KernelSEG:0100h

Говорит: Illegal immediate.
ВОПРОС в чём проблема???

Автор: tnt17 16.10.2006, 19:43
юзай jmp far

Автор: DjoNIK 16.10.2006, 20:29
Было бы всё так просто:
Код

    jmp    far PTR KernelSeg:100h

ERROR: segment, group or segment register expected
ИЛИ
Код

    jmp    far KernelSeg:100h

ERROR: missing operator in expression

Автор: DjoNIK 17.10.2006, 20:27
Задача была решена нетривиально:
нашёл симантику длинного перехода
Код

jmp    far PTR 

что соответветствует 0EAh, следовательно вместо
Код

jmp    far PTR KernelSeg:100h

пишим
Код

DB 0EAh
DW KernelSeg
DW 100h

Это не есть решение проблемы как таковое, но может кому-нибудь понадобится.

Автор: Merlin27 27.10.2006, 16:11
Есть решение получше. Вот тут
http://forum.vingrad.ru/act-ST/f-151/t-118336/0.html#look

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)