Такая проблема: при переходе из реального режима в защищённый комп просто перезагружается. Вроде GDT сформировал верно, загрузил её, отключил все маскируемые и немаскируемое прерывания. Дебагером смотрю - после команды mov cr0,ax, где битик РЕ =1 машина перезагружается. После команды mov, как и положено, дальний переход. Подскажите, пожалуйста, в чём тут загвоздка.
а точно ли после mov cr0, eax ? попробуй поставить jmp $ после модификации cr0. Если комп зависнет, то у тебя проблемы с прыжком в сегмент защещенного режима.
100 % в точку!! и при этом на бумаге записывать умные мысли. Еще желательно чтоб компов в радиусе 20 км. небыло, дабы соблазнов сделать задачу методом научного тыка исключить... и только IA vol1-3 под рукой иметь.
_Serega_ Просто мне Borsh как отладчик не сильно помог. А из эмулятор больше VMWare предпочитаю. А насчет ошибки. Это либы не верно расчитан JMP, селектор не правельно задан или смещение не верно посчитанно. Или ошибка в lgdt, GDTR опять таки все в расчет адресса уперается. Ошибка может быть и после JMP опять по тойжей причине.
Этого мало -- программные особые случаи/ловушки все равно остаются разрешенными и при их возникновении используется IDT. Если хотите разобраться сами -- заполните таблицу прерываний от 0 до 18 (лучше от 0 до 31) с выводом информации об ошибке и выполните переход. Про необходимость jmp уже сказали. Если не поможет -- выложите исходник.
Спасибо за совет. Всё заработало. Проблема и правда была в jmp - чуть-чуть ошибся формируя GDTR и соответственно прыгать некуда.