La Web del Programador: Comunidad de Programadores
 
    Pregunta:  13784 - INVOCAR INSTRUCCIONES ASSEMBLER DESDE C!!
Autor:  Johnny Alberto Gómez Pérez
estamos usando la función de c "asm " pero, el programa no corre y muestra errores , necesito saber como tengo que invocar las instrucciones assembler desde C, si es posible enviar un pequeño codigo como ejemplo.
gracias!!!!!

  Respuesta:  paco pérez
Es curioso lo diferentes que son las llamadas a ensamblador con Borland Pascal y Borland C. Por ésto hay que tener especial cuidado con algunas cosas. Por ejemplo, las etiquetas (para los saltos, etc) deberán en C estar fuera de la instrucción asm. Asimismo, el corchete de apertura deberá estar en la misma línea de la instrucción asm. También hay que considerar que podemos confundir al compilador C si utilizamos como indicador hexadecimal la "h". Hay que usar siempre 0x.

Por cierto, Borland admite asm como palabra clave. Otros fabricantes sólo admitirán _asm ó __asm. Aparte, aunque generalmente no es obligatorio, conviene, al contrario que con el ensamblador de verdad, terminar cada instrucción con un punto y coma y no emplearlo como símbolo de comentario del ensamblador.

EJEMPLOS:

NO VALE:

asm
{
mov al, 12h ; Suma 12h a al
cmp al, 0
jnz otro ; Si no es 0, salta a otro
xor al, al
otro:
pop ax
push ax
}

SÍ VALE:

asm {
mov al, 0x12; /* Suma 0x12 a al */
cmp al, 0
jnz otro /* Si no es 0 salta a otro */
xor al, al
}

otro:

asm pop ax;
asm push ax;

  Respuesta:  Nohé Ramón Cázarez Castro
Yo lo hago con funciones, escribo la función en ensamblador, despues la declaro en C como si fuera una función normal, la invoco y listo.

Recuerda que las variables que declaras en C, en ensamblador deben estar presedidas por un "_".

Felices desarrollos!!!