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