43 lines
598 B
ArmAsm
43 lines
598 B
ArmAsm
|
start_:
|
||
|
set r0, main
|
||
|
or pc, r0, r0
|
||
|
|
||
|
hello:
|
||
|
.word 0x4865
|
||
|
.word 0x6c6c
|
||
|
.word 0x6f2c
|
||
|
.word 0x2077
|
||
|
.word 0x6f72
|
||
|
.word 0x6c64
|
||
|
.word 0x2100
|
||
|
|
||
|
uart_send: // r0 is pointer to data, r1, length
|
||
|
set r2, 0
|
||
|
set r3, 0x10
|
||
|
seth r3, 0xc0
|
||
|
set r4, 1
|
||
|
loop0:
|
||
|
load r5, [r3, 2]
|
||
|
and r5, r5, r4
|
||
|
cmp r5, r2
|
||
|
beq loop0
|
||
|
load r5, [r0]
|
||
|
and r6, r0, r4
|
||
|
cmp r6, r4
|
||
|
beq [pc, 2]
|
||
|
shr r5, r5, 8
|
||
|
store r5, [r3]
|
||
|
add r0, r0, r4
|
||
|
sub r1, r1, r4
|
||
|
cmp r1, r2
|
||
|
bneq loop0
|
||
|
or pc, lr, lr
|
||
|
|
||
|
main:
|
||
|
set r0, hello
|
||
|
set r1, 13
|
||
|
set r2, uart_send
|
||
|
set r3, main
|
||
|
or lr, r3, r3
|
||
|
or pc, r2, r2
|