Пишем программу начальной загрузки компьютера

Еще одна полезная программа


В качестве еще одного примера приведем программу определения объема памяти.средствами BIOS.

Экран программы getmem.asm

Memory size
Int 12       : 0280h KB
Int 15 (88)  : FFFFh KB
Int 15 (E801): 0007FBC0h KB > 1M available 
               0007FBC0h KB > 1M configured 
Int 15 (E820): is present
Bye!

На этой задаче хорошо видны изменения в программе BIOS, вызванные увеличением возможного объема памяти персонального компьютера. Для первых компьютеров достаточно было прерывания Int 12h, которое дает объем основной памяти (не более 640 Кб). С появлением расширенной (extended) памяти для определения ее объема введена функция 88h прерывания Int 15h, которая дает объем расширенной памяти за пределами первого мегабайта. Сначала предел был для памяти 16 Мб (3С00h), затем его расширили до 64 Мб.
Объем памяти продолжал расти и в BIOS появились функции E8h прерывания Int 15h.  Подфункция E801h дает объем доступной и конфигурированной памяти до 4Гб. Подфункция E820h даёт карту конфигурированной памяти, то есть размещение, назначение и размеры блоков памяти. Очевидно, что такой подход позволяет программе получить информацию при любом объеме памяти. Как определяет объем памяти сама программа POST мы можем только догадываться или дизассемблировать BIOS и изучить код программы. Ранее разработчики BIOS публиковали исходные тексты, но потом перестали.
Так как длина нашей программы не может быть более 512 байт, то для функции E820h программа getmem.asm проверяет только наличие этой функции в BIOS.
Еще раз вспомним, что программа выполняется сразу после POST, поэтому мы можем быть уверены, что вызываем обработчики прерываний BIOS, а не какой-либо операционной системы и, таким образом, теперь у нас есть средство независимого определения объема установленной памяти.
Не трудно преобразовать нашу программу в программу типа .COM или .EXE и выполнить ее под управлением MS DOS или в командном окне Windows. Мы увидим, что результаты будут отличаться, а это и означает, что операционная система заменила обработчики прерываний или данные в памяти, которые они используют.
Мы предпринимаем наше путешествие в познавательно-развлекательных целях. Некоторое познание мы получили. Теперь до отправления поезда с этой станции желающие могут немного поиграть в вариант известной логической игры "Бой кирпичей", кстати, любимой игры моей жены.
Кирпичики

[Назад] [↑]  [Вперед]
Hosted by uCoz