Функции и процедурыДирективы компилятораВстроенный ассемблерКоманды редактора и зарезервированные словаСообщения об ошибкахПримеры программНаписать письмо
О проектеАвтора!Автора!

 

 

Символы выражений встроенного ассемблера
--------------------------------------------------------------------
Встроенный ассемблер обеспечивает доступ почти ко всем символам 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;

Hosted by uCoz