Programar em Assembly com GAS/Um primeiro programa
Aspeto
Primeiro Programa com GAS
[editar | editar código-fonte]- Vamos criar um arquivo chamado teste.s.
- Agora e so copiar e colar o seguinte código.
################################ teste.s ############################## # Escrever um comentario ate o fim da linha /*Para um pequeno comentario*/ # Para compilara # as teste.s -o teste # ld teste.o -o teste # .text #Seção ou segmento de texto . diretiva .section .data /*Seção de dados*/ .equ SYS_WRITE, 4 #Definimos uma constante .equ LINUX_SYSCALL , 0x80 #Chamada ao sistema # .global _start #Salto para a etiqueta _start # _start: e uma etiqueta ou label _start: # Sera iniciado aqui ;) /*Primeiro argumento*/ movl $TAMANH,%edx # Mover o tamanho da mensagem para o registrador %edx /*Segundo argumento*/ movl $msg,%ecx # Ver linux system call movl $1,%ebx movl $SYS_WRITE,%eax int $LINUX_SYSCALL movl $0,%ebx movl $1,%eax int $LINUX_SYSCALL .data #diretiva segmento data #label: msg: /*guarda a mensagem*/ .ascii "Oi MUNDO finalmente VIVO!!!\n" #Definimos um string TAMANH = . - msg # Definimos o tamanho da mensagem #De um enter no fim do codigo antes de registrar "evitar erros"
Montagem
[editar | editar código-fonte]Para realizar a montagem digite no console:
as teste.s -o teste.o ld teste.o -o teste
Para executar digite:
./teste
Observações
[editar | editar código-fonte]- Com o GNU Assembler todos os registradores são definido com o prefixo "%".
- E os operadores imediato com "$".