Programar em Assembly com GAS/Um primeiro programa

Primeiro Programa com GAS

editar
  • 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

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
  • Com o GNU Assembler todos os registradores são definido com o prefixo "%".
  • E os operadores imediato com "$".