переходы по режимам

Тема в разделе "WASM.BEGINNERS", создана пользователем chooka, 8 май 2007.

  1. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    препод дал задание: перейти из реального режима в защишенный и обратно...
    я вашем сайте я нашел статьи по защ. режиму но там показываеться только как перейти из реального в защ. режим. а вот как перейти обратно??? может есть у кого исходник или информация по этому заданию... зарание спасибо..
     
  2. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    под Intel 32
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    сбрось бит ;)
     
  4. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    подробней может кто нибуть объяснить.... я так думаю что одним сбросом бита не обойтись. может у кого есть исходник?
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    chooka
    Вообще-то Great рассмотрел переходы в обе стороны:
    http://www.wasm.ru/article.php?article=ia32int
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    l_inc
    между прочим да ) у меня там ест ьпереход и туда и обратно.
    тока там переход через сброс бита PE.
    могу дать код для перехода через аппаратный сброс
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    chooka
    А как ты писал переход из PM в RM если не знаешь какой бит отвечает за текущмй режим?
     
  8. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    скинь пожалуйста исходник как переключиться через аппаратный сброс на ch00k@mail.ru или в теме оставь файл..... сдавать все равно этот исходник не буду, хоть посмотрю..... интересно...
     
  9. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    в том то и дело что я незнал как написать переход из PM в RM, я сомнивался что это возможно только переключением одниго бита......
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    лучше почитай маны Intel'a. Том 3A, Глава 9.9.2 "Switching Back to Real-Address Mode".
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну не только одного бита, нужно еще подготовить 16разрядный сегмент кода для будущего выполнения в нем реалмодного кода, подготовить новую IDTR для реального режима, сбросить бит и сделать far jmp
    кажется, ничего не забыл) реализацию можно найти у меня в статье
     
  12. chooka

    chooka New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    8
    чтобы перейти из реального режима в защищенный и обратно
    порядок действий такой:

    инициализировать RM сегменты
    открываем адресную линию A20
    запрет маскируемых прерываний
    запрет немаскируемых прерываний
    загружаем подготовленные GDTR и IDTR
    изменяет один бит регистра cr0
    делаем прыжок в защишенный режим
    инициализировать PM сегменты
    разрешаем использование прерываний
    СДЕСЬ МОЖНО РАБОТАТЬ В ЗИЩИЩЕННЫМ РЕЖИМЕ
    запретить прерывания
    загрузить заранее подготовленную IDTR
    сделать прыжок
    инициализировать RM сегменты
    разрешить прерывания

    вот мне интересно правильно ли я понял порядок действий для переключения между режимами???....или еще нужно где вставить код какую пасять использовать(страничная, сегментная)..??? вот когда включаеш адресную линию A20 её нужно потом закрыть или оставить??
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    код для поддержки страничного преобразования ставится сразу после перехода в PM.
    когда планируешь возвращаться в RM для вызова внешних подпрограмм (биос или че еще) то лучше закрыть