Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kratkie_otvety_ekzamen_CP_2011-12.docx
Скачиваний:
19
Добавлен:
14.04.2019
Размер:
132.13 Кб
Скачать

Формат директив ассемблера и операторов распределения данных

Директивы ассемблера и операторы распределения данных имеют несколько иной формат:

Имя Директива Операнды ;Комментарий

Рассмотрим назначение отдельных полей данного формата:

Имя директивы, в отличие от метки, никогда не заканчивается двоеточием. Некоторые директивы требуют обязательного наличия метки.

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

Операнды конкретизируют действия, выполняемые по данной директиве.

Поле комментария аналогично такому же полю в командных опе­раторах.

Элементы операторов

Дадим определения основных терминов, которые будут использо­ваны в дальнейшем.

Ключевые (зарезервированные) слова представляют собой имена, имеющие для ассемблера строго определенный смысл. Их нельзя использовать в качестве идентификаторов.

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

Ассемблер процессора 8086 является жестко типизированным языком. Это означает, что операнды команд (регистры, переменные, метки, константы) имеют связанный с ними  атрибут  типа,  который сообщает ассемблеру некоторую  информацию  об  операнде.  Атрибут типа обычно подразумевается по умолчанию,  но  при  необходимости может быть задан явно.

Регистры

8-разрядным регистрам AL, AH, BL, BH, CL, CH, DL, DH при­писан тип BYTE, а 16-разрядным регистрам AX, BX, CX, DX, BP, SP, SI, DI и сегментным регистрам CS, DS, SS, ES приписан тип WORD.

Разряды регистра флажков представляют собой однобитные ре­гистры, для установки и сброса каждого из которых используются отдельные машинные команды.

Переменные

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

Переменная - это единица программных данных, имеющая симво­лическое имя.

Большинство ассемблерных программ начинается с определения данных, которыми они будут оперировать. Распределение ячеек памя­ти и присвоение им идентификаторов осуществляется с помощью директив DB (Define Byte - определить байт), DW (Define Word - определить слово), DD (Define Doubleword - определить двойное слово), DQ (Define Quadword - определить 4 слова) или DT (Define Tenbyte - определить 10 байтов).

Операторы распределения данных имеют следующий формат:

Имя DB нач.значение, нач.значение, ...

Имя DW нач.значение, нач.значение, ...

Имя DD нач.значение, нач.значение, ...

Имя DQ нач.значение, нач.значение, ...

Имя DT нач.значение, нач.значение, ...

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

Для задания начальных значений могут использоваться числовые константы и символьные цепочки. Если не нужно задавать начальное значение переменной, то вместо константы ставится вопросительный знак.

Например, оператор

alpha   DW  0Ah

резервирует слово памяти,  присваивает ему идентификатор alpha  и заносит в него код 000A;

string  DB 'Привет'

резервирует 6  байт  памяти  и  заносит  в  них строку символов и присваивает этой строке идентификатор string.

Чтобы точно определить тип переменной, на которую произво­дится ссылка, ассемблер использует операторы BYTE PTR, WORD PTR и DWORD PTR (указатель на байт, слово и двойное слово соответствен­но).

Для инициализации массивов применяется конструкция DUP, которая в общем случае имеет вид:

n  DUP (нач. значение, нач. значение, ...)

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

Например, оператор

Addr    DD  20 DUP (?)

резервирует место для  20  полных  адресов  и  присваивает  этому массиву идентификатор Addr.

МЕТКИ

Метка представляет собой символическое имя для адреса ячейки памяти и предназначена для использования в качестве операнда в командах управления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]