Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι Ιωάννης Έλληνας Τμήμα Η/ΥΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Αρχιτεκτονική-Ι Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι Ιωάννης Έλληνας Τμήμα Η/ΥΣ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σκοποί ενότητας Σκοπός της εισαγωγικής ενότητας είναι η ανασκόπηση των αριθμητικών συστημάτων και η εισαγωγή στις βασικές λειτουργίες των εντολών ενός επεξεργαστή, όπως αριθμητικές πράξεις, ολισθήσεις, περιστροφές, μετατροπές αριθμητικών συστημάτων.
Περιεχόμενα ενότητας Ορισμοί Αριθμοί BCD Αριθμητικά Συστήματα Δεκαδικό σύστημα Δυαδικό σύστημα Μετατροπή ακέραιου δεκαδικού σε δυαδικό Μετατροπή κλασματικού δεκαδικού σε δυαδικό Δεκαεξαδικό σύστημα Μετατροπή ακέραιου δεκαδικού σε δεκαεξαδικό Κώδικες Κώδικας ASCII Αριθμοί BCD Αριθμητικές πράξεις Λογικές πράξεις Ολίσθηση-Περιστροφή Μετατροπές αριθμών BCD Μετατροπές αριθμητικών συστημάτων (BIN to DEC) Μετατροπές αριθμητικών συστημάτων (DEC to BIN) Μετατροπές αριθμητικών συστημάτων (BIN to ASCII) Μετατροπές αριθμητικών συστημάτων (ASCII to BIN)
Ορισμοί (1) Ένας δυαδικός αριθμός των 4 bits καλείται nibble. Ένας δυαδικός αριθμός των 8 bits καλείται byte. Ένας δυαδικός αριθμός των 16 bits καλείται word. Ένας δυαδικός αριθμός των 32 bits καλείται double word. Ένας δυαδικός αριθμός των 64 bits καλείται quad word. 6
Ορισμοί (2) Το πιο αριστερό bit ενός δυαδικού αριθμού καλείται «περισσότερο σημαντικό» ή MSB (Most Significant Bit). Το πιο δεξιό bit ενός δυαδικού αριθμού καλείται «λιγότερο σημαντικό» ή LSB (Least Significant Bit).
Δεκαδικό – Δυαδικό - Δεκαεξαδικό Αριθμητικά Συστήματα Δεκαδικό – Δυαδικό - Δεκαεξαδικό BINary (b) HEXadecimal (h) DECimal (d) 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 Α 10 1011 Β 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 8
Δεκαδικό Σύστημα Η παράσταση ενός αριθμού D στο δεκαδικό σύστημα δίνεται από τη σχέση: D={…d3 d2 d1 d0 .d-1 d-2 d-3…} και η τιμή του D= Σi (di x 10 ͥ). Για παράδειγμα το 123.54 μπορεί να γραφτεί σαν: 123.54 = 1 x 10 ² + 2 x 10¹ + 3 x 10° + 5 x 10¯¹ +4 x 10 ¯²
Δυαδικό Σύστημα To δυαδικό σύστημα μοιάζει με το δεκαδικό με τη διαφορά ότι αποτελείται από 2 ψηφία και η δυαδική αναπαράσταση ενός αριθμού πραγματοποιείται με δυνάμεις του δυο ως εξής: Β ={…b3 b2 b1 b0 .b-1 b-2 b-3…} και η τιμή του B= Σi (bi x 2 ͥ). Για παράδειγμα το 1011.011 μπορεί να γραφτεί σαν : 1011.011 = (1 x 2 ³) + (0 x 2 ²) + (1 x 2¹ ) + (1 x 2°) + (0 x 2¯¹) +(1 x 2 ¯²) + ( 1 x 2 ¯³) = 11.375₁₀
Μετατροπή Ακέραιου Δεκαδικού σε Δυαδικό (1) Μετατροπή Ακέραιου Δεκαδικού σε Δυαδικό (1)
Μετατροπή Ακέραιου Δεκαδικού σε Δυαδικό (2) Μετατροπή Ακέραιου Δεκαδικού σε Δυαδικό (2) δυνάμεις του 2 25 24 23 22 21 20 δεκαδικό ισοδύναμο 32 16 8 4 2 1 Αποτέλεσμα 0 1 0 0 0 1 = 17
Μετατροπή Κλασματικού Δεκαδικού σε Δυαδικό Μετατροπή Κλασματικού Δεκαδικού σε Δυαδικό Ο αριθμός που προκύπτει είναι ο 0.11101 ο οποίος έχει ισοδύναμο το δεκαδικό αριθμό: 1*2-1+1*2-2+1*2-3+0*2-4+1*2-5=0,90625 που είναι μια προσέγγιση του αρχικού αριθμού
Δεκαεξαδικό Σύστημα Οι υπολογιστές βασίζουν τη λειτουργία τους στο δυαδικό σύστημα, όμως οι δυαδικοί αριθμοί αναπαρίστανται στο δεκαεξαδικό για να αποφεύγονται πολύ μεγάλοι δυαδικοί. Το δεκαεξαδικό επιτρέπει την ομαδοποίηση των δυαδικών ψηφίων ανά τέσσερα. Η ={…h3 h2 h1 h0 .h-1 h-2 h-3…} και η τιμή του H= Σi (hi x 16 ͥ).
Μετατροπή Ακέραιου Δεκαδικού σε Δεκαεξαδικό Μετατροπή Ακέραιου Δεκαδικού σε Δεκαεξαδικό δυνάμεις του 16 163 162 161 160 δεκαδικό ισοδύναμο 4096 256 16 1 Αποτέλεσμα 0 2 0 13 = 2*256+13*1=525 Ο δεκαεξαδικός αριθμός είναι: 020D h (To «h» πάντα υποδεικνύει τη βάση αρίθμησης)
Κώδικες (1) Ο αριθμός που περιέχεται σε ένα byte μπορεί να ερμηνευθεί με πολλούς τρόπους. Για παράδειγμα ο 01001100b μπορεί να είναι ο δεκαδικός 76, ο δεκαεξαδικός 4Ch ή ο χαρακτήρας “L” στον πίνακα με τους κωδικούς ASCII. Η υπόσταση ενός αριθμού καθορίζεται από το χρήστη, ο οποίος τους χειρίζεται όπως απαιτεί η εκάστοτε εφαρμογή.
Κώδικες (2) Δύο από τους πιο συχνά χρησιμοποιούμενους τύπους ή κώδικες είναι η δεκαδική παράσταση ενός δυαδικού αριθμού (BCD – Binary Coded Decimal) και ο Αμερικανικός Κώδικας Αντιστοιχιών (American Standard Code for Information Interchange) > ASCII. Υπάρχουν και άλλοι κώδικες όπως Gray Baudot, EBCDI, κλπ.
Κώδικας ASCII (1) Κάθε κομμάτι κειμένου που αποθηκεύεται σε έναν υπολογιστή αναπαριστά τους χαρακτήρες που εμφανίζονται σε αυτό ως αριθμούς από μια τυποποιημένη λίστα, ονομαζόμενη ASCII. Ο ASCII είναι κώδικας των 7 bits, ο οποίος εκφράζεται σαν ένα byte όπου το πιο σημαντικό ψηφίο είναι μηδέν ή χρησιμοποιείται σαν ισοτιμία (parity).
Κώδικας ASCII (2) - 37h 20h A B …….. Z a b …….. z 0Α 0Β …….. 0F 41h 42h …….. 5Ah 37h a b …….. z 61h 62h …….. 7Ah 0Α 0Β …….. 0F 20h -
Αριθμοί BCD (1) Ο κώδικας BCD χρησιμοποιείται όταν θέλουμε να έχουμε είσοδο, έξοδο και επομένως εσωτερική επεξεργασία δεκαδικών αριθμών. Ένας δεκαδικός κώδικας: Δεκαδικοί αριθμοί (0...9) κωδικοποιούνται χρησιμοποιώντας διακριτές δυαδικές λέξεις 4 ων bit.
Αριθμοί BCD (2) Για την κωδικοποίηση αριθμών με n δεκαδικά ψηφία, χρειαζόμαστε 4n bits στο BCD π.χ. (365)₁₀ =(0011.0110.0101)BCD Αυτό είναι διαφορετικό από τη μετατροπή σε δυαδικό όπου (365)₁₀ =(1.0110.1101)2 Ο κώδικας BCD χρειάζεται περίσσότερα bits. Όμως, παρέχει μεγαλύτερη ευκολία στην ανάγνωση/ερμηνεία.
Αριθμοί BCD (3) Packed BCD: Συνεπτυγμένοι είναι οι αριθμοί BCD οι οποίοι περιέχουν δυο δυαδικά ψηφία σε ένα byte. Οι αριθμοί 29h (byte), 3629h (word), 17243629h (double word) είναι BCD σε συνεπτυγμένη μορφή. Unpacked BCD: Μη συνεπτυγμένοι είναι οι αριθμοί BCD οι οποίοι περιέχουν ένα δυαδικό ψηφίο σε ένα byte. Οι αριθμοί 09h (byte), 0209h (word), 07040609h (double word) είναι BCD σε μη συνεπτυγμένη μορφή. 1 69 h – BCD (packed) 0609 h BCD (unpacked)
Αριθμητικές Πράξεις (1) Οι δυαδικές αριθμητικές πράξεισ εκτελούνται μεταξύ προσημασμένων ή μη προσημασμένων αριθμών. Το πρόσημο ενός προσημασμένου αριθμού βρίσκεται πάντα στο πιο σημαντικό του bit: Ο αριθμός είναι θετικός αν το bit πρόσημου είναι 0, ενώ είναι αρνητικός αν αυτό είναι 1. Τα υπόλοιπα bits δίνουν το μέτρο του αριθμού.
Αριθμητικές Πράξεις (2) Συμπλήρωμα ως Προς 2 Η παράσταση με συμπλήρωμα ως προς 2 επιβάλει το χειρισμό του πιο σημαντικού bit ως πολλαπλασιαστή τιμής -1 επί το βάρος που αντιστοιχεί στη θέση του ψηφίου πρόσημου, για 8bit αριθμό -2⁷= -128. Τα υπόλοιπα bits προστίθενται με το βάρος που τους αντιστοιχεί στο αρνητικό βάρος του πιο σημαντικού ψηφίου. Δεν υπάρχει το πρόβλημα της διπλής αναπαράστασης του μηδενός.
Αριθμητικές Πράξεις (3) Αρνητικός Αριθμός
Αριθμητικές Πράξεις (4) Επέκταση Προσήμου
Αριθμητικές Πράξεις (5) Flags ή Σημαίες
Αριθμητικές Πράξεις (6) Πρόσθεση Δυαδικών Μη προσημασμένοι + 282 256 Προσημασμένοι ή -230 -128
Αριθμητικές Πράξεις (7) Αφαίρεση Δυαδικών Το OF γίνεται ένα μόνο εάν από την αριθμητική πράξη δύο ομόσημων αριθμών προκύψει ετερόσημος αριθμός.
Αριθμητικές Πράξεις (8) Πράξεις Δεκαεξαδικών
Αριθμητικές Πράξεις (9) Πράξεις Αριθμών BCD Γιατί 6₁₀; 0 1 2 3 4 5 6 7 8 9 A B C D E F
Αριθμητικές Πράξεις (10) Πράξεις Αριθμών pBCD 0100 1000 48 h + 1000 1001 89 h Επιθυμητό αποτέλεσμα=01h 37 1100 1 0001 Αριθμός > 9, άρα προσθέτω 6 + 0110 1100 1 0111 Auxilliary Flag (AF + 1 1101 0111 Αριθμός > 9, άρα προσθέτω 6 + 0110 CF=1 0011 0111 CF=1 και 37h 01h 37h
Αριθμητικές Πράξεις (11) Πράξεις Αριθμών pBCD DAA: διορθώνει το αποτέλεσμα μετά από πρόσθεση δυο Packed BCD τιμών. AL= BCD αριθμός (υψηλό – χαμηλό ψηφίο) AF= Κρατούμενο από το χαμηλό BCD ψηφίο CF = Κρατούμενο από το υψηλό BCD ψηφίo Αλγόριθμος: Αν AL>9 ή AF=1 AL = AL+6- - AF=1 Αν AL>9F ή CF=1 AL=AL +60h - - CF=1
Αριθμητικές Πράξεις (12) Πράξεις Αριθμών pBCD DAS: διορθώνει αποτέλεσμα μετά από αφαίρεση δυο Packed BCD τιμών. Αλγόριθμος: Αν AL>9 ή AF=1 AL = AL-6- - AF=1 Αν AL>9F ή CF=1 AL=AL -60h - - CF=1
Αριθμητικές Πράξεις (13) Πράξεις Αριθμών pBCD 0000 0100 0000 1000 04h 08h + 0000 1000 0000 1001 08h 09h = Επιθυμητό αποτέλεσμα 01h 03h 07 1 0001 Αριθμός > 9, άρα προσθέτω 6 + 0110 0000 1100 1 0111 + 1 0000 1101 0000 0111 Αριθμός > 9, άρα προσθέτω 6 + 0000 0110 CF=1 0000 0011 0000 0111 CF=1 και 03h 07h 01h 03h 07h
Αριθμητικές Πράξεις (14) Πράξεις Αριθμών uBCD AAA: Διορθώνει το αποτέλεσμα μετά από πρόσθεση δύο uBCD αριθμών Παράδειγμα: 09 08 + 02 09 = 01 02 07 08 + 09 = 01 και AF=1 01 + 06 = 07 09 + 02 + AF = 0C 0C + 06 = 02 και CF=1 01 02 07
Αριθμητικές Πράξεις (15) Πράξεις Αριθμών uBCD AAS: Διορθώνει το αποτέλεσμα μετά από αφαίρεση δύο uBCD αριθμών Παράδειγμα: 03 05 - 00 09 = 02 06 03 – 00 = 03 και 05 – 09 = FC 0C – 06 = 06 και 03-01 = 02 02 06
Λογικές Πράξεις Οι λογικές πράξεις AND, OR, NOT, XOR εκτελούνται bit προς bit μεταξύ δυο δυαδικών αριθμών ίδιου μήκους (Bitwise). H AND χρησιμοποιείται για το μηδενισμό (λογικό 0) ενός ή περισσότερων bits. H OR χρησιμοποιείται για την τοποθέτηση (λογικό 1) ενός ή περισσότερων bits. H NOT χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης του αριθμού. Η XOR χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης μερικών bits.
Ολίσθηση & Περιστροφή Η ολίσθηση προς τα αριστερά ενός μη προσημασμένου αριθμού κατά n θέσεις ισοδυναμεί με πολλαπλασιασμό με 2ᵑ. H ολίσθηση προς τα δεξιάενός μη προσημασμένου αριθμού κατά n θέσεις ισοδυναμεί με διαίρεση δια 2ᵑ. Αριστερή και Δεξιά Περιστροφή
Μετατροπές αριθμών BCD pBCD uBCD uBCD pBCD
Μετατροπές Αριθμητικών Συστημάτων - BIN DEC Ένας δυαδικός αριθμός μήκους ενός byte (packed BCD), έχει εκατοντάδες, δεκάδες και μονάδες. Η μετατροπή γίνεται με τη μέθοδο των διαδοχικών διαιρέσεων με το 100d=64h και 10d= 0Ah, προκειμένου να διαχωριστούν τα ψηφία με το αντίστοιχο βάρος.
Μετατροπές Αριθμητικών Συστημάτων - DEC BIN Ένας δεκαδικός αριθμός μήκους ενός byte (packed BCD), έχει δεκάδες και μονάδες. Η μετατροπή γίνεται αν οι δεκάδες πολλαπλασιαστούν με 10d=0Ah και στο αποτέλεσμα προστεθούν μονάδες.
Μετατροπές Αριθμητικών Συστημάτων -BIN ASCII Ένας δυαδικός αριθμός μήκους ενός byte έχει δύο ψηφία σε hex. Αρχικά διαχωρίζονται τα ψηφία και στη συνέχεια ελέγχεται αν κάποιο ψηφίο είναι γράμμα ή αριθμός ώστε να του προστεθεί το 30h ή 37 h αντίστοιχα.
Μετατροπές Αριθμητικών Συστημάτων - ASCII BIN Για να μετατρέψουμε δυο χαρακτήρες ASCII σε δυαδικό αριθμό ενός byte, ελέγχουμε αν καθένας από αυτούς είναι αριθμός ή όχι, ώστε να του αφαιρεθεί το 30h ή 37h αντίστοιχα και μετά να κάνουμε σύμπτυξη.
Βιβλιογραφία “ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ-Ο επεξεργαστής 8086”, Ι. Ν. Έλληνας, Π. Δ. Κεντερλής, ISBN: 978-960-930663-8, Αθήνα 2008. Γ. Δ. Κόγιας, “Αρχιτεκτονική, Οργάνωση και Προγραμματισμός μικροϋπολογιστών”, Σύγχρονη Εκδοτική. Κ. Ζ. Πεκμεστζή, “Συστήματα μικροϋπολογιστών”, Εκδόσεις Συμμετρία.
Τέλος Ενότητας