ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ Τμήμα Πληροφορικής και Τεχνολογίας Υπολογιστών Μάθημα: Αρχιτεκτονική Υπολογιστών Εργασία: 1 A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης Μετατροπή από δεκαδικό σύστημα σε δυαδικό πραγματοποιείτε με συνεχούς διαιρέσεις όπως παρακάτω: i. 64 10 = 1000000 2 ii. 64 2 32 0 32 2 16 0 16 2 8 0 8 2 4 0 4 2 2 0 2 2 1 0 1 2 0 1 1 0 0 0 0 0 0 50 10 = 110010 2 50 2 25 0 25 2 12 1 13 2 6 0 6 2 3 0 3 2 1 1 1 2 0 1 1 1 0 0 1 0 iii. 80 2 40 0 40 2 20 0 20 2 10 0 10 2 5 0 5 2 2 1 2 2 1 0 1 2 0 1 1 0 1 0 0 0 0 80 10 = 1010000 2 130 10 =10000010 2 iv. 130 2 65 0 65 2 32 1 32 2 16 0 16 2 8 0 8 2 4 0 4 2 2 0 2 2 1 0 2 2 0 1 1 0 0 0 0 0 1 0
2. Μετατροπή από δυαδικό στο οκταδικό Χρησιμοποιώντας τον παρακάτω βοηθητικό πίνακα πραγματοποιούμαι τις μετατροπές των ακόλουθων αριθμών. για την μετατροπή από δυαδικό σε οκταδικό σύστημα ομαδοποιούμε τα bit σε τριάδες όπου δεν βγαίνει τριάδα προσθέτουμε μηδενικά, χρησιμοποιώντας τον παραπάνω πίνακα βρίσκουμε την κάθε ομάδα σε ποιον οκταδικό αριθμό ανήκει i. 1010010111101101011 001 010 010 111 101 101 011 1 2 2 7 5 5 3 Άρα ο αριθμός στο οκταδικό σύστημα είναι: 1227553 ii. 1101110111000111011 001 101 110 111 000 111 011 1 5 6 7 0 7 3 Άρα ο αριθμός στο οκταδικό σύστημα είναι: 1567073 iii. 1111010101111001110 001 111 010 101 111 001 110 1 7 2 5 7 1 6 Άρα ο αριθμός στο οκταδικό σύστημα είναι: 1725716 iv. 1111100001110001100 001 111 100 001 110 001 100 1 7 4 1 6 1 4 Άρα ο αριθμός στο οκταδικό σύστημα είναι: 1741614
3. Μετατροπή αριθμών άσκησης 2 στο δεκαεξαδικό σύστημα αρίθμησης για την μετατροπή από δυαδικό σε δεκαεξαδικό σύστημα ομαδοποιούμε τα bit σε τετράδες όπου δεν βγαίνει τριάδα προσθέτουμε μηδενικά, χρησιμοποιώντας τον παραπάνω πίνακα βρίσκουμε την κάθε ομάδα σε ποιον δεκαεξαδικό αριθμό ανήκει i. 1010010111101101011 0101 0010 1111 0110 1011 5 2 F 6 Β Άρα ο αριθμός στο δεκαεξαδικό σύστημα είναι: 52F6B ii. 1101110111000111011 0110 1110 1110 0011 1011 6 E E 3 B Άρα ο αριθμός στο δεκαεξαδικό σύστημα είναι: 6EE3B iii. 1111010101111001110 0111 1010 1011 1100 1110 7 A B C E Άρα ο αριθμός στο δεκαεξαδικό σύστημα είναι: 7ABCE iv. 1111100001110001100 0111 1100 0011 1000 1100 7 C 3 8 C Άρα ο αριθμός στο δεκαεξαδικό σύστημα είναι: 7C38C B. Αφαίρεση δυαδικών αριθμών με χρήση συμπληρώματος ως προς 2 Παρατηρήσεις για την επίλυση της άσκησης: 1. Μετατρέπουμε τους αριθμούς από δεκαδικό στο δυαδικό σύστημα αρίθμησης 2. Βρίσκουμε το συμπλήρωμα ως προς 2 του δεύτερο αριθμό της πράξης 3. Υπολογίζουμε την πράξη υπενθυμίζετε ότι ο Η/Υ πραγματοποιεί μόνο πρόσθεση 4. Σε περίπτωση αρνητικού αποτελέσματος ξαναβρίσκουμε το συμπλήρωμα επαναλαμβάνουμε την διαδικασία υπολογισμού της πράξης
1. 53 68 53 10 =0110101 2 68 10 =1000100 2 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 0 1 + 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 Άρα 0110101 1000100 =0001111 2. 15 14 15 10 =1111 2 14 10 =1110 2 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 + 0 0 1 0 1 0 0 0 1 Άρα 1111 1110 =0001 Αποτέλεσμα της πράξης 3. 72 32 72 10 =1001000 2 32 10 =0100000 2 0 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 Άρα 1001000 0100000 = 0101000
4. 33 73 33 10 =0100001 2 73 10 =1001001 2 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 + 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 Άρα 0100001 1001001 = 0101000 C. Λειτουργία της ΚΜΕ O PC(Program Counter)αρχικά είναι 1000h το πρόγραμμα συνεχίζεται να εκτελείτε αυξάνοντας τον μετρητή ανά 4 μέχρι να φτάσει στην ετικέτα Loop, όταν ο PC ισούται με το 1008h (δηλ. την επόμενη θέση μνήμης) θα εκτελεστεί η εντολή add $s0, $s1, $s2 η εντολή add θα καταχωρηθεί στον καταχωρητή εντολών και έπειτα στον αποκωδικοποιητή εντολών για να αποκωδικοποιηθεί, από τους καταχωρητές $s1 και $s2 αποθηκεύονται στους προσωρινούς καταχωρητές της AΛΜ(Arithmetical and Logical Unite, Αριθμητική και λογική μονάδα) όπου γίνετε η εκτέλεση της εντολής, που είναι η πρόσθεση των τιμών που είναι αποθηκευμένα στους καταχωρητές $s1 και $s2 όπου το αποτέλεσμα αποθηκεύεται στον συσσωρευτή Α και έπειτα στον καταχωρητή $s0 Συνεχίζετε να εκτελείτε το πρόγραμμα με την επόμενη εντολή που είναι η addi $s5, $s5,5 η οποία αυξάνει την τιμή του καταχωρητή $s5 κατά 5 φορές, καταχωρείτε και αποκωδικοποιείτε από αντίστοιχα τμήματα της ΚΜΕ μετά ακολουθεί την εξής διαδικασία: αρχικά το περιεχόμενο του καταχωρητή $s5 υποθέτουμε ότι είναι 0 (για να είναι 0 πρέπει να αρχικοποιηθεί) στη συνέχεια λαμβάνει την τιμή 5 από την κεντρική μνήμη, αυτές οι τιμές αντιγράφονται στους αντίστοιχους προσωρινούς καταχωρητές της ΑΛΜ η μεταφορά αυτών γίνετε μέσω του ΕΔΔ(Εσωτερικού Διαύλου Δεδομένων), στη συνέχεια εισάγονται στην ΑΛΜ από τις αντίστοιχες εισόδους της όπου πραγματοποιεί και την πράξη δηλ. την πρόσθεση με την τιμή του καταχωρητή και της τιμής που λαμβάνει από την μνήμη, το αποτέλεσμα μέσω του ΕΔΔ αποθηκεύετε στον συσσωρευτή Α έπειτα στον καταχωρητή $s5
Στην θέση 1016h υπάρχει η εντολή li $t0,1 η εντολή τοποθετείται στον καταχωρητή εντολών και αποκωδικοποιείτε η λειτουργία της εντολής από τον αποκωδικοποιητή εντολών που είναι να καταχωρήσει το 1 από την μνήμη (παίρνει την τιμή από την μνήμη) στον προσωρινό καταχωρητή $t0, μέσω του ΕΔΔ αντιγράφετε στον προσωρινό καταχωρητή της ΑΛΜ, γίνετε η καταχώρηση της τιμής από την ΑΛΜ και μετά αποθηκεύεται στον συσσωρευτή Α έπειτα στον καταχωρητή $t0. Συνεχίζετε το πρόγραμμα να εκτελείτε με την εντολή beqz $s0,loop στην θέση 1020h ακολουθείτε ίδια διαδικασία με τις προηγούμενες εντολές αποθηκεύετε στον καταχωρητή εντολών και αποκωδικοποιείτε από το αντίστοιχο τμήμα, μόνο στην φάση της αποκωδικοποίησης αποθηκεύετε και η διεύθυνση της ετικέτας Loop στον καταχωρητή διευθύνσεων για να μπορέσει να εντοπίζει την θέση του Loop σε περίπτωση που αληθεύει η συνθήκη, μέσω του ΕΔΔ αντίγραφα αυτόν αποθηκεύονται στους αντίστοιχους προσωρινούς καταχωρητές της ΑΛΜ εισάγονται στην ΑΛΜ εκτελείτε η συνθήκη που είναι η σύγκριση με το περιεχόμενο του καταχωρητή $s0 με το 0 αν αληθεύει η συνθήκη εκτελείτε η Loop. D. Κλήση υποπρογραμμάτων SP=7000h Αρχική τιμή του SP PC=4000h Αρχή του κυρίως προγράμματος PC=4002h συνεχίζετε να εκτελείτε μέχρι 4355h PC=4355h κλήση SUB2 PC=4357h αυξάνετε κατά 2 SP=7001h αυξάνετε κατά 1 θέση PC=6000h συνεχίζετε να εκτελείτε μέχρι 6500h PC=6500h RET επιστροφή στην αποθηκευμένη διεύθυνση στον σωρό PC=4357h συνεχίζετε να εκτελείτε μέχρι 4500h SP=7000h μειώνετε στην αρχική τιμή PC=4500h κλήση SUB1 PC=4502h αυξάνετε κατά 2 SP=7001h αυξάνετε κατά 1 θέση PC=5000h συνεχίζετε να εκτελείτε μέχρι 5200h PC=5200h κλήση SUB2 PC=5202h αυξάνετε κατά 2 SP=7002h αυξάνετε κατά 1 θέση PC=6000h συνεχίζετε να εκτελείτε μέχρι 6500h PC=6500h RET επιστροφή στην αποθηκευμένη διεύθυνση στον σωρό PC=5202h συνεχίζετε να εκτελείτε μέχρι 5500h SP=7001h λαμβάνει την θέση από σωρό (μειώνετε) PC=5500h RET επιστροφή στην αποθηκευμένη διεύθυνση στον σωρό PC=4502h λαμβάνει την θέση από σωρό SP=7000h συνεχίζετε να εκτελείτε το κυρίως πρόγραμμα μέχρι PC=4700h όπου τερματίζετε το πρόγραμμα END Program Counter PC 5202h 4502h 4357h XXXXXXXX Stack Pointer SP 7002h 7001h 7001h 7000h
Παρατηρήσεις: Αρχικά ο Δείκτης Σωρού (SP) δείχνει σε μία τυχαία άγνωστη διεύθυνση όπου ο Μετρητής Προγράμματος (PC) περιέχει μια άγνωστη διεύθυνση, Το κυρίως πρόγραμμα ξεκινάει όταν το SP δείχνει την διεύθυνση 4000h, το πρόγραμμα συνεχίζετε να εκτελείτε καταλαμβάνοντας δύο θέσης μνήμης κάθε φορά, όταν συναντάει μια κλήση συστήματος αυξάνει τον SP και τον καταχωρεί στον σωρό για να απομνημόνευση την θέση μνήμης για να μπορέσει να επιστρέψει όταν τελειώσει η εκτέλεση κάποιας κλήσης, επίσης αυξάνετε και ο SP ανά μια θέση μνήμης σε κάθε καταχώρηση διεύθυνσης στον σωρό. Οι κλήσεις συστημάτων αλλάζουν την ροή του κυρίως προγράμματος και θέτουν σε εκτέλεση το δικό τους κώδικα, μια κλήση μπορεί να περιέχει και άλλες κλήσεις, το πρόγραμμα συνεχίζετε να εκτελείτε μέχρι να συναντήσει την εντολή RET στην περίπτωση αυτή ο PC λαμβάνει την τελευταία διεύθυνση που έχει καταχωρηθεί στον σωρό μειώνοντας τον SP, τέλος όταν εκτελεστούν οι κλήσεις γυρνάει στο κυρίως πρόγραμμα όταν φτάσει ο PC στην θέση 4700h όπου περιέχει την εντολή END το οποίο τερματίζει την εκτέλεση του προγράμματος. Μολλά Μ. Αχμέτ Α.Μ.: 1528 amolla@teilam.gr