Читайте также: |
|
Ассемблерная программа определяет не только машинные команды, которые нужно выполнять процессору, но и команды, которые нужно выполнять самому ассемблеру (например, выделить немного памяти или выдать новую страницу листинга). Команды для ассемблера называются псевдокомандами, или ассемблерными директивами. В листинге 7.1 мы уже встречали типичную псевдокоманду DD. В табл. 7.2 перечислены некоторые другие псевдокоманды (директивы). Они взяты из ассемблера MASM семейства ассемблеров Intel.
Таблица 7.2. Некоторые директивы ассемблера MASM
Директива SEGMENT | Описание Начало нового сегмента (текста, данных и т. п.) с определенными |
атрибутами | |
ENDS | Завершение текущего сегмента |
ALIGN | Управление выравниванием следующей команды или данных |
EQU | Определение нового символа, равного данному выражению |
DB | Выделение памяти для одного или нескольких байтов |
DW | Выделение памяти для одного или нескольких 16-разрядных полуслов |
DD | Выделение памяти для одного или нескольких 32-разрядных слов |
Директива | Описание |
DQ | Выделение памяти для одного или нескольких 64-разрядных двойных слов |
PROC | Начало процедуры |
ENDP | Завершение процедуры |
MACRO | Начало макроса |
ENDM | Завершение макроса |
PUBLIC | Экспорт имени, определенного в данном модуле |
EXTERN | Импорт имени из другого модуля |
INCLUDE | Вызов другого файла и включение его в текущий файл |
IF | Начало условного ассемблирования программы на основе данного |
выражения | |
ELSE | Начало условного ассемблирования программы, если условие для |
директивы 1Р не выполнено | |
ENDIF | Завершение условного ассемблирования программы |
COMMENT | Определение нового символа начала поля комментариев |
PAGE | Принудительный разрыв страницы в листинге |
END | Завершение ассемблерной программы |
Директива SEGMENT начинает новый сегмент, а директива ENDS завершает его. Разрешается начинать текстовый сегмент, затем начинать сегмент данных, затем переходить обратно к текстовому сегменту и т. д.
Директива ALIGN передает следующую строку (обычно данные) по адресу, заданному аргументом директивы. Например, если текущий сегмент уже содержит 61 байт данных, тогда после выполнения директивы ALIGN 4 следующим выделяемым адресом будет адрес 64.
Директива EQU дает символическое название некоторому выражению. Например, после следующей директивы символ BASE можно использовать в программе вместо значения 1000:
BASE EQU 1000
Выражение, которое следует за директивой EQU, может содержать несколько символов, соединенных знаками арифметических и других операций, например:
LIMIT EQU 4 * BASE + 2000
Большинство ассемблеров, в том числе MASM, требуют, чтобы символ был определен в программе до его появления в таком выражении, как это.
Директивы DB, DD, DW и DQ выделяют память для одной или нескольких переменных размером 1, 2, 4 и 8 байт соответственно. Например:
Дата добавления: 2014-12-19; просмотров: 130 | Поможем написать вашу работу | Нарушение авторских прав |