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