
Функции и процедуры Директивы компилятора Встроенный ассемблер Команды редактора и зарезервированные слова Сообщения об ошибках Примеры программ Написать письмо
О проекте Автора!Автора! |
|
Символы выражений встроенного ассемблера
--------------------------------------------------------------------
Встроенный ассемблер обеспечивает доступ почти ко всем символам Pascal в
выражениях ассемблера, включая метки, константы, типы, переменные, процедуры
и функции. Встроенный ассемблер также обеспечивает несколько
встроенных типов.
Символ - Значение - Класс -Тип
Labe - Адрес метки - Память - Short
Constant - Значение константы - Непосредственный - 0
Type - 0 - Память - Размер типа
Field - Смещение поля - Память - Размер типа
Variable - Адрес переменной - Память - Размер типа
Procedure - Адрес процедуры - Память - Near или Far
Function - Адрес функции - Память - Near или Far
Unit - 0 - Непосредственный - 0
@Code - Адрес сегмента кода - Память - 0FFF0H
@Data - Адрес сегмента данных - Память - 0FFF0H
@Result - Смещение переменной Result - Память - Размер типа
Символы, которые не могут использоваться в
выражениях встроенного ассемблера:
- Стандартные процедуры и функции (например, WriteLn, Chr)
- Специальные массивы Mem, MemW, MemL, Port и PortW
- Строковые, вещественные, и наборные константы
- Процедуры и функции, объявленные с директивой InLine
- Метки, не объявленные в текущем блоке
- Символ @Result вне функции.
Локальные переменные:
Локальные переменные (переменные, объявленные в процедурах и функциях) всегда
распределяются в стеке и доступны относительно SS:BP. Значение символа
локальной переменной - его знаковое смещение относительно SS:BP. Встроенный
ассемблер автоматически добавляет [BP] при ссылках на локальные переменные.
Переменные параметры:
Встроенный ассемблер всегда обрабатывает переменные параметры как
32-разрядные указатели, и размер переменного параметра - всегда равен 4 (размер
32-разрядного указателя). Чтобы обратиться к содержимому переменного
параметра, вы должны сначала загрузить 32-разрядный указатель и затем
обратиться к области памяти, на которую он указывает.
Область видимости:
Область видимости определяется символами типов, полей и переменных записи или
объекта. Кроме того, идентификатор модуля открывает область видимости
специфического модуля, точно так же как полностью-квалифицированный
идентификатор в Pascal.
Оператор:
Некоторые символы, такие как типы и переменные записи, имеют область
видимости, к которой можно обращаться, используя
селектор элемента структуры (.).
Идентификатор типа:
Вы можете использовать идентификаторы типов, чтобы создавать переменные, по
мере написания программы. Каждая из этих команд генерирует один и тот же код,
который загружает содержимое ES:[DI+4] в регистр AX:
Asm
mov ax, (Rect PTR ES:[DI]).B.X
mov ax, Rect(ES:[DI]).B.X
mov ax, ES:Rect[DI].B.X
mov ax, Rect[ES:DI].B.X
mov ax, ES:[DI].Rect.B.X
End; |