Символы выражений встроенного ассемблера

Язык:
Русский
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;

Код для вставки: :: :: :: ::
Поделиться: // //