Меню сайта

Урок 149. Замечания по листингу ROM BIOS

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

Категория: Программирование на Ассемблере | Дата: 05.03.13

Меню раздела
Блок