Мне понадобилось выполнять в 32х разрядном защищенном режиме код, для этого я в него перешел описав соответствующий дескриптор, а вот с возвратом в РР получился косяк, далее весь код исполнялся как 32х разрядный. Собственно вопрос такой, это я оказался в BRM? чтобы все таки вернуться в 16й реальный режим, я описал еще 1 дескриптор кода, но 16ричный, селектор на который загружал в cs перед выходом в РР, есть ли другой путь возврата в 16ричный РР?
Просто все читать не охота было, вопрос то маленький. я имелл в виду что я сначала загружал в cs селектор на сегмент с 16 ричным кодом, а только потом выходил в РР. Спасибо
В 80286 переход в реальный режим выполнялся с помощью аппаратного сброса, но думаю, этот вариант вам не подойдет
Не было ошибки, код был такой Код (Text): ... переход из защищенного в реальный режим r_mode: mov al, 4 out 80h, al mov ax, 4c00h int 21h mov al, 5 out 80h, al и я видел 5 на POST плате, что меня и удивило
Только если предположить маловероятное - 32-разрядный код выполняется в реальном режиме. Тогда ты мог получить нечто подобное: Код (Text): mov al,4 out 80h,al mov eax,21CD4C00h mov al,5 out 80h,al Хотя я никогда не слышал, чтобы 32-разрядный код мог выполняться в реальном режиме.
Код (Text): mov al,4 out 80h,al mov eax,21CD4C00h mov al,5 out 80h,al Вот я тоже пришел к такому выводу
Может, если перед выходом в реальный в CS будет находиться 32 битовый дескриптор кода. Я впервые это в какой-то книге прочитал, там даже с примером было, вот сейчас не нашел к сожалению. Лишь упоминание этого режима в http://en.wikipedia.org/wiki/Unreal_mode вики, называется как-то наподобие "огромный нереальный режим", хоть он и вполне работоспособен, но на практике его пользование связано с кучей траблов, в частности, что уже используется пара регистров СS:EIP для индексации текущей команды, при прерывании же в стек сохраняется CS:IP со всеми вытекающими...
Все эти режимы кучу раз обсуждались. drem1lin вы тему неудачно назвали, иначе спецы давно бы уж подсказали.