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

15. Выражения

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

Оператор < >. Часть выражения, заключенная в угловые скобки, не вычисляется, а применяется как строка символов.

Оператор ( ). Часть выражения, заключенная в круглые скобки, вычисляется в первую очередь.

Арифметические операторы: + (плюс), – (минус), * (умножение), / (целочисленное деление), MOD (остаток от деления). Помимо этого, арифметическим оператором принято считать унарный минус. Тот самый, который ставится перед отрицательным числом.

Логические операторы: AND (И), NOT (НЕ), OR (ИЛИ), XOR (исключающее ИЛИ), SHL (логический сдвиг влево), SHR (логический сдвиг вправо). Эти операторы выполняют соответствующие логические действия. Следует напомнить, что их не следует путать с командами, имеющими такое же написание. Отличить легко – логические операторы стоят не в начале командной строки.

Операторы сравнения: EQ (равно), GE (больше или равно), GT (больше), LE (меньше или равно), LT (меньше), NE (не равно). Если условие выполняется – результатом будет единица. В противном случае – ноль.

Операторы адресации:

- SEG выражение – сегментный адрес. Возвращает соответствующую часть адреса своего аргумента;

- OFFSET выражение – смещение. Возвращает соответствующую часть адреса своего аргумента;

- THIS тип – текущий адрес. Создает операнд, адресом которого является текущее значение счетчика;

- тип PTR выражение – переопределение типа. Создает аргумент, адресом которого является значение выражения, а тип указан явно;

- LARGE выражение – 32-битное смещение;

- SMALL выражение – 16-битное смещение;

- SHORT выражение – 8-битное смещение.

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

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

- . (точка) – ссылка на элемент структуры;

- : (двоеточие) – переопределение сегмента;

- [ ] (прямые скобки) – косвенная адресация;

- ? – неинициализированное значение;

- число DUP (значение) – повторяющееся значение.

16. Директивы управления файлами

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

1. INCLUDE имя_файла – директива, вставляющая в текст программы текст файла аналогично команде препроцессора C #include. Обычно используется для включения файлов, содержащих определения констант, структур и макросов.

2. INCLUDELIB имя_файла – директива, указывающая компоновщику имя дополнительной библиотеки или объектного файла, который потребуется при составлении данной программы. Например, если используются вызовы процедур или обращение к данным, определенным в других модулях. Использование этой директивы позволяет не указывать имена дополнительных библиотек при вызове компоновщика.