R a s p b e r e d

Usando o Raspberry Pi

Hello Again

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

Tamanho da mensagem informado numa variável.

/**
 * @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"
 * @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

tamanho:        .word   12              // Tamanho da mensagem

mensagem:       .ascii  "Hello Again\n" // Mensagem a ser exibida

// 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
        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:~/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-25
Publicado em 2019-07-25