Hello Again

/**
 * @file    hello_again.s
 * @author  Halley Pacheco de Oliveira
 * @version 1.0
 * 
 * @section DESCRIPTION
 *
 * Programa para escrever "Hello Again" na saída padrão.
 *
 * Tamanho da mensagem informado numa variável.
 *
 * @output "Hello Again"
 */

// Raspberry Pi 3 Modelo A+
.cpu	cortex-a53
.fpu	neon-fp-armv8
.syntax	unified 				// Sintaxe moderna

// Equates

.equ	SYS_EXIT, 1
.equ	SYS_WRITE, 4
.equ	STDIN, 0
.equ	STDOUT, 1

.data
.align

tamanho:	.word	12		// Tamanho da mensagem
mensagem:	.ascii	"Hello Again\n"	// Mensagem a ser exibida

.text
.global _start

_start:

	MOV	R7, #SYS_WRITE	// Número da chamada do sistema em R7 (escrever).
	MOV	R0, #STDOUT	// Identificador do fluxo em R0.
	LDR	R1, =mensagem	// Endereço da mensagem em R1
	LDR	R2, =tamanho	// Endereço do tamanho da mensagem em R2.
	LDR	R2, [R2]	// Valor do tamanho da mensagem em R2.
	SVC	0		// Chamar o sistema operacional.

end:

	MOV	R7, #SYS_EXIT	// Número da chamada do sistema em R7 (terminar).
	SVC	0		// Chamar o sistema operacional.

Makefile:

hello_again: hello_again.o
	ld -o hello_again hello_again.o
hello_again.o: hello_again.s
	as -o hello_again.o hello_again.s
clean:
	rm hello_again.o hello_again

Construção e execução:

pi@raspberrypi:~/assembly/hello_again $ make
as -o hello_again.o hello_again.s
ld -o hello_again hello_again.o
pi@raspberrypi:~/assembly/hello_again $ ./hello_again 
Hello Again

↑ Acima