Псевдокоманды

В поле кода операции могут содержаться также директивы ассемблера. Они называются псевдокомандами, поскольку эти директивы появляются в поле кода операций, но не транслируются в двоичные кольт команд. Псевдокоманды могут выделять память для программ и данных, определять символические имена, выделять память для переменных, генерировать фиксированные таблицы и данные, помечать конец программы и задавать формат листинга программы. Псевдокоманды также фигурируют в постоянных таблицах мнемонических кодов ассемблера. Они не имеют двоичных эквивалентов, но им соответствуют подпрограммы ассемблера, выполняющие предписанные действия.



Стандартными псевдокомандами являются (табл. 4.2):

ORIGIN

EQUATE или DEFINE

RESERVE

DATA

END

LIST

PAGE

SPACE

NAME или TITLE

Конкретные мнемоники, используемые в ассемблерах для обозначения псевдокоманд, могут существенно отличаться от приведенных.

Псевдокоманда ORIGIN (сокращенно ORG) позволяет размещать программы или данные, начиная с определенного места памяти. Программы инициализации, программы обработки прерываний и программа обработки других ситуаций (TRAP-программы) должны начинаться с определенных адресов памяти. Осйовная программа, подпрограммы и данные не должйы накладываться друг на друга и на фиксированные адреса памяти ЭБМ1 Как следствие в одной программе может быть объявлено несколько точек начала. На рис. 4.5 приведен типичный пример.



Псевдокоманда EQUATE (сокращенно EQU) или DEFINE определяет символические имена, которые будут затем использоваться в программе. Определяемое имя записывается в поле метки, а его значение — в поле адреса. Например:

COUNT EQU 10

THRSH EQU 200

KBD EQU 2

 Обычно все определения размещаются в начале программы, поэтому легко можно найти их и использовать при документировании программы. Все определения можно разделить на группы определения: устройства ввода-вывода, имена переменных, фиксированные адреса памяти и параметры.

Псевдокоманда RESERVE (сокращенно RES или DS для DEFINE STORAGE, или RM для RESERVE MEMORY) резервирует для переменных место в оперативной памяти и присваивает символическому имени переменной значение адреса первой ячейки области памяти.

Псевдокоманда TEMP RESERVE 1 резервирует одно слово в памяти и приписывает этому адресу имя TEMP. Впоследствии имя TEMP можно использовать в программе. Аналогично псевдокоманда SYMTB RESERVE 100 резервирует 100 ячеек оперативной памяти и приписывает адресу первой ячейки имя SYMTB. Заметим, что программа может изменять данные, хранимые по этим адресам.

Некоторые ассемблеры позволяют программисту вводить начальные значения в ячейке оперативной памяти. Но не будем пользоваться этой возможностью, так как она основана на предположении, что программа (вместе с начальными значениями) будет загружаться в память каждый раз во время ее исполнения. Большинство микропроцессорных программ записано в ПЗУ. Они должны корректно выполняться каждый раз при включении питания, а содержимое ОЗУ в этот момент однозначно не определено.

Псевдокоманда DATA (часто встречается в вариантах DB-DEFINE BYTE, DW-DEFINE WORD или FCB-FORM CONSTANT BYTE) позволяет размещать в памяти таблицы или константы. Обычно имеется возможность приписывать символическое имя первой ячейке памяти в зарезервированной области. Так, псевдокоманда

TFAC DATA 32

обеспечивает размещение в очередной ячейке памяти числа 32 и приписывает (значение) адреса этой ячейки имени TFAC. Можно разместить в памяти таблицу, используя псевдокоманду типа

SQTAB DATA 0, 1, 4, 9, 16, 25, 36, 49

которая формирует таблицу квадратов восьми последовательных натуральных чисел и приписывает имени SQTAB значение адреса первого элемента.
 

Следует обратить внимание на то , что псевдокоманда DATA помещает в память программ постоянные величины, в то время как псевдокоманда RESERVE обеспечивает выделение области памяти данных (в ОЗУ). Поэтому в поле операндов псевдокоманды DATA указываются конкретные числовые значения; а в поле операндов псевдокоманды RESERVE — число выделяемых ячеек.

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

END FIRST

сигнализирует о конце программы на языке ассемблера и позволяет начать выполнение программы с оператора, имеющего метку FIRST (если программа не содержала ошибок).

Псевдооперация LIST, PAGE, SPACE, TITLE оказывает влияние только на форму выдачи листинга ассемблера.
 



http://profkofr.ru/news/_detailed/49/ защитные кейсы оборудование. . http://www.bt-english.ru/ деловой английский язык в москве.