Цитата:
У флешки есть пораметр Hidden sectors равен 63
В пакете для int13 42h нужно указывать номер второго сектора как 63+1
Я с этим месяц промучился.
Фантом уже сказал про это повторю другими словами.
Ты при записи данных на флешку перепутал физический диск и логический.
И записал данные на логический. Отсюда и пропущенные 63 сектора.
Физический диск разбивается на логические диски. Логический диск также называют разделом диска.
Цитата:
Как пкркйти в длинный реальный режим и откуда начинается верхняя память??
Для перехода в длинный режим надой... Так стоп. Опять ты определения путаешь.
Real Mode - реальный режим. (Режим совместимости с 8086)
Protected Mode - защищенный режим (Основной режим процессоров IA32)
Long Mode - длинный режим (Основной режим процессоров x86-64(обозначение intel) и AMD64 (обозначение AMD))
Big Mode - большой режим
Big Memory Mode - режим большой памяти
UnReal Mode - нереальный режим
Virtual Mode 86 - виртуальный режим 86 (режим эмуляции 8086)
Так вот Big Mode, Big Memory Mode, UnReal Mode - это один и тот же режим просто его по разному называют.
Переход в любой из этих режимов расписан в интернете подробно.
Верхняя Память начинается с 1мегабайта. Более точно границу можно узнать используя прерывания БИОСа int 15h SMAP. Тебе про это уже говорили. А для удобства использования так как она может быть фрагментной, её надо собрать используя страницы.
Цитата:
она начинается после одного мегабайта(1мб нужно пропустить) или с 0????
Почему с 0???
Цитата:
Но в нереальном режиме есть прирывания биуса и верхняя память, а в зашишеном нету прерываний биуса, есть приоритеты процесов, а в нереальном есть?
Хе-Хе. Сам то понял что написал? ;-) Нереальный режим это реальный режим просто у сегментных регистров предел выставлен на 4ГБ. Так что прерывания работают как в обычном реальном режиме.
Для 64-битных процессоров тоже есть свой нереальный режим у которого предел выставлен на 2^64.
Цитата:
Мне не понятно от чего зависит заполнение таблицы lgdt и на что это влияет
Ты вообще что нибудь про защищенный режим читал? Таблица называется GDT. LGDT сокращение от Load GDT. Заполнение зависит от желания программиста и ограничений процессора.
В GDT находятся описателе сегментов. Сегментые регистры(CS,DS,ES,SS,FS,GS) состоят из двух частей видимой и скрытой. В видемой находится индекс из GDT или LDT (индекс- это порядковый номер элемента массива).
В скрытой части загружается сам описатель сегмента.
Таблица GDT нужна для организации защиты в виде сегментов. К примеру так можно сделать ограничения на стек. И в случае если он переполниться то он не испортит не код не данные. Также этот код позволяет запретить исполнения данных в стеке. Тем самым побороть вирусы которые используют уязвимость "срыв стека".
Плюс позволяет отделить обработчики прерываний и исключений, от кода основной программы.
Отладка это процесс поиска ошибок. Если не настроить обработку исключений то компьютер будет зависать или перезагружаться при малейшей ошибке. Но даже если ты настроишь обработчики исключений и прерываний, то поведение программы может оказаться не предсказуемым. Гипотетически к примеру указатель выйдет за приделы массива и может дойти до кода обработчика и затереть его. Или код может установить не правильный сегмент стека.
Защита позволяет сделать поведение ОС более стабильной.