Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_на_ассембл_для_WINLOWS.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
907.78 Кб
Скачать

2.6.7. Директивы управления трансляцией

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

формат: END [<имя>]

где [<имя>] - точка входа в программу.

Параметр формально не является обязательным, но надо иметь в виду, что при отсутствии указания точки входапрограмма не запустится на исполнение после загрузки ЕХЕ-Файла.

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

формат: ORG <выражение>

2.6.8. Макросредства

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

Макроопределение представляет собой последовательность команд, начинающуюся директивой MACRO и заканчивающуюся директивой ENDM.

формат: <имя> MACRO [<формальный_параметр>,.........]

<тело макрокоманды>(последовательность строк на языке ассемблера)

ENDM

Именем макрокоманды считается имя, указанное в директиве MACRO, формальные параметры представляют собой внутренние по отношению к данному макроопределению имена, которые используются для обозначения значений, передаваемых в макрорасширение при трансляции. Может быть определено любое число параметров, но все они должны помещаться в одной строке и разделяться запятыми.

Если в теле макрокоманды есть метки, то они должны быть описаны директивой LOCAL.

формат: LOCAL <метка_1>[,...........]

Тогда при каждом макровызове значение метки будет соответствовать конкретному макрорасширению. Директива LOCAL должна следовать в тексте непосредственно за директивой MACRO.

Здесь рассматривались наиболее часто используемые директивы. Перечень директив с кратким описанием их назначения приведен в прил. 2.

2.7. Операции в выражениях

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

2.7.1. Арифметические операции

Арифметические операции производятся над числовыми операндами и дают числовой результат.

формат выражения:<значение1> <знак операции> <значение2>

Знаки операций и результат их выполнения приведены в табл. 1

Таблица 1

Арифметические операции

Знак операции

Действие

+

Складывает <значение1> и <значение2>

-

Вычитает <значение2> из <значения1>

*

Умножает <значение1> на <значение2>

/

Делит нацело <значение1> на <значение2>. и возвращает частное

MOD

Делит нацело <значение1> на <значение2> и возвращает остаток

Выражения с операциями сдвига имеют отличный от первого формат: <значение> <знак операции> <выражение>.

Знаки операций и результат их выполнения приведены в табл.2.

Таблица 2

Операции сдвига

Знак операции

Действие

SHL

Сдвигает значение влево на число разрядов, равное значению выражения

SHR

Сдвигает значение вправо на число разрядов, равное значению выражения