Mais je ne sais toujours pas pourquoi la routine waitkey empêche le rafraichissement de l'écran quand le programme est fini

Voilà le code:
- Code: Select all
main
stmfd sp!, {lr}
mov r0, #0xC0000000
ldr r0, [r0, #0x10]
mvn r1, #0b0000000000000000
bl damierCX
bl waitkey
mov r0, #0xC0000000
ldr r0, [r0, #0x10]
bl clrscrCX
; bl wait
ldmfd sp!, {pc}
waitkey
mov r10,#0x90000000
add r10,r10,#0xe0000
add r10,r10,#0x10
wkloop
ldmfd r10,{r1-r4}
orr r1,r1,r2
orr r2,r3,r4
orrs r1,r1,r2
beq wkloop
bx lr
wait
mvn r0, #0
mov r0, r0, lsr #3
waitloop
sub r0, r0, #1
cmp r0, #0
bgt waitloop
bx lr
damierCX ;base, color
stmfd sp!, {r0-r12, lr}
mov r4, r0;base
mov r5, #0;x
mov r6, #0;y
mov r7, r1;color
mov r8, #0
mov r9, #0
xloop
mov r0, r4
mov r1, r5
mov r2, r6
mov r3, r7
bl setPixelColorCX
add r5, r5, #1
add r8, r8, #1
cmp r8, #20
blt xloop
mov r8, #0
bl changecolor
cmp r5, #320
blt xloop
add r9, r9, #1
add r6, r6, #1
mov r5, #0
cmp r9, #20
blt xloop
mov r9, #0
bl changecolor
cmp r6, #240
blt xloop
ldmfd sp!, {r0-r12, pc}
clrscrCX
stmfd sp!, {r0-r12, lr}
mov r4, r0;base
mov r5, #0;x
mov r6, #0;y
mvn r7, #0;color
clrloop
mov r0, r4
mov r1, r5
mov r2, r6
mov r3, r7
bl setPixelColorCX
add r5, r5, #1
cmp r5, #320
blt clrloop
add r6, r6, #1
mov r5, #0
cmp r6, #240
blt clrloop
ldmfd sp!, {r0-r12, pc}
changecolor
cmp r7, #0
mvneq r7, #0
movne r7, #0
bx lr
setPixelColorCX ;base, x, y, color
add r0, r0, r1, lsl #1
add r0, r0, r2, lsl #9
add r0, r0, r2, lsl #7
strh r3, [r0]
bx lr
Mon prochain projet, un snake.
Je vais déjà tenter une routine d'affichage de sprite et pour cela j'aurais une petite question:
Que fait la commande ADR?