RosettaCodeData/Task/Hello-world-Newbie/RISC-V-Assembly/hello-world-newbie.asm
2025-08-11 18:05:26 -07:00

59 lines
2 KiB
NASM

# riscv assembly raspberry pico2
# program hello.s
# connexion putty com3
/*********************************************/
/* CONSTANTES */
/********************************************/
/*******************************************/
/* INITIALED DATAS */
/*******************************************/
.data
szMessHello: .asciz "Hello world.\r\n"
szMessStart: .asciz "Program riscv start.\r\n"
/*******************************************/
/* UNINITIALED DATA */
/*******************************************/
.bss
.align 2
/**********************************************/
/* SECTION CODE */
/**********************************************/
.text
.global main
main:
call stdio_init_all # général init
1: # start loop connexion
li a0,0 # raz argument register
call tud_cdc_n_connected
beqz a0,1b # return code = zero ?
la a0,szMessStart # message address
call writeString # display message
la a0,szMessHello # message address
call writeString # display message
100: # final loop
j 100b
/************************************/
/* string write on connexion usb */
/***********************************/
/* a0 String address */
writeString: # INFO: writeString
addi sp, sp, -8 # save registers on stack
sw ra, 0(sp)
sw s0, 4(sp)
mv s0,a0 # move address
1:
lbu a0,(s0) # load one character
beqz a0,100f # end if zero
call putchar # character write
add s0,s0,1 # increment address
j 1b # and loop
100: # end function
lw ra, 0(sp) # restaur registers
lw s0, 4(sp)
addi sp, sp, 8
ret