Sei sulla pagina 1di 2

ESERCITAZIONE 2023-1-13 89

start
PROGRAMMAZIONE IN ASSEMBLY ARM32 ldr r0,
mov r1,

bl count_and_substitute
▸ Scrivere in assembly ARM 32 una subroutine ...
(count_and_substitute) che restituisca il end
numero di valori negativi contenuti in un count_and_substitute
array di valori interi con segno a 32 bit
array dcd 4,-3,-2,1
passato come argomento e li sostituisca con
un valore passato come ulteriore
argomento. Il codice deve essere integrato
nell'esempio d'uso indicato a anco

▸ Supponendo che l'array sia caricato in … …


memoria a partire dall'indirizzo 0x200, il 00000200 4
contenuto della memoria dopo l'esecuzione 00000204 3
di count_and_substitute con argomento di 00000208 3
sostituzione 3 sarà quello mostrato nella 0000020C 1
tabella … …

fi

ESERCITAZIONE 2023-1-13 90

start
PROGRAMMAZIONE IN ASSEMBLY ARM32 ldr r0, =array
mov r1, #4
mov r2, #3
bl count_and_substitute
▸ Scrivere in assembly ARM 32 una mov r1, r0
end
subroutine (count_and_substitute)
count_and_substitute
che restituisca il numero di valori str r4, [sp, #-4]! ; PUSH R4
negativi contenuti in un array di add r1, r0, r1, lsl #2
mov r3, r0
valori interi con segno a 32 bit mov r0, #0
loop
passato come argomento e li cmp r3, r1
beq loop_end
sostituisca con un valore passato ldr r4, [r3], #4
come ulteriore argomento. Il codice cmp r4, #0
strmi r2, [r3, #-4]
deve essere integrato nell'esempio addmi r0, r0, #1
b loop
d'uso indicato.
loop_end
ldr r4, [sp], #4 ; POP R4
▸ Esempio di soluzione (PUSH e POP mov pc, lr
facoltative) array dcd 4,-3,-2,1

Potrebbero piacerti anche