Защищённый режим

Тема в разделе "WASM.BEGINNERS", создана пользователем Dima_, 4 ноя 2006.

  1. Dima_

    Dima_ New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2006
    Сообщения:
    7
    Такая проблема: при переходе из реального режима в защищённый комп просто перезагружается. Вроде GDT сформировал верно, загрузил её, отключил все маскируемые и немаскируемое прерывания. Дебагером смотрю - после команды mov cr0,ax, где битик РЕ =1 машина перезагружается. После команды mov, как и положено, дальний переход.
    Подскажите, пожалуйста, в чём тут загвоздка.
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    А какой дебаггер (кроме ВОШЬ :) ), переносит вход в защ. режим?
     
  3. nermest

    nermest New Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    157
    а точно ли после mov cr0, eax ?
    попробуй поставить jmp $ после модификации cr0. Если комп зависнет, то у тебя проблемы с прыжком в сегмент защещенного режима.
     
  4. Dima_

    Dima_ New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2006
    Сообщения:
    7
    Что за ВОШЬ?
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Dima_
    Наверно БОРШЬ(Bochs)? Но помойму лучше головой думать.
     
  6. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
  7. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    100 % в точку!! и при этом на бумаге записывать умные мысли. Еще желательно чтоб компов в радиусе 20 км. небыло, дабы соблазнов сделать задачу методом научного тыка исключить... и только IA vol1-3 под рукой иметь.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _Serega_
    Просто мне Borsh как отладчик не сильно помог. А из эмулятор больше VMWare предпочитаю.
    А насчет ошибки. Это либы не верно расчитан JMP, селектор не правельно задан или смещение не верно посчитанно.
    Или ошибка в lgdt, GDTR опять таки все в расчет адресса уперается.
    Ошибка может быть и после JMP опять по тойжей причине.
     
  9. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Этого мало -- программные особые случаи/ловушки все равно остаются разрешенными и при их возникновении используется IDT. Если хотите разобраться сами -- заполните таблицу прерываний от 0 до 18 (лучше от 0 до 31) с выводом информации об ошибке и выполните переход. Про необходимость jmp уже сказали.

    Если не поможет -- выложите исходник.
     
  10. Dima_

    Dima_ New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2006
    Сообщения:
    7
    А отлаживать по-твойму прогу не надо?
     
  11. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Обычно сразу работает :)!! чессн слово !!
     
  12. Dima_

    Dima_ New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2006
    Сообщения:
    7
    Спасибо за совет. Всё заработало. Проблема и правда была в jmp - чуть-чуть ошибся формируя GDTR и соответственно прыгать некуда.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    _Serega_
    emu386 AFAIR тоде переносит =)