[C con Clase] [Bulk] Problemas con assembler...

Steven Richard Davidson stevenrichard.davidson en gmail.com
Mar Nov 6 23:49:47 CET 2007


Hola José Rubiel,

On 11/6/07, Jose Rubiel Castrillón Garcia <josecastrillon en gmail.com> wrote:
>
> estoy utilizando como compilador el borland c++, primero me gustaria saber
> si este compilador es apto para combinarlo con el assembler y segundo los
> ejercicios que he hecho con assembler primero no me han corrido, segundo
> quisiera saber mas sobre este tema..
>

Bueno, Zelion te ha respondido, pero quiero agregar a lo dicho.

El estándar del lenguaje C++ acepta código de ensamblador embebido. La
sintaxis es la siguiente:

asm( <cadena_de_caracteres> );

Por ejemplo,

asm( "mov ax, 0x20\n" );
asm( "mov bx, 0x2a\n" );
asm( "add ax, bx\n" );
asm( "sub bx, 0xa9\n" );

Básicamente, lo que escribas en las cadenas de caracteres será copiado
al programa generado en ensamblador tal y como está. También podríamos
haber escrito,

asm( "mov ax, 0x20\n"
        "mov bx, 0x2a\n"
        "add ax, bx\n"
        "sub bx, 0xa9\n" );


Si usas Borland C++ 5.xx o anterior, este compilador no está
actualizado a la última revisión del lenguaje C++. Una de las
diferencias de la normativa está en que BC++ usa su propio sintaxis
para ofrecer instrucciones en ensamblador para C y C++. Su sintaxis
(no estándar) es:

asm <instrucción> <parámetros> <; o nueva_línea>

También puedes usar '_asm' o '__asm'. Lo típico es agrupar todas las
instrucciones de ensamblador. Para ello, puedes usar llaves {}. Por
ejemplo,

asm
{
  mov ax, 0x20
  mov bx, 0x2a
  add ax, bx
  sub bx, 0xa9
}

Si tienes Borland Builder C++, por lo que he comprobado, sólo acepta
la sintaxis de Borland y no la estándar de C++. Es posible que en
versiones más recientes de Builder, el compilador implemente el
estándar para este aspecto.


Espero que esto te sirva.

Steven




Más información sobre la lista de distribución Cconclase