2.1.2 Hello Assembly

Programa para escrever "Hello Assembly" na saída padrão

Tamanho da mensagem calculado pelo montador.

/**
 * @file    hello_assembly.s
 * @author  Reficio
 * @version 1.0
 * 
 * @section DESCRIPTION
 *
 * Programa para escrever "Hello Assembly" na saída padrão.
 *
 * Tamanho da mensagem calculado pelo montador.
 *
 * @output "Hello Assembly"
 * @return Tamanho da mensagem
 */

// Nova sintaxe unificada

.syntax unified

// Equivalências

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

// Dados

.data

.align
mensagem:       .ascii  "Hello Assembly\n"      // Mensagem a ser exibida
.equ            TAMANHO, (. - mensagem)         // Tamanho da mensagem

// Código

.text
.global _start

_start:

        MOV     R7, #SYS_WRITE  // Número da chamada do sistema em R7 (escrever).
        MOV     R0, #STDOUT     // Descritor do arquivo em R0 (saída padrão, 1).
        LDR     R1, =mensagem   // Endereço da mensagem em R1
        MOV     R2, #TAMANHO    // 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_assembly: hello_assembly.o
        ld -o hello_assembly hello_assembly.o
hello_assembly.o: hello_assembly.s
        as -o hello_assembly.o hello_assembly.s
clean:
        rm hello_assembly.o hello_assembly

Construção e execução:

pi@raspberrypi:~/asm/hello_assembly $ make clean
rm hello_assembly.o hello_assembly

pi@raspberrypi:~/asm/hello_assembly $ make
as -o hello_assembly.o hello_assembly.s
ld -o hello_assembly hello_assembly.o

pi@raspberrypi:~/asm/hello_assembly $ ./hello_assembly ; echo $?
Hello Assembly
15