Что такое ассемблер?
Языки ассемблеров
Команды языка ассемблера
Код операции
Псевдооперации
Литералы
Свободный формат команд
Некоторые типичные команды ассемблера для машин с побайтовой организацией
Ассемблеры типа «трансляция — выполнение»
Однопроходный ассемблер
Двухпроходный ассемблер
Символы
Подробная блок-схема прохода
Подробная блок-схема прохода 2
Пример трансляции
Таблицы символов общие замечания
Обработка таблицы
Линейный поиск
Двоичный поиск
Сравнение двоичного и линейного способов поиска
Метод хеширования
Пример хеширования
Скученность
Назначение макрокоманды
Различие между макрокомандами и подпрограммами
Форматы макрокоманды
Ключевой макрос
Макропроцессор

Псевдооперации

Псевдооперации, или директивы, не вызывают непосредственно никаких изменений в объектной программе, а служат для управления ходом работы ассемблера. Существует ясное отличие между псевдооперациями и операциями машины. Первые являются командами на языке ассемблера, которые должны быть выполнены ассемблером; вторые представляют машинные команды, двоичная форма которых явно, записывается в объектный код. Псевдооперации резервируют области памяти, определяют форматы данных, генерируют константы (DS, DC), устанавливают временную или постоянную эквивалентность между областями памяти, определенными посредством различных имен. (SET, EQU), задают информацию об имеющихся базовых регистрах (USING, DROP), начинают или заканчивают программу (START, END). Во время трансляции псевдооперации распознаются и вызывают обращение к подпрограммам, которые выполняют соответствующие действия.

Как было показано в разд. 4.4, поле адреса может быть разделено на несколько подзаписей. Большинство машин, в которых минимальной адресуемой единицей памяти является слово (такие, как UNIVAC 1100 или CDC 6000), допускают только один адрес в поле адреса, вторым адресом (если он существует) является сумматор. Машины с побайтовой организацией обычно допускают два адреса в поле адреса команды. Оба адреса могут рассматриваться непосредственно как перемещаемые адреса, которые задают расстояния до операндов от начала программы, как абсолютные номере регистров, как сумма содержимого базового (или индексного) регистра (регистров) и смещения, как символические имена или как любая комбинация этих возможностей, допускаемая специфическим форматом команды.

Для каждого символического адреса ассемблер отводит место в памяти при условии, что символ появляется в программе в качестве метки ровно один раз и не специфицирован как внешнее имя, для которого память распределяется в другой программе или программном сегменте. Фактическое пространством памяти для внешних имен отводит редактор внешних связей. Некоторые специальные команды допускают наряду с перемещаемыми адресами абсолютные адреса.

Hosted by uCoz