67 lines
1.6 KiB
ArmAsm
67 lines
1.6 KiB
ArmAsm
# PROMPT
|
|
.equ STDOUT, 1
|
|
.equ WRITE , 64
|
|
|
|
# READ
|
|
.equ STDIN, 0
|
|
.equ BUF_S, 255
|
|
.equ READ , 63
|
|
.equ EXIT , 93
|
|
|
|
.section .rodata
|
|
prompt_msg: .ascii "Welcome! Type your name\n"
|
|
prompt_msg_size: .byte .-prompt_msg
|
|
greetings_msg: .asciz "Hi "
|
|
greetings_size: .byte .-greetings_msg
|
|
buffer_size: .byte .-buffer
|
|
|
|
.section .bss
|
|
buffer: .space 256
|
|
|
|
.section .text
|
|
.global _start
|
|
|
|
prompt:
|
|
addi a0, zero, STDOUT # Get stdout code
|
|
la a1, prompt_msg # Load prompt_msg
|
|
lbu a2, prompt_msg_size # Load prompt_msg size
|
|
addi a7, zero, WRITE # Get write syscall
|
|
ecall # Execute syscall
|
|
ret
|
|
|
|
input:
|
|
addi a0, zero, STDIN # Load stdin code
|
|
la a1, buffer # Load buffer
|
|
addi a2, zero, BUF_S # Load buffer size
|
|
addi a7, zero, READ # Get read syscall
|
|
ecall # Execute syscall
|
|
ret
|
|
|
|
print:
|
|
# Print greetings message
|
|
addi a0, zero, STDOUT # Get stdout code
|
|
la a1, greetings_msg # Load greetings message
|
|
lbu a2, greetings_size # Load greetings size
|
|
addi a7, zero, WRITE # Get write syscall
|
|
ecall # Execute syscall
|
|
|
|
# Print name
|
|
addi a0, zero, STDOUT # Get stdout code
|
|
la a1, buffer # Load buffer with name
|
|
lbu a2, buffer_size # Load buffer size
|
|
addi a7, zero, WRITE # Get write syscall
|
|
ecall # Execute syscall
|
|
ret
|
|
|
|
exit:
|
|
add a0, zero, zero # Execution returned status = 0
|
|
addi a7, zero, EXIT # Exit syscall
|
|
ecall # Execute syscall
|
|
ret
|
|
|
|
_start:
|
|
call prompt
|
|
call input
|
|
call print
|
|
call exit
|