Πίσω

Δραστηριότητα 10

Έστω ότι ένας πίνακας περιέχει στοιχεία τύπου λέξης με μέγεθος 4 bytes. Τα στοιχεία του πίνακα είναι τοποθετημένα σε συνεχόμενες θέσεις στη μνήμη, η οποία είναι διευθυνσιοδοτημένη κατά byte.
* Να περιγράψετε τη σειρά εντολών που πρέπει να χρησιμοποιηθεί για να γίνει πρόσθεση των δύο πρώτων στοιχείων του πίνακα και το αποτέλεσμα να τοποθετηθεί στον καταχωρητή R1. (Χρησιμοποιήστε μόνο εντολές πρόσθεσης.)
* Να εξηγήσετε την εκτέλεση κάθε εντολής χρησιμοποιώντας συμβολισμούς.
* Ποιο θα είναι το αποτέλεσμα αν το πρώτο στοιχείο του πίνακα βρίσκεται στη θέση μνήμης 44 και έχει τιμή 20, το δεύτερο στοιχείο έχει τιμή 150 και το περιεχόμενο του καταχωρητή R1 έχει τιμή 50;
* Να απαντήσετε στα παραπάνω ερωτήματα χρησιμοποιώντας τον:
    α) απόλυτο τρόπο διευθυνσιοδότησης,
    β) τρόπο διευθυνσιοδότησης με αυτοαύξηση και καταχωρητή.
       (Να χρησιμοποιήσετε τον καταχωρητή R2 που η αρχική του τιμή είναι 100.)


Απάντηση δραστηριότητας 10

α) Αρχικά προστίθεται το 1ο στοιχείο του πίνακα, δηλαδή το περιεχόμενο της θέσης μνήμης 44 (20) και το περιεχόμενο του καταχωρητή R1 (50). Το αποτέλεσμα (70) τοποθετείται στον καταχωρητή R1. Στη συνέχεια προστίθεται το 2ο στοιχείο του πίνακα που είναι περιεχόμενο της θέσης μνήμης 48 (150) και το περιεχόμενο του καταχωρητή R (70). Το αποτέλεσμα (220) τοποθετείται στον καταχωρητή R1.

Η σειρά εντολών είναι:     ADD R1,(44);
ADD R1,(48)
    
Περιγραφή εντολών :     Regs[R1] ¬ Regs[R1] + Mem[44];
Regs[R1] ¬Regs[R1] + Mem[48]

β) Αρχικά προστίθεται η τιμή 44 με το περιεχόμενου του καταχωρητή R2 (100). Το αποτέλεσμα (144) τοποθετείται στον καταχωρητή R2. Το νέο περιεχόμενο του καταχωρητή R2 είναι η θέση μνήμης που υπάρχει το 1ο στοιχείο του πίνακα. Χρησιμοποιώντας στην πρόσθεση τον τρόπο διευθυνσιοδότησης με αυτοαύξηση, προστίθεται το 1ο στοιχείο του πίνακα (20) με το περιεχόμενο του καταχωρητή R1 (50) και αυξάνουμε το περιεχόμενο του R1 κατά 4, ώστε να δείχνει στην επόμενη λέξη (δηλαδή στο 2ο στοιχείο του πίνακα, που βρίσκεται στη θέση 148). Στη συνέχεια προστίθεται το 2ο στοιχείο του πίνακα (150) με το περιεχόμενο του καταχωρητή R1 (70) και το αποτέλεσμα (220) το τοποθετούμε στον καταχωρητή R1.

Η σειρά εντολών είναι:     ADD R2,#44 ;
ADD R1,(R2)+ ;
ADD R1,(R2)
    
Περιγραφή εντολών :     Regs[R2] ¬ Regs[R2] + 44 ;
Regs[R1] ¬ Regs[R1] + Mem[Regs[R2]] ;
Regs[R2] ¬ Regs[R2] + 4 ;
Regs[R1] ¬ Regs[R1] + Mem[Regs[R2]]