Inline assembly statements can appear anywhere a C statement can appear (an __asm statement must be inside a C function). Inline assembly statements take one of two forms, shown in various configurations: __asm <Assembly Instruction> ; [/* Comment */]__asm <Assembly Instruction> ; [// Comment] or __asm { { <Assembly Instruction> [; Comment] \n } } or __asm ( <Assembly Instruction> [; Comment] ); or __asm [ ( ] <string Assembly instruction > [)] [;]with <string Assembly instruction > = <Assembly Instruction> [";" <Assembly instruction>] or #asm <Assembly Instruction> [; Comment] \n #endasm If you use the first form, multiple __ asm statements are contained on one line and comments are delimited like regular C or C++ comments. If you use the second form, one to several assembly instructions are contained within the __ asm block, but only one assembly instruction per line is possible and the semicolon starts an assembly comment.