Well, C++ only provides the asm keyword and states this:
7.4 The asm declaration [dcl.asm]

1 An asm declaration has the form
asm-definition:
asm ( string-literal ) ;
The meaning of an asm declaration is implementation-defined. [Note:
Typically it is used to pass information through the implementation to
an assembler. ]
As you see, the definition is minimal. It should also be mentioned that VC++ does not support this syntax, only the _asm {} syntax. GCC supports the syntax, but extends it for better interaction with the compiler.

What code you can use thus depends on your compiler or the underlying assembler. For example, in VC++ the compiler needs to understand the assembly, thus disabling use of SSEx in VC++6 at least.
GCC doesn't really understand any assembly, but it forwards it to the underlying assembler, and thus pretty much everything works, depending on the asembler.