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