Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: kylix em slack 10.1
Por cego
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Exemplo prático do uso de C+Assembly
Linux user
Publicado por Douglas - Brasilvision em 13/11/2004

Login: doug_cpp, 58627 pontos
[ Hits: 8244 ]

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

Leitura recomendada
   Dica Linux recomendada Passar variáveis char para inteiro
   Dica Linux recomendada Conversão de tipos de dados em C/C++
   Dica Linux recomendada Migrando aplicativos C++ do Windows para Linux
   Dica Linux recomendada Porque fgets() ao invés de gets()
   Dica Linux recomendada Compiladores C/C++ e Fortran

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.