На главную Назад
Добро пожаловать, уважаемый посетитель!

Листинг BIOS дан в приложении A технического описания IBM PC.Этот

листинг - описание модуля ПЗУ объемом 8K, расположенного по

адресам, начиная с 0FE000H в адресном пространстве микропроцессора

8088.Этот модуль ПЗУ - один из пяти модулей, размещенных на

системной плате фирмой IBM.Другие четыре модуля ПЗУ содержат в

себе интерпретатор с языка Бейсик.Исходные тексты программ

Бейсика, так же, как и DOS, являются частной собственностью фирмы и

не печатаются в техническом описании.Но тексты программ входящих

в BIOS фирма IBM опубликовала, так что каждый может изучить

интерфейсы с BIOS.

 

Листинг ассемблера в приложении A - это полный листинг

содержимого ПЗУ. Это не листинг Макроассемблера фирмы IBM потому,

что в то время, когда фирма IBM разрабатывала BIOS, Макроассемблер

не существовал. Для разработки BIOS использовался Макроассемблер

фирмы Intel, с помощью которого получился данный листинг. Ассемблер

фирмы Intel идентичен ассемблеру фирмы IBM в использовании и

синтаксисе. Как вы видите, ассемблер фирмы Intel не печатает в том

же виде адресное поле, а также отличается некоторыми

псевдооперациями ассемблера. Но с этими небольшими отличиями

работать будет не сложно.

 

В листинге программы BIOS описаны шесть различных сегментов. Из

них по-настоящему интересны для нас лишь три. Сегмент ABS0,

расположенный по адресу 0, содержит векторы прерываний, с которыми

имеет дело BIOS и процедура POST. В этом сегменте нет никаких

определений данных; он просто отводит место векторам. Эта область

попадает в ОЗУ, и поэтому программа BIOS должна инициализировать ее

после включения питания. Сегмент DATA, расположенный в параграфе

40H или по абсолютному адресу 400H, определяет все поля данных,

используемых в BIOS. Аналогично этот сегмент определяет места

переменных, но не их начальные значения. Наконец, сегмент CODE

начинается в параграфе 0F000H. В первых 56K байтах этого сегмента

ничего нет, первый байт сегмента CODE имеет абсолютный адрес

0FE000H или смещение 0E000H в сегменте. Эти данные, от 0FE000H до

0FFFFFH, представляют содержимое модуля ПЗУ с BIOS объемом 8K. Эти

программы вместе с ПЗУ с Бейсиком - единственные, которые

содержатся в машине в момент начала работы.

 

Еще одно замечание. Фирма IBM не разрабатывала BIOS в виде

одного большого исходного текста. Каждая функция была разработана в

виде отдельного модуля, а затем модули были связаны вместе,

сформировав BIOS. Возможно вы увидите некоторые связки в программе.

Для публикации фирма IBM скомбинировала все исходные тексты в один

большой исходный текст и ассемблировала его. Такое единое

ассемблирование позволило показать абсолютные адреса каждой функции

BIOS.


 

Mail.ru