Untitled
unknown
plain_text
a year ago
1.2 kB
11
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