Если происходит прерывание 1, то бит GD ВСЕГДА автоматически сбрасывается и ты можешь делать с регистрами DRx всё, что хочешь. В конце обработчика...
Эксперементируя с защищённым режимом, я обнаружил непонятное(для меня) явление - если записать в защищённом режиме в регистр cr3 отличное от нуля...
_VaStaNi_ Спасибо за пояснение. P.S. Когда я говорил о таймере, я подразумевал, что IDT и контроллёр правильно настроены и прерывания работают.
Я обрабатываю прерывания только от клавиатуры и таймера. Код остальных прерываний для 1 контроллёра такой: push eax mov al,0x20 out 0x20,al...
valeri Нашёл ошибку. Мой код правильный(наверно :)). Ошибка оказалась в другом месте. Зато при тестировании возник другой вопрос: если во время...
valeri А где инициализация второго контроллёра? Я использовал этот код, но наверно он не работает. mov al, 11h out 20h, al...
Попробуй выйти в реальный режим и выполнить int 19h. P.S. Я тоже пытаюсь писать свою ОСь. Я только начал, и у меня возникла проблема:...
valeri Ну что, работает?
Попробуй записать 4 в ячейку 0fh CMOS. Не знаю точно работает-ли,но по идее BIOS должна сразу грузить ОС с диска, без всяких POST.
Насчёт 0-500h я точно не знаю. Я знаю, что когда комп перезагружается таким образом,то BIOS инициализирует контроллёр прерываний и исполняет твой...
Если 1000h - это физический адрес, то не mov word ptr fs:[467h],1000h, а mov word ptr fs:[467h],100h (0100:0000) А так всё правильно.
А в V86 у тебя могут возникнуть проблемы: вдруг BIOS вздумает выполнить привелигированную команду.
Если ты не затёр IDT реального режима, то int 15h действовать должно, но возможно нужно ещё сохранить область данных BIOS.В общем,память 0-500h...
Если ты пишешь свою ось,то что тебе мешает расположить код по физическому адресу меньше 0fffffh?
Я про V86 не подумал. Наверно так легче.
valeri Понял правильно. В любом случае код, исполняемый в реальном режиме должен располагаться по физическому адресу меньше 0fffffh. Что-бы...
NoName Что ты подразумеваешь под логической бомбой? Некую команду?
cseg segment ; ... ; в fs должен лежать селектор дескриптора с базой = 0 mov word ptr fs:[467h],offset in_real_mode mov word ptr...
В реальный режим можно переключиться несколькими способами. Вот пример: ; в fs должен лежать селектор дескриптора с базой = 0 mov word ptr...
Кое-что нашёл насчёт изменения микрокода, но не знаю, может-ли это пригодиться: http://www.ixbt.com/cpu/cpu_errata.html...
Имена участников (разделяйте запятой).