110 likes | 215 Views
Interface C / Assembly Modo Real. Lauro Moura lauromoura@gmail.com. Roteiro. Assembly Inline Chamando rotinas Assembly a partir de C Exercícios. Inline Assembly. Escrito dentro do código C Bloco asm{} asm{ MOV AX, 09h ADD AX, BX }. TCC – Turbo C Compiler. tcc [options] file[s]
E N D
Interface C / AssemblyModo Real Lauro Moura lauromoura@gmail.com
Roteiro • Assembly Inline • Chamando rotinas Assembly a partir de C • Exercícios
Inline Assembly • Escrito dentro do código C • Bloco asm{} asm{ MOV AX, 09h ADD AX, BX }
TCC – Turbo C Compiler • tcc [options] file[s] • Local das bibliotecas: p:\tc\lib • tcc –Lp:\tc\lib arquivo[s] • #pragma inline força o uso do TASM como assembler (Padrão: BASM)
Exemplo 1 #pragma inline int main(){ char *msg = "Hello, World!\n$"; asm{ MOV AH, 9; MOV DX, msg; INT 21H; } return 0; }
Compilando... • Utilizaremos o “make” • make ex1.exe • Mesmo processo para os outros exemplos.
Assembly Inline em funções • Retorno em AX • Exemplo 2 (ex2.exe)
Rotinas Assembly a partir de C • Nomes começam com ‘_’ • Ex: ‘_AX’, ‘_PrintHello’ • Arquivos compilados com o TASM e a opção mx (Case sensitive) • tasm –mx arquivo.asm • Exemplo 3
Argumentos • Parâmetros passados na pilha, em ordem inversa (printf...) • Exemplo 4
Exercícios • Crie um programa que compare dois números (0-9) e imprima o maior deles. Use assembly inline e arquivos separados.
Referências • A to Z of C: http://guideme.itgo.com/atozofc/