Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

Εντολές αναφοράς στη μνήμη

Θα ξεκινήσουμε με το ρεπερτόριο εντολών του Άβακα από μία ομάδα εντολών που ονομάζονται εντολές αναφοράς στη μνήμη (memory reference instructions). Στις εντολές αυτές, το τμήμα διεύθυνσης ερμηνεύεται πάντα σαν μία διεύθυνση της μνήμης.

Στον πίνακα που ακολουθεί θα συμβολίζουμε: - την τιμή του τμήματος διεύθυνσης της εντολής με Ν - το περιεχόμενο του συσσωρευτή Α με (Α) - το περιεχόμενο της διεύθυνσης που υποδεικνύει το τμήμα διεύθυνσης Ν της εντολής με (Ν) - την αποθήκευση μίας τιμής σε μία θέση μνήμης ή σε ένα καταχωρητή με το σύμβολο

Η εντολή 0010000000000010 έχει κώδικα εντολής 0001 και τμήμα διεύθυνσης 000000000010(2) = 2(10). Έτσι η εντολή σημαίνει «αντίγραψε το περιεχόμενο του συσσωρευτή Α στη θέση 2 της μνήμης».

Η εντολή 0100000000000110 έχει κώδικα εντολής 0100 και τμήμα διεύθυνσης 000000000110(2) = 6(10). Η εντολή σημαίνει «αφαίρεσε το περιεχόμενο της θέσης 6 της μνήμης από το συσσωρευτή Α και αποθήκευσε το αποτέλεσμα πάλι στον Α». Το περιεχόμενο της θέσης 6 της μνήμης δεν αλλάζει.

Ας δούμε ένα μικρό πρόγραμμα που χρησιμοποιεί εντολές αναφοράς στη μνήμη.

Το πρόγραμμα αυτό αποτελείται από τέσσερις εντολές, αποθηκευμένες στις διευθύνσεις της μνήμης 0(10) - 3(10).

Εντολή 0: Ο κώδικας εντολής είναι 0001 και το τμήμα διευθύνσεως έχει την τιμή 1010(2) = 10(10). Η εντολή σημαίνει «φόρτωσε το συσσωρευτή Α με το περιεχόμενο της θέσης μνήμης 10(10)».

Εντολή 1: Ο κώδικας εντολής είναι 0011 και το τμήμα διευθύνσεως έχει την τιμή 1011(2) = 11(10). Η εντολή σημαίνει «πρόσθεσε στο συσσωρευτή Α με το περιεχόμενο της θέσης μνήμης 11(10)».

Εντολή 2: Ο κώδικας εντολής είναι 0010 και το τμήμα διευθύνσεως έχει την τιμή 1100(2) = 12(10). Η εντολή σημαίνει «αποθήκευσε το περιεχόμενο του συσσωρευτή Α στη θέση μνήμης 12(10)».

Εντολή 3: Ο κώδικας εντολής είναι 0000, που όπως θα δούμε παρακάτω σημαίνει «τερμάτισε τη λειτουργία του υπολογιστή», είναι δηλαδή η εντολή STOP.

Θα παρακολουθήσουμε βήμα-βήμα την εκτέλεση του προγράμματος αυτού. Αρχικά, οι τρεις καταχωρητές της ΚΜΕ που χρησιμοποιούμε, δηλαδή ο PC, ο IR και ο Α έχουν την τιμή 0.

Μετά την ολοκλήρωση του προγράμματος το περιεχόμενο της θέσης μνήμης 1100(2) = 12(10) έχει αλλάξει και έχει πάρει την τιμή 0000000100000101 (2). Οι υπόλοιπες θέσεις μνήμης διατηρούν τα περιεχόμενά τους.

Στο πρόγραμμα αυτό οι θέσεις μνήμης με διευθύνσεις από 000000000000 έως και 000000000011 περιέχουν εντολές, ενώ οι θέσεις μνήμης με διευθύνσεις από 000000001010 έως και 000000001100 περιέχουν δεδομένα. Ο υπολογιστής όμως δεν κάνει διάκριση μεταξύ δεδομένων και εντολών. Αν κάποια στιγμή ο μετρητής προγράμματος PC είχε την τιμή 000000001011, το περιεχόμενο της αντίστοιχης θέσης μνήμης θα είχε εκτελεστεί σαν να ήταν εντολή, παρότι στην πραγματικότητα αποτελεί δεδομένα.

Είναι ευθύνη του προγραμματιστή να γράψει το πρόγραμμα κατά τέτοιο τρόπο, ώστε ο υπολογιστής να εκτελεί τις εντολές και όχι κατά λάθος δεδομένα σαν εντολές.