Untitled
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