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

Язык:
Русский
English

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


Каждое выражение встроенного ассемблера имеет связанный с ним тип.

Этот тип является размером выражения, потому что встроенный ассемблер расценивает тип выражения как размер его расположения в памяти.

Встроенный ассемблер выполняет контроль соответствия типов всегда, когда возможно. Если происходит несоответствие типов, возникает ошибка.

Вы можете использовать приведение типов, чтобы изменить тип ссылки на память. Например, все эти инструкции обращаются к первому (младшему) байту переменной OutBufPtr:

 Asm
  mov     dl, BYTE PTR OutBufPtr
  mov     dl, Byte(OutBufPtr)
  mov     dl, OutBufPtr.Byte
 End;

В некоторых случаях, ссылка на память является нетипизированной (не имеет связанного с ней типа). Например, непосредственное значение, помещенное в квадратные скобки:

 Asm
  mov     al, [100H]
  mov     bx, [100H]
 End;

Встроенный ассемблер позволяет обе такие инструкции, потому что выражение [100H не имеет связанного типа (оно означает лишь "содержимое адреса 100H в сегменте данных") и тип может быть определен по первому операнду (Byte для al и Word для bx).

В случаях, когда тип не может быть определен по другому операнду, встроенный ассемблер требует явного приведения типов, например:

 Asm
  inc     BYTE PTR [100H]
  imul    WORD PTR [100H]
 End;

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