Programar em Assembly com GAS/Um primeiro programa
Aparência
Primeiro Programa com GAS
[editar | editar código]- 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]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]- Com o GNU Assembler todos os registradores são definido com o prefixo "%".
- E os operadores imediato com "$".