C/Visual C - añadir codigo ensamblador en c++

 
Vista:

añadir codigo ensamblador en c++

Publicado por Ayuda por favor (8 intervenciones) el 18/06/2007 11:21:15
Buenas:
me he vuelto loco buscando por internet cómo introducir código ensamblador en mi aplicación en c++ (En linux)
El código ensamblador es el siguiente:
mov dx,02e
mov al,87
out dx,al
out dx,al
mov dx,02e
mov al,07
out dx,al
inc dx
inc al
out dx,al
dec dx
mov al,f6
out dx,al
inc dx
mov al,xy
out dx,al

Todas estas formas me dan errores al compilar
// Mi código C++
asm{
//el código ensamblador tal cual lo he puesto arriba
}
//Sigue el código c++
Esta me da el error: Parse error before { (en la lína asm{)

Otra manera que da error al compilar:
empezando cada línea del código con asm (ejemplo: asm mov dx.02e)

De la manera que pongo a continuación da el error: suffix or operands invalid for 'out':
asm("mov %dx,0x02e;");
asm("mov %al,0x87;");
asm("out %dx,%al;");
asm("out %dx,%al;");
asm("mov %dx,0x02e;");
asm("mov %al,0x07;");
asm("out %dx,al;");
asm("inc %dx;");
asm("inc %al;");
asm("out %dx,%al;");
asm("dec %dx;");
asm("mov %al,0xf6;");
asm("out %dx,%al;");
asm("inc %dx;");
asm("mov %al,0xffh;");
asm("out %dx,%al;");

Cómo hay que hacerlo? Son las distintas formas que he encontrado en internet para hacerlo, pero el out en la última parece que no le gusta...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:añadir codigo ensamblador en c++

Publicado por Eduardo Negrete (76 intervenciones) el 18/06/2007 20:07:01
Hola que tal, ya robaste poniendo un guion bajo

_asm
{
}

O dos guiones
__asm
{
}

varia mucho segun el compilador que uses

Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:añadir codigo ensamblador en c++

Publicado por fernando.gomez (1603 intervenciones) el 19/06/2007 00:37:07
En efecto, lo estándar es

asm "ensamblador"

o bien

asm { ensamblador }

Sin embargo esto se añadió al estándar demasiado tarde así que muchos compiladores lo habían ya implementado como extensión; __asm en el caso de Visual C++. Lo mejor sería que consultases el manual de tu compilador. Como estás en Linux, asumo que estás trabajando con gcc ó g++, así que puedes sacar el manual desde la línea de comandos:

$> man gcc

o bien

$> man g++

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:añadir codigo ensamblador en c++

Publicado por Ayuda por favor (8 intervenciones) el 20/06/2007 09:51:50
He probado a cambiar asm("out %dx,%al;"); por asm("out %al,%dx;"); y compila bien, y no entiendo porqué. De la primera manera me da el error suffix or operands invalid for 'out' y de la segunda manera compila bien. ¿Alguien me lo puede explicar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar