Использование символов C или C++ в блоках __asm
Блок, относящийся только к системам Майкрософт
Блок __asm может обозначать любой символ C или C++ в той области видимости, в которой находится этот блок. (Символами C и C++ считаются имена переменных, имена функций и метки, то есть имена, которые не являются символьными константами или членами объекта enum. Вызов функций-членов C++ невозможен.)
На использование символов C и C++ накладывается несколько ограничений.
Каждый оператор языка ассемблера может содержать только один символ C или C++. Несколько символов может находиться в одной и той же инструкции ассемблера только с выражениями LENGTH, TYPE и SIZE.
Объявления (прототипы) функций, ссылки на которые находятся в блоке __asm, должны быть созданы в более ранней точке программы. В противном случае компилятор не может различать имена функций и метки, находящиеся в блоке __asm.
Блок __asm не может использовать символы C или C++, совпадающие по написанию с зарезервированными словами MASM (вне зависимости от регистра). К зарезервированным словам MASM относятся имена инструкций, например PUSH, и имена регистров, например SI.
В блоках __asm не распознаются маркеры структуры и объединения.
Завершение блока, относящегося только к системам Майкрософт