Olá pessoal, estou ainda iniciando estudos em assembly e gostaria de uma ajuda com o código abaixo:
<code>
begin ! Start assembling
.org 2048 ! Start program at 2048
a_start .equ 3000
length: 20 ! 5 numbers (20 bytes)
address: a_start
.org a_start ! Start of array a
a: 27
-11
35
-9
7
.end ! Stop assembling
</code>
O que exatamente esse programa faz? O loop está sendo repetido alguma vez?
<code>
begin ! Start assembling
.org 2048 ! Start program at 2048
a_start .equ 3000
ld [length], %r1
ld [address],%r2
andcc %r3, %r0, %r3 ! %r3 <-0
loop: andcc %r1, %r1, %r0 ! Test # remaining elementsbe done ! Finished when length=0
addcc %r1, -4, %r1 ! Decrement array length
addcc %r1, %r2, %r4 ! Address of next element
ld %r4, %r5
addcc %r3, %r5, %r3
ba loop ! Repeat loop.
done: jmpl %r15 + 4, %r0 ! Return to calling routinelength: 20 ! 5 numbers (20 bytes)
address: a_start
.org a_start ! Start of array a
a: 27
-11
35
-9
7
.end ! Stop assembling
</code>
O que exatamente esse programa faz? O loop está sendo repetido alguma vez?