Bonito nome o seu (gets e printf)


/*
 * Programa para ler o nome e escrever "Bonito nome o seu ..."
 * usando as funções gets e printf da linguagem C.
 */

.equ	SYS_EXIT, 1

.data

.align 4
pedido:
	.string	"Oi, digite o seu nome: "

.align 4
formato:
	.string	"Bonito nome o seu %s\n"

.align 4
lido:
	.space	256

.text
.global main
.global printf			// Função printf da linguagem C.
.global gets			// Função gets da linguagem C.

main:
        LDR	R0, =pedido	// R0 -> Texto contendo o pedido para digitar o nome.
        BL	printf
        LDR	R0, =lido	// R0 -> Onde o nome lido vai ser armazenado.
	BL	gets
        LDR	R0, =formato	// R0 -> Texto a ser mostrado com tag de formatação
        LDR	R1, =lido	// R1 -> Texto lido = Argumento para a formatação
        BL	printf
end:
	LDR	R7, =SYS_EXIT	// Número da chamada do sistema em R7 (terminar).
	SVC	0		// Chamar o sistema operacional.

Makefile:

bonito_nome_gets_printf: bonito_nome_gets_printf.o
	gcc -o bonito_nome_gets_printf bonito_nome_gets_printf.o
bonito_nome_gets_printf.o: bonito_nome_gets_printf.s
	as -o bonito_nome_gets_printf.o bonito_nome_gets_printf.s
clean:
	rm bonito_nome_gets_printf.o bonito_nome_gets_printf

Construção e execução:

pi@raspberrypi:~/assembly/bonito_nome_gets_printf $ make clean
rm bonito_nome_gets_printf.o bonito_nome_gets_printf
pi@raspberrypi:~/assembly/bonito_nome_gets_printf $ make
as -o bonito_nome_gets_printf.o bonito_nome_gets_printf.s
gcc -o bonito_nome_gets_printf bonito_nome_gets_printf.o
bonito_nome_gets_printf.o: In function `main':
(.text+0xc): warning: the `gets' function is dangerous and should not be used.
pi@raspberrypi:~/assembly/bonito_nome_gets_printf $ ./bonito_nome_gets_printf 
Oi, digite o seu nome: Gonçalves Dias
Bonito nome o seu Gonçalves Dias

↑ Acima