АССЕМБЛЕР. Компоновщик. Загрузчик. Макрогенератор


Таблица мнемокодов. - часть 2


Например, m=000b означает, что адрес должен модифицироваться по двум регистрам BX и SI, m=110b - адрес не модифицируется, m=111b - адрес модифицируется по регистру BX и т.д.. Так вот, определив типы операндов команды без учета модификаторов и выбрав из таблицы мнемокодов соответствующий КОП, ассемблер затем просто слегка корректирует этот КОП, настраивая его на нужные модификаторы: в нашем примере с B[BX] код 81 06 (здесь m=110b) надо заменить на 81 07 (m=111b). Поэтому в самой таблице не надо хранить КОПы для всех сочетаний модификаторов, а достаточно хранить только один, так сказать, базовый КОП, отталкиваясь от которого уже просто получить окончательный КОП, учитывающий указанные модификаторы.

В таблице мнемокодов также указывается размер машинных команд, их длина в байтах. Эта информация очень важна для ассемблера на 1-м проходе.

Теперь рассмотрим таблицы, которые ассемблер строит в процессе своей работы и в которых собираются сведения о той программе, которую ассемблер сейчас транслирует. Вначале эти таблицы пусты, а затем по мере просмотра текста программы ассемблер на 1-м проходе заносит в них информацию о тех или иных объектах программы. Это - таблица имен, таблица сегментов и таблица распределения сегментных регистров.

 




Начало  Назад  Вперед



Книжный магазин