Язык:
Русский
English
Символы выражений встроенного ассемблера
Встроенный ассемблер обеспечивает доступ почти ко всем символам Pascal в выражениях ассемблера, включая метки, константы, типы, переменные, процедуры и функции.
Встроенный ассемблер также обеспечивает несколько встроенных типов.
Символ Значение Класс Тип
Label Адрес метки Память 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;