Untitled

 avatar
unknown
plain_text
5 months ago
1.2 kB
2
Indexable
@
@ Assembler program print out "Hello World"
@ using the Pico SDK.
@
@ R0 - first parameter to printf
@ R1 - second parameter to printer
@ R7 - index counter
@

.thumb_func		    @ Necessary because sdk uses BLX
.global main	            @ Provide program starting address to linker

main:
	MOV	R7, #100		@ initialize counter to 100
	BL	stdio_init_all	@ initialize uart or usb
loop:
	LDR	R0, =helloworld	@ load address of helloworld string
	SUB R7,R7,#1 	@ decrement counter
	MOV R1, R7		@ Move the counter to second parameter
	BL printf 		@ Call pico_printf
	CMP R7, #0 		@ compare counter with 0
	BNE loop 		@ if not equal, continue loop
	MOV r7, #100 	@ reset counter to 100
	B	loop		@ loop continue
		
.data
	       .align  4	@ necessary alignment
helloworld: .asciz   "Hello World %d\n"
-----
cmake_minimum_required(VERSION 3.13)

include(pico_sdk_import.cmake)
project(HelloWorld C CXX ASM)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

include_directories(${CMAKE_SOURCE_DIR})

add_executable(HelloWorld
  HelloWorld.S
)

pico_enable_stdio_uart(HelloWorld 1)
pico_enable_stdio_usb(HelloWorld 1)

pico_add_extra_outputs(HelloWorld)

target_link_libraries(HelloWorld pico_stdlib)


Editor is loading...
Leave a Comment