.extern f .text my_string: .string "HELLO WORLD!\r\n\r\n" .quad 0x00 .quad 0x5a .align 4 .global _start _start: /* does nothing special */ mov r13, #0x8000 mov r1, #16 1: ldr r0, =my_string bl printk sub r1, #1 cmp r1, #0 b 1b lup: b lup .global printk printk: stmfd r13!, {r0, r1, r2, r3, r4, r14} /* disable UART interrupts */ mov r2, #0x8004 movt r2, #0x01c2 ldr r1, [r2] and r1, #0xfffffffc str r1, [r2] /* mask interrupts in CPU */ cpsid if /* TBR */ mov r2, #0x8000 movt r2, #0x01c2 1: ldr r1, [r0] add r0, #4 mov r4, #4 2: and r3, r1, #0xff mov r1, r1, lsr#8 cmp r3, #0 beq 3f str r3, [r2] sub r4, #1 cmp r4, #0 bne 2b b 1b 3: ldmfd r13!, {r0, r1, r2, r3, r4, r15}