Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec_asm_06_3495.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
178.18 Кб
Скачать

11. Псевдооператоры определения идентификаторов и операции

11.1. Псевдооператоры определения идентификаторов

Псевдооператоры определения идентификаторов EQU (приравнять) и = (знак равенства) позволяют присвоить выражению символи­ческое имя (идентификатор). Формат

имя EQU текст

имя EQU числовое выражение

имя = числовое выражение

Выражение может быть

– 16-битовой константой,

– ссыл­кой на адрес,

– другим символическим именем,

– префиксом сегмента и операндом,

– меткой команды.

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

Псевдооператоры EQU и знак равенства сходны по назначению, но различаются следующим:

1. Определенные знаком "=" идентификаторы можно переопределять, а опре­деленные псевдооператором EQU – нельзя.

2. Псевдооператор EQU можно использовать как с числовыми, так и с текстовы­ми выражениями, а знак "=" только с числовыми.

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

Пример.

К EQU 1024 ; Присвоить имя константе

TABLE EQU DS:[BP][SI] ; присвоить имя комбинации адресов

SPEED EQU RATE ; Определить синоним

COUNT EQU СХ ; присвоить имя регистру

11.2. Операции

Операция является модификатором, который используется в операторе языка ассемблера или в псевдооператоре.

Существует пять видов операций:

– арифметические,

– логические,

– отношения,

– операции, возвращающие значе­ния,

– операции присваивания атрибута.

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

Арифметические операции производятся над числовыми операндами и дают числовой результат. Наиболее часто используются операции: сло­жение (+), вычитание (–), умножение (*) и деление (/). Они имеют формат

значение1 операция значение2

Пример.

CONST = 10

. . .

CONST = CONST +1

Операция деления (/) возвращает частное от деления нацело.

Операция MOD возвращает остаток от деления нацело.

Пример. Операторы

REM1 EQU 31416 / 10000

REM2 EQU 31416 MOD 10000

определят константы REM1 со значением 3 и REM2 со значением 1416.

Операции SHL и SHR имеют формат

значение операция выражение.

Они сдвигают числовой операнд "значение" влево или вправо на число битов, равное значению операнда "выражение".

11.2.2. Логические операции

Логические операции используются для манипулирования отдельными двоичными битами байта или слова. Имеются логические операции AND, OR, XOR и NOT.

Отличие данных операций от команд микропроцессора 8088 в том, что логические команды действуют на этапе исполнения программы (их выполняет микропроцессор), а логические операции – на этапе ее трансляции (под управлением Ассемблера).

11.2.3. Операции отношения

Операции отношения сравнивают два числовых значения или два адреса памяти из одного сегмента и дают числовой результат. Формат операций:

операнд1 операция операнд2

Имеются следующие операции:

Название Признак истинности

EQ

значения операндов совпадают

NE

значения операндов не совпадают

LT

операнд1 меньше, чем операнд2

GT

операнд1 больше, чем операнд2

LE

операнд1 меньше, чем операнд2 или равен ему

GB

операнд1 больше, чем операнд2 или равен ему

Результатом может быть одно из двух чисел: 0, если отношение "ложно", и 0FFFFH (65540), если оно "истин­но".

Пример. Пусть CHOICE – ранее определенная константа. Тогда оператор

MOV AХ, CHOICE LТ 20

будет во время трансляции заменен на оператор

MOV AX, 0FFFFH

если значение CHOICE меньше 20, или на оператор

MOV AX, 0

если значение CHOICE больше или равно 20.

Так как операции отношения дают только два значения (0 и OFFFFH), то они редко используются сами по себе. Чаще всего они применяются в сочетании с другими операциями для формирования выражений "принятия решения".

При­мер.

Пусть требуется загрузить в регистр АХ значение 5, если значение CHOICE меньше 20, и 6 в противном случае. Такую задачу выполнит оператор

MOV АХ, ((CHOICE LT 20) AND 5) OR ((CHOICE GE 20) AND 6)

Если значение CHOICE меньше 20, то выражение (CHOICE LT 20) "истинно", а выражение (CHOICE GE 20) "ложно". Поэтому промежуточная форма приведенного выше оператора будет иметь вид

MOV АX,(0FFFFH AND 5) OR (0 AND 6)

Ассемблер воспримет этот оператор как оператор

MOV АХ, 5

С другой стороны, если значение CHOICE больше или равно 20, то выражение (CHOICE LT 20) "ложно", выражение (CHOICE GE 20) "истинно". Поэтому промежу­точная форма примет вид

MOV АX,(0 AND 5) OR (0FFFFH AND 6)

и Ассемблер воспримет ее как оператор

MOV АХ, 6

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