| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
группы, которой принадлежит сегмент. В режиме MASM это имеет мес-
то при использовании упрощенных сегментных директив. В противном
случае адреса вычисляются относительно сегмента, в котором нахо-
дится объект, а не какой-либо группы.
Создание адресного выражения, использующего счетчик инструкций
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для создание адресного выражения, которое указывает на теку-
щий сегмент и счетчик инструкций, можно использовать операцию
THIS. В режиме Ideal можно использовать следующий синтаксис:
THIS тип
Синтаксис режима Ideal позволяет вам строить адресное выра-
жение на основе текущего сегмента и счетчика инструкций для за-
данного типа.
В режиме MASM используется следующий синтаксис:
THIS выражение
Синтаксис режима MASM работает аналогично режиму Ideal, но
для определения типа использует числовое значение выражения. Это
следующие значения: 0=UNKNOWN, 1=BYTE, 2=WORD, 4=DWORD, 6=PWORD,
8=QQORD, 10=TBYTE, 0ffffh=NEAR, 0fffeh. Например:
ptr1 LABEL WORD
ptr2 EQU THIS WORD ; аналогично ptr1
Определение характеристик выражения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Иногда (например, в макрокоманде) бывает полезно определить
характеристики заданного выражения. Для этого служат операции
SYMTYPE и .TYPE.
В режиме Ideal используется следующий синтаксис:
SYMTYPE выражение
В режиме MASM используется следующий синтаксис:
.TYPE выражение
Турбо Ассемблер 3.0/tasm/#1-2 = 114 =
Операции SYMTYPE и .TYPE возвращают описывающее выражение
значение-константу. Это значение разбивается на битовые поля, по-
казанные в следующей таблице:
Битовые поля операций SYMTYPE и .TYPE Таблица 5.21
ЪДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Бит і Значение і
ГДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 0 і Выражение является относительным указателем памяти в і
і і программе. і
і і і
і 1 і Выражение является относительным указателем на дан- і
і і ные в программе. і
і і і
і 2 і Выражение представляет собой значение-константу. і
і і і
і 3 і Выражение использует прямой режим адресации. і
і і і
і 4 і Выражение содержит регистр. і
і і і
і 5 і Идентификатор определен. і
і і і
і 7 і Выражение содержит идентификатор, определенный извне.і
АДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Если биты 2 и 3 равны нулю, то выражение содержит косвенный
регистр ([BX]).
Если Турбо Ассемблер не может вычислить выражение, то опера-
ция SYMTYPE возвращает соответствующие ошибки. Однако операция
.TYPE в этих случаях будет возвращать значение (обычно 0).
Ссылки на структуры, объединения и смещения элементов в таблице
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Элементы структур, объединений и таблиц являются глобальными
переменными, значения которых представляют собой в режиме MASM
смещения в структуре, объединении или таблице. Однако в режиме
Ideal элементы этих типов данных рассматриваются, как локальные
по отношению к типам данных. Операция точки (.) позволяет вам по-
лучить смещения элементов. В режиме Ideal используется следующий
синтаксис:
выражение.идентификатор
где "выражение" представляет адрес структуры, объединения или эк-
земпляра таблицы. "Идентификатор" должен быть элементом структу-
ры, объединения или таблицы. Операция точки возвращает смещение
элемента в структуре.
В режиме MASM также имеется версия операции точки. Однако ее
функция аналогична операции + и имеет следующий синтаксис:
Турбо Ассемблер 3.0/tasm/#1-2 = 115 =
выражение_1 + выражение_2
Описание содержимого адреса
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Многие инструкции позволяют вам различать адрес и содержимое
адреса. Вы можете делать это, используя квадратные скобки. Напри-
мер:
MOV AX,BX ; переместить BX в AX
MOV AX,[BX] ; переместить в AX содержимое по
; адресу BX
Приведем общий синтаксис, в котором используются квадратные
скобки:
[выражение]
В режиме MASM квадратные скобки для выражений, являющихся
адресами, не обязательны. В качестве операнда инструкции процес-
соров 80х86 не может использоваться полный адрес. Вместо этого
используется только сегмент (полученный с помощью операции SEG)
или смещение (полученное с помощью операции OFFSET).
Если ясно, что выражение является адресом, а квадратные
скобки не используются, то в режиме Ideal выводится предупреждаю-
щее сообщение. Это предупреждение можно запретить (см. Главу 12).
Однако хорошей практикой программирования является использование
скобок.
Подразумеваемое сложение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
В режиме MASM сложение выражений можно выполнять несколькими
способами: с помощью операции сложения (+), с помощью операции
точки (.), или с помощью подразумеваемого (неявного) сложения
(когда выражения разделяются квадратными и круглыми скобками).
Например:
MOV AX,5[BX] ; содержимое по адресу BX+5
MOV AX,5[XYZ] ; содержимое по адресу XYZ+5
Неявная операция сложения имеет следующий общий синтаксис:
выражение_1 [выражение_2]
или
выражение_1 (выражение_2)
Получение значения старшего или младшего байта выражения
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для возврата значения старшего или младшего байта выражения
Турбо Ассемблер 3.0/tasm/#1-2 = 116 =
можно использовать операции HIGH и LOW. Это обстоятельство может
быть полезно, например, в ситуации, когда требуются только стар-
шие 8 бит смещения адреса.
Приведем пример операций HIGH и LOW:
HIGH выражение
LOW выражение
Например:
magic equ 1234h
mov cl,HIGH magic ; cl = 12h
mov cl,LOW magic ; cl = 34h
Задание 16- или 32-разрядных выражений
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Если текущим выбранным процессором является процессор 80386
или старше, то Турбо Ассемблер предоставляет две операции, кото-
рые определяют, будет выражение интерпретироваться как 16- или 32
-разрядное значение. Это операции SMALL и LARGE. Они имеют сле-
дующий синтаксис:
SMALL выражение
LARGE выражение
Операция SMALL помечает выражение, как представляющее
16-разрядное значение. Операция LARGE помечает его как 32-разряд-
ное значение. Эти операции особенно важны в программах, при рабо-
те которой в операционной среде некоторые сегменты являются
32-битовыми, а другие - 16-битовыми. Например, инструкция:
JMP [DWORD PTR ABC]
представляет собой косвенный переход на содержимое переменной в
памяти ABC. Если у вас разрешено использование процессора 80386,
то данная инструкция может интерпретироваться либо как дальний
переход с использованием сегмента и 16-разрядного смещения, либо
как ближний переход по 32-разрядному смещению. Для устранения
неоднозначности вы можете использовать операции LARGE и SMALL:
JMP SMALL [DWORD PTR ABC]
|
adfun.ru
|
|
|
|