Programma assembly che verifica se 2 elementi sono complementari tra loro.

  • Autore discussione Autore discussione fan89
  • Data d'inizio Data d'inizio
Pubblicità

fan89

Nuovo Utente
Messaggi
56
Reazioni
1
Punteggio
26
Salve,Il seguente programma, prendendo in considerazione 2 array, verifica l' esistenza di almeno una coppia di elementi in cui non ci sia uno complementare dell' altro:

MOV R1 ,#O ;aggiorna gli OR in R1, posto inizialmente a zero
MOV R2 ,#O ;R2 = indice i del prodotto corrente: A AND B
MOV R3, [URL=http://www.tomshw.it/forum/usertag.php?do=list&action=hash&hash=4]#4 096[/URL] ;R3 = indice del primo valore da non considerare
CICLO: MOV R4,A(R2) ;R4 = A
AND R4,B(R2) ;R4 = A AND B
OR R1, R4 ;OR di tutti i prodotti booleani in R1
ADD R2, #4 ;i = i + 4 (passi di 1 parola = 4 byte alla volta)
CMP R2,R3 ;abbiamo già finito?
BLT CICLO ;se R2 < R 3 non abbiamo finito, quindi si continua

Quello che non ho capito è l' istruzione MOV R4, A(R2); non so se sposta in R4 l' indirizzo ottenuto dalla somma tra l' indirizzo di memoria A e l' indirizzo contenuto in R2, o sposta il contenuto in memoria, puntato da A(R2), nel registro R4. Ma la scelta più logica mi sembra la seconda dato che MOV non può acccedere alla memoria.
 
Pubblicità
Pubblicità
Indietro
Top