Πίσω

Ποια εντολή θα χρησιμοποιήσουμε για να προσθέσουμε την τιμή 53 στον καταχωρητή R1 και ποιος ο τρόπος διευθυνσιοδότησης, για την κάθε μια από τις παρακάτω περιπτώσεις :

Α. Η τιμή 53 δίνεται απευθείας

Β. Η τιμή 53 βρίσκεται τοποθετημένη στον καταχωρητή R2

Γ. Η τιμή 53 βρίσκεται στη θέση μνήμης 1001

Δ. Η τιμή 53 βρίσκεται στη μνήμη. Η διεύθυνση είναι καταχωρημένη στον καταχωρητή R2

Χρησιμοποιήστε συμβολισμούς της C για να περιγράψετε την εντολή.
 
 

Α.

Η εντολή για την 1η περίπτωση είναι:

        ADD R1,#53

Στην εντολή αυτή χρησιμοποιείται ο απευθείας τρόπος διευθυνσιοδότησης.
 

Περιγραφή εντολής :

        Regs[R1] ¬ Regs[R1] + 53
 
 

Β.

Η εντολή για την 2η περίπτωση είναι:

        ADD R1,R2

Στην εντολή αυτή χρησιμοποιείται ο τρόπος διευθυνσιοδότησης άμεσος καταχωρητή. Ο καταχωρητής R2 περιέχει την τιμή 53.

Περιγραφή εντολής :

        Regs[R1] ¬ Regs[R1] + Regs[R2]
 
 

Γ.

Η εντολή για την 3η περίπτωση είναι:

        ADD R1,(1001)

Στην εντολή αυτή χρησιμοποιείται ο άμεσος τρόπος διευθυνσιοδότησης. Στη διεύθυνση 1001 βρίσκεται η τιμή 53.

Περιγραφή εντολής :

        Regs[R1] ¬ Regs[R1] + Mem[1001]
 
 

Δ.

Η εντολή για την 4η περίπτωση είναι:

        ADD R1,(R2)

Στην εντολή αυτή χρησιμοποιείται ο έμμεσος τρόπος διευθυνσιοδότησης με καταχωρητή. Η τιμή 53 βρίσκεται στη θέση μνήμης, η διεύθυνση της οποίας βρίσκεται καταχωρημένη στον καταχωρητή R2.

Περιγραφή εντολής :

            Regs[R1] ¬ Regs[R1] + Mem[Regs[R2]]
 

Έστω ότι έχουμε έναν πίνακα με στοιχεία τύπου λέξεων 2 bytes, τα οποία είναι τοποθετημένα σε συνεχόμενες θέσεις στη μνήμη, η οποία είναι διευθυνσιοδοτημένη κατά byte. Ποια σειρά εντολών πρέπει να χρησιμοποιηθεί για να προσθέσουμε τα δύο πρώτα στοιχεία του πίνακα, όταν γνωρίζουμε ότι το πρώτο στοιχείο βρίσκεται στη θέση μνήμης 100;

Το αποτέλεσμα της πρόσθεσης να τοποθετηθεί στον καταχωρητή R4,o οποίος αρχικά έχει την τιμή 0. Χρησιμοποιήστε μόνο εντολές πρόσθεσης.

Α. Χρησιμοποιώντας μόνο τον απόλυτο τρόπο διευθυνσιοδότησης

Β. Χρησιμοποιώντας τον τρόπο διευθυνσιοδότησης με αυτοαύξηση και άμεσο καταχωρητή. Χρησιμοποιήστε τον καταχωρητή R1 που έχει αρχικά την τιμή 0.

Η εντολή ADD δέχεται μόνο δύο τελεστέους.
 

Α.

Η σειρά εντολών για την 1η περίπτωση είναι :

            ADD R4,(100);
            ADD R4,(102)

Περιγραφή εντολής :

            Regs[R4] ¬ Regs[R4] + Mem[100];
            Regs[R4] ¬ Regs[R4] + Mem[102]

Αρχικά προσθέτουμε το περιεχόμενο του καταχωρητή R4, το οποίο είναι 0, με το 1ο στοιχείο του πίνακα που βρίσκεται στη θέση μνήμης 100. Τώρα ο καταχωρητής R4 περιέχει το 1ο στοιχείο του πίνακα. Στη συνέχεια προσθέτουμε στο περιεχόμενο του καταχωρητή R4( 1ο στοιχείο του πίνακα) το περιεχόμενο της θέσης μνήμης 102, στην οποία βρίσκεται το 2ο στοιχείο του πίνακα. Έτσι έχουμε προσθέσει τα δύο πρώτα στοιχεία του πίνακα και το αποτέλεσμα το έχουμε τοποθετήσει στον καταχωρητή R4.
 

B.

H σειρά εντολών για τη 2η περίπτωση είναι :

            ADD R1,#100 ;
            ADD R4,(R1)+ ;
            ADD R4,(R1)

Περιγραφή εντολής :

            Regs[R1] ¬ Regs[R1] + 100 ;
            Regs[R4] ¬ Regs[R4] + Mem[Regs[R1]] ;
            Regs[R1] ¬ Regs[R1] + 2 ;
            Regs[R4] ¬ Regs[R4] + Mem[Regs[R1]]

Αρχικά προσθέτουμε την τιμή 100 στον καταχωρητή R1. Τώρα ο καταχωρητής R1 περιέχει την τιμή 100 και η θέση μνήμης που καθορίζεται από τον καταχωρητή R1 (Mem[Regs[R1]]) περιέχει το 1ο στοιχείο του πίνακα. Χρησιμοποιώντας στην πρόσθεση τον τρόπο διευθυνσιοδότησης με αυτοαύξηση, προσθέτουμε το 1ο στοιχείο του πίνακα με το περιεχόμενο του καταχωρητή R4 (δηλαδή με το 0) και αυξάνουμε το περιεχόμενο του R1 κατά 2, ώστε να δείχνει στην επόμενη λέξη (δηλαδή στο 2ο στοιχείο του πίνακα). Έτσι στην επόμενη πρόσθεση προσθέτουμε το 2ο στοιχείο του πίνακα με το περιεχόμενο του καταχωρητή R4 (1ο στοιχείο του πίνακα) και το αποτέλεσμα το τοποθετούμε στον καταχωρητή R4.