[<ідентифікатор>] псевдооператор [<операнд>][; коментар].
Обов’язковим є тільки поле псевдооператори. Для одних псевдооператорів ідентифікатор обов’язковий, для інших заборонений, для третіх необов’язковий, це ж відноситься і до операнди, коментарі завжди необов’язкові. Псевдооператор може починатися в будь-якому місці рядка, він повинен бути віддаленим від попереднього поля хоча б одним пропуском. Ми розглянемо найбільш розповсюджені псевдооператори, їх можна поділити на дві групи: псевдооператори даних і псевдооператори керування лістингом. Псевдооператори даних можна розділити на 5 груп:а
Позначені знаком “=” ідентифікатори можна перевизначати, а визначені псевдооператором EQU неможна. Псевдооператор EQU можна використовувати як з числовими такі з текстовими виразами, а псевдооператор “=” тільки з числовими. Приклади:
К1аEQU 1024 – присвоєння імені константі; T_1аEQU DS:[BP][SI]. Комбінації адрес DS:[BP][SI] присвоюється символічне ім’я, всюди в програмі замість комбінації цих адрес можна використовувати T_1. В_Т EQU B_T1, визначення синоніму, тобто ім’я В_Т буде мати те ж значення як і зміна В_Т1. REG1аEQU CX – присвоєння імені регістру. При використанні псевдооператора “=” в якості виразу можуть виступати математичні перетворення. В директиві EQU також можуть бути прості математичні перетворення, вони будуть виконані асемблером під час трансляції. Наприклад: CON1аEQU CON2*2 CONS1=24 CONS1=29 CONS1=CONS1+1.
DB 5, 4, 2, 1
Такий псевдооператор DB резервує в пам’яті місце для 12 значень елементів таблиці А_ТАВ кожний розміром в байт. Можна вказувати довільну кількість елементів таблиці рядку, важливо, щоб вони помістились в 132 позиції рядка. В асемблері є операція DUP, яка дозволяє скорочувати задання таблиць у випадку однакових елементів. Даний псевдооператор можна записати так:
А_ТАВ DB 3, 2, 4, 6, 8, 3 DUP (0),
В пам’яті можна резервувати пам’ять для змінної, але конкретного значення їй не надавати. Для цього в полі виразу треба вказати знак питання. Приклад: X_1аDB ? X_2 DW ?. Такі псевдооператори резервують в пам’яті місце байту і слова, але початкового значення їм не надають. X_1аi X_2 при цьому не будуть містити ніяких специфічних значень, навіть (0). Можна зарезервувати в пам’яті місце для таблиці. Наприклад: А_ТАВ DB 12 DUP (3) резервує місце для таблиці з 12 елементів. Можна в якості значення змінної задавати рядок символів, для цього текст заключається в апострофи.
Структура программы на ассемблере Синтаксис ассемблера Стандартные директивы сегментации Упрощенные директивы сегментации
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы. Предложения ассемблера бывают четырех типов:
команды или инструкции представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора; макрокоманды - оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями; директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У