|
Листинг 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.
|