Autore539373
Ominide
1 min. di lettura
Vota

Concetti Chiave

  • Il programma in assembly è scritto per emulare un processore ARM utilizzando il software VISuaL.
  • L'obiettivo del codice è trovare il massimo numero in un array di 9 elementi.
  • Il programma utilizza registri per scorrere e confrontare gli elementi dell'array, aggiornando il massimo trovato.
  • L'istruzione "blt" viene impiegata per il confronto tra valori, con la possibilità alternativa di utilizzare "blo".
  • Il ciclo "loop" gestisce le iterazioni necessarie per esaminare tutti gli elementi dell'array e determinare il massimo.

Questo programma trova in un array (In questo in un array di 9 elementi) il massimo numero. Questo programma assembly è stato scritto usando VISuaL, programma che emula un processore ARM. Ci tengo a precisare che questo programma non è il massimo dell'efficienza ma è una mia interpretazione, ma il suo funzionamento è garantito. Per quanto riguarda l'istruzione blt si può anche utilizzare l'istruzione blo.

[math]size dcd 9
array dcd 2,7,9,3,12,11,32,23,42

mov r0,#size ; r0 punta a size
ldr r2,[r0] ; r2 prende il valore di size cioè 9
mov r1,#array ; r1 funge da puntatore per array

mov r0,#0
switch ; Questa etichetta fa lo "Switch" del massimo
mov r0,r4 ; r0 prende il valore di r4 (Valore più alto)
mov r4,r3 ; r4 prende il valore di r3 (Valore più piccolo)
mov r3,r0 ; Infine r3 prende il valore precedente di r4
loop
cmp r2,#0
beq end_loop ; Vede se r2 = 0 ovvero se ha fatto tutte le iterazioni di confronto

ldr r3,[r1] ; r3 prende il valore a cui punta r1 (primo caso 2)
add r1,r1,#4 ; spostiamo il puntatore di 4 byte al prossimo elemento dell'array
ldr r4,[r1] ; in questo caso r4 punta all'elemento successivo (primo caso 7)
cmp r3,r4
blt switch ; confronta se r3 sub r2,r2,#1
b loop ; Salta all'etichetta loop

end_loop
end
[/math]

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community