R a s p b e r e d

Usando o Raspberry Pi

Hello Assembly

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

Tamanho da mensagem calculado pelo montador.

/**
 * @file    hello_assembly.s
 * @author  Halley Pacheco de Oliveira
 * @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
 */

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

// 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:~/raspbered/assembly/hello_again $ make clean
rm hello_again.o hello_again

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

pi@raspberrypi:~/raspbered/assembly/hello_again $ ./hello_again ; echo $?
Hello Again
12
Última atualização em 2019-07-26
Publicado em 2019-07-26