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] 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/