LuKaum Postado Novembro 21, 2009 Denunciar Share Postado Novembro 21, 2009 alguém poderia me ajudar com assembly inline Ctipo...como eu chamo uma funcao assembly com retorno para alguma variavel em C...apenas sei usar o codigo asm mas toh com problema na execucao...se eu uso asm ("mov ax, 2") ele fala q o comando mov é irreconhecido...tendiii naummm...kkkkkkkkk' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 21, 2009 Denunciar Share Postado Novembro 21, 2009 Veja este tutorialhttp://www.krull.com.br/geo/prog/asm/tut02pt.htmabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 21, 2009 Denunciar Share Postado Novembro 21, 2009 Movendo: Outras Linguagens de Programação --> C, C++.Como a dúvida não é de Assembly especificamente, e sim de como chamar instruções em C/C++, movendo à área adequada.Não sei lá muita coisa de Assembly, mas acho que dá pra passar um exemplo:int funcao(); int main(int argc, char*argv[]) { //Mostra o valor printf("%d",funcao()); //Retorna sucesso return 0; } int funcao(){ _asm{ mov eax,5; } return; //Retorna 5 }Obs.:Compilei com o VS, aqui tem que usar "_asm", não sei se com outros compiladores é diferente.Edit:Nem tinha visto o post do Jhonas, vou ver se leio os tutoriais para me aprofundar mais em assembly. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LuKaum Postado Novembro 22, 2009 Autor Denunciar Share Postado Novembro 22, 2009 aki deu que _asm não foi declarada....só funciona quando eu uso asm ("assembly code");e tambem fala que eu não retornei nada....ou seja...seu codigo não deu muito certo não...mas vlw aeequem puder me ajudar... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 22, 2009 Denunciar Share Postado Novembro 22, 2009 De qualquer forma, creio que esteja programando em C++, pois em C é possível deixar uma função sem tipo de retorno explícito (obviamente, será retornado o que estiver no eax). Só que, pelo menos no VS, quando você utiliza assembly, o compilador ignora isso (mesmo em C++). Afinal, como o código é traduzido para Assembly, é possível que o programador tenha mexido no registrador eax e, por isso, não quis especificar diretamente o retorno da função.Tente então substituir:int funcao(){ _asm{ mov eax,5; } return; //Retorna 5 } Por: int funcao(){ asm("mov eax,5") return; //Retorna 5 }Mas isso depende de seu compilador. Qual está utilizando ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Barros Postado Janeiro 4, 2010 Denunciar Share Postado Janeiro 4, 2010 Não entendi o que tu,quer...Seria chamar a função em ASM , com C?Más antes de usar a função que está movendo 5 para EAX,tu tem que buscar o valor de EAX de antes,ou com um call.Ou essa função está errada,você não pode simplismente mover um valor pra outro sem ter o valor anterior.É melhor mexer em assembly no arquivo depois de compilado,utitilizando um Dbg.Olha sua base,compilada,e vai alterando na source,tenho nivel mediano em ASM,se precisar de ajuda estamos ai.Att Felipe Barros. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LuKaum
alguém poderia me ajudar com assembly inline C
tipo...como eu chamo uma funcao assembly com retorno para alguma variavel em C...
apenas sei usar o codigo asm mas toh com problema na execucao...
se eu uso
asm ("mov ax, 2") ele fala q o comando mov é irreconhecido...tendiii naummm...
kkkkkkkkk'
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.