Assembler
DB 5, 4, 2, 1
Такий псевдооператор DB резервує в пам’яті місце для 12 значень елементів таблиці А_ТАВ кожний розміром в байт. Можна вказувати довільну кількість елементів таблиці рядку, важливо, щоб вони помістились в 132 позиції рядка. В асемблері є операція DUP, яка дозволяє скорочувати задання таблиць у випадку однакових елементів. Даний псевдооператор можна записати так:
А_ТАВ DB 3, 2, 4, 6, 8, 3 DUP (0),
DB 5, 4, 2, 1
В пам’яті можна резервувати пам’ять для змінної, але конкретного значення їй не надавати. Для цього в полі виразу треба вказати знак питання. Приклад: X_1аDB ? X_2 DW ?. Такі псевдооператори резервують в пам’яті місце байту і слова, але початкового значення їм не надають. X_1аi X_2 при цьому не будуть містити ніяких специфічних значень, навіть (0). Можна зарезервувати в пам’яті місце для таблиці. Наприклад: А_ТАВ DB 12 DUP (3) резервує місце для таблиці з 12 елементів. Можна в якості значення змінної задавати рядок символів, для цього текст заключається в апострофи.
3.Псевдооператори визначення сегменту і процедури. Для визначення сегменту використовуються псевдооператори: SEGMENTаi ENDS. Це псевдооператори ділять вихідну програму на сегменти. Вони відповідно відмічають початок і кінець сегменту, але вини не повідомляють асемблер якого роду сегмент повинен бути визначений. Для цього використовується псевдооператор ASSUME, він має таку форму запису: ASSUME регістр сегмента: ім’я сегмента [,…….]. це регістр сегмента – це ім’я одного із сегментних регістрів CS, DS, SS, ES. Якщо П 80386 і вище то там ще буде FS, GS. Ім’я сегмента це ім’я яке вказується в псевдооператорі SEGMENT. Цей псевдооператор допомагає асемблеру перетворювати мітки в адреси, він повідомляє, яким регістром хочете скористяватися при адресації міток. Наприклад: ASSUME DS: DSEG – означає, якщо при трансляції програми буде згадана мітка із сегмента DSEG, тобто регістр DS буде завжди вказувати на початок сегмента DSEG. Майже завжди його поміщають після псевдооператора SEGMENT. Зауважимо, що адресу початку сегменту потрібно явно завантажити в DS. Псевдооператори PROG і ENDP визначають початок і кінець процедури. Кожна процедура повинн0ппочинатись
Структура программы на ассемблере Синтаксис ассемблера Стандартные директивы сегментации Упрощенные директивы сегментации
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы. Предложения ассемблера бывают четырех типов:
команды или инструкции представляющие собой символические аналоги машинных команд.
В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора; макрокоманды - оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями; директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении; строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.Синтаксис ассемблера Предложения, составляющие программу, могут представлять собой синтаксическую конструкцию, соответствующую команде, макрокоманде, директиве или комментарию. Для того чтобы транслятор ассемблера мог распознать их, они должны формироваться по определенным синтаксическим правилам. Для этого лучше всего использовать формальное описание синтаксиса языка наподобие правил грамматики. Наиболее распространенные способы подобного описания языка программирования - синтаксические диаграммы и расширенные формы Бэкуса-Наура. Для практического использования более удобны синтаксические диаграммы. К примеру, синтаксис предложений ассемблера можно описать с помощью синтаксических диаграмм, показанных на следующих рисунках.
Рис. 1. Формат предложения ассемблера
Рис. 2. Формат директив
Рис. 3. Формат команд и макрокоманд