Exemplo prático do uso de C+Assembly

Publicado por Douglas - Brasilvision em 13/11/2004

[ Hits: 18.808 ]

 


Exemplo prático do uso de C+Assembly



Esta á uma dica simples de como usar a linguagem Assembly com C. Como um exemplo vale mais que mil palavras, lá vai:

#include <stdio.h>

int twice ( int ) ;

void main ( void )
{
    int p ;
    p = dobra( 20 ) ;
    printf ( "%d", p ) ;
}

int dobra( int q )
{
    q*=2;
    asm {
        mov ax, q
        add ax, 10
        pop bp
        ret
    }
}

É importante observar que a linguagem Assembly varia de acordo com a máquina usada. Este é somente um exemplo prático.

Outras dicas deste autor

Usando o pré-processador - básico

Leitura recomendada

movfuscator - Compilador de uma única instrução Assembly

Conheça o BRTOS

Ebook - Advanced Linux Programming

Sobrecarga de Operadores em C++

Porque fgets() ou gets()??

  

Comentários
[1] Comentário enviado por FelipeAbella em 09/11/2005 - 15:15h

aqui não funcinou no gcc.

[2] Comentário enviado por EnzoFerber em 19/05/2006 - 21:39h

Qual compilador vc usou?

[3] Comentário enviado por Ablankzin em 24/04/2007 - 13:11h

o que exatamente este code faz? e com que eu posso compilar ele?

[4] Comentário enviado por EnzoFerber em 24/04/2007 - 14:27h

#include <stdio.h>

int dobra(int q){
__asm__("mov %%ecx, %%eax": : "c"(q*2));
}

int main(void){
printf("10 x 2: %d\n", dobra(10));
return 0;
}


O codigo acima compilou e rodou no GCC 3.3.4 do meu Slackware, e compilou e rodou tranquilo no GCC do DEV-C++ 4.9.9.2 do ®uindows

[5] Comentário enviado por promano em 31/03/2008 - 19:19h

/*O prototipo da funcao ta em ingles e a função dobra ta em pt:D... Faz assim:*/

#include <stdio.h>

int twice ( int ) ; /* Troquem a palavra "twice" para "dobra" ou facam como o amigo acima e coloquem a funcao dobra antes da main, apagando o prototipo "twice". */

void main ( void )

//T+



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts