Συμβολικές Γλώσσες και Αρχιτεκτονική Μικροεπεξεργαστών

Απόστολος Κοσσίδας,
Μαρία Ραγκούση,
Σπυρίδων Ματιάτος

 

Α΄ Έκδοση

 

Εκδότης: Μπένου Ε.
Μορφή: Μαλακό εξώφυλλο
Αριθμός σελίδων: 352
Κωδικός ISBN: 960-359-024-Χ
Διαστάσεις: 17 × 24 εκ.
Κωδ. Εύδοξος: 140970

Το βιβλίο αυτό, "Συμβολικές Γλώσσες και Αρχιτεκτονική Μικροεπεξεργαστών", έχει σκοπό να καλύψει τις ανάγκες των σπουδαστών των ΤΕΙ στο αντίστοιχο μάθημα, όπως αυτό προβλέπεται από τα υπάρχοντα προγράμματα. Επίσης μπορεί να χρησιμοποιηθεί ως βοήθημα από όσους ενδιαφέρονται για θέματα προγραμματισμού σε συμβολικές γλώσσες και για την αρχιτεκτονική μικροεπεξεργαστών. Στο βιβλίο αναφέρονται εισαγωγικά θέματα σε υπολογιστές, όπως αριθμητικά συστήματα και γενικά στοιχεία για τις γλώσσες προγραμματισμού.

Συγκεκριμένα στο πρώτο κεφάλαιο αναλύονται τα αριθμητικά συστήματα και γίνεται αναφορά στους κώδικες. Το δεύτερο κεφάλαιο αναφέρεται στις διάφορες κατηγορίες γλωσσών προγραμματισμού καθώς και στον ορισμό διαφόρων κατηγοριών assemblers, loaders, linkers, κλπ. Το κύριο βάρος δίνεται στο τρίτο κεφάλαιο, το οποίο περιλαμβάνει λεπτομερή αρχιτεκτονική και λειτουργική αναφορά στον μικροεπεξεργαστή Ζ80 της Ζilog. Τέλος στα διάφορα παραρτήματα του βιβλίου δίδονται συνοπτικά και αναλυτικά ρεπερτόρια εντολών του Ζ80 και εργαστηριακές ασκήσεις με προγράμματα - παραδείγματα για εκτέλεση σε εξομοιωτή.

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

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

Απ. Κοσσίδας,
Μ. Ραγκούση,
Σπ. Ματιάτος

Περιεχόμενα

ΠΡΟΛΟΓΟΣ 3
ΠΕΡΙΕΧΟΜΕΝΑ 5
1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ – ΚΩΔΙΚΕΣ 11
1.1 Γενικά περί Αριθμητικών Συστημάτων (Α.Σ.) 11
1.1.1 Ιστορικό στοιχεία 11
1.1.2 Έκφραση αριθμητικών αξιών στο δεκαδικό Αριθμητικό Σύστημα 13
1.1.3 Έκφραση αριθμητικών αξιών σε άλλα Αριθμητικά Συστήματα 15
1.2 Μετατροπή αριθμού από ένα Α.Σ. σε άλλο 17
1.2.1 Μετατροπή αριθμού από άλλα Α.Σ. στο δεκαδικό 17
1.2.2 Μετατροπή αριθμού από το δεκαδικό σε άλλο Α.Σ 18
1.2.3 Μετατροπή αριθμού από ένα Α.Σ. σε οποιοδήποτε άλλο 27
1.3 Αριθμητικές πράξεις στα διάφορα Α.Σ 32
1.3.1 Πρόσθεση 33
1.3.2 Αφαίρεση 35
1.3.3 Πολλαπλασιασμός – Διαίρεση 36
1.4 Η έννοια του συμπληρώματος 38
1.4.1 Συμπλήρωμα αριθμού ως προς (βάση – 1) 38
1.4.2 Συμπλήρωμα αριθμού ως προς βάση 40
1.4.3 Γενικές παρατηρήσεις για την χρήση των συμπληρωμάτων 42
1.5 Παράσταση θετικών και αρνητικών αριθμών στο δυαδικό Α.Σ 43
1.5.1 Προσημασμένη παράσταση αριθμού (ΠΠΑ) 43
1.5.2 Παράσταση θετικών και αρνητικών δυαδικών αριθμών με συμπλήρωμα ως προς 1 (ΠΠΣ1) 44
1.5.3 Παράσταση θετικών και αρνητικών δυαδικών αριθμών με συμπλήρωμα ως προς 2 (ΠΠΣ2) 45
1.6 Πράξεις με προσημασμένους δυαδικούς αριθμούς 47
1.6.1 Πρόσθεση και αφαίρεση σε σύστημα προσημασμένου συμπληρώματος 47
1.6.2 Πολλαπλασιασμός και διαίρεση σε σύστημα προσημασμένου συμπληρώματος 51
1.7 Αριθμητικές πράξεις ακεραίων στον Η/Υ 52
1.7.1 Περιορισμοί απορρέοντες από την φύση των Η/Υ 52
1.7.2 Αποθηκευτικές μονάδες του Η/Υ 53
1.7.3 Παράσταση και πράξεις μη προσημασμένων ακεραίων στον Η/Υ 54
1.7.4 Παράσταση και πράξεις προσημασμένων ακεραίων στον Η/Υ 56
1.7.5 Παράσταση κλασματικών στον Η/Υ 57
1.8 Δυαδικοί κώδικες 60
1.8.1 Δυαδική κωδικοποίηση δεκαεξαδικών αριθμών 61
1.8.2 Δυαδική κωδικοποίηση οκταδικών αριθμών 63
1.8.3 Δυαδική κωδικοποίηση δεκαδικών αριθμών 64
1.8.4 Δυαδική κωδικοποίηση αλφαριθμητικών χαρακτήρων 70
1.9 Ασκήσεις 75
2. ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 79
2.1 Γενικά περί γλωσσών προγραμματισμού 79
2.2 Προγραμματισμός της λύσης ενός προβλήματος 82
2.2.1 Διάγραμμα ροής (flow chart) 83
2.2.2 Επιλογή της κατάλληλης δομής δεδομένων 84
2.3 Γλώσσες προγραμματισμού υψηλού επιπέδου 91
2.3.1 Ανασκόπηση των γλωσσών προγραμματισμού υψηλού επιπέδου 92
2.3.2 Εισαγωγικά στοιχεία για τις γλώσσες υψηλού επιπέδου 94
2.3.3 Μεταγλωττιστές (compilers) 96
2.3.4 Διερμηνείς (interpreters) 97
2.4 Γλώσσες προγραμματισμού χαμηλού επιπέδου 97
2.4.1 Γλώσσα μηχανής (machine language) 98
2.4.2 Συμβολική γλώσσα (assembly language) 99
2.5 Εισαγωγή στους συμβολομεταφραστές (assemblers) 100
2.5.1 Συμβολομεταφραστής μίας σάρωσης (One-pass assembler) 104
2.5.2 Συμβολομεταφραστής δύο σαρώσεων (Two-pass assembler) 105
2.5.3 Μακρο-συμβολομεταφραστής (Macro-assembler) 105
2.5.4 Δια-συμβολομεταφραστής (Cross-assembler) 106
2.5.5 Ιδιο-συμβολομεταφραστής (Resident assembler) 106
2.5.6 Μετα-συμβολομεταφραστής (Meta-assembler) 106
2.5.7 Απο-συμβολομεταφραστής (Disassembler) 107
2.6 Κειμενογράφος (editor) 107
2.6.1 Κειμενογράφοι γραμμής (line-oriented editors) 108
2.6.2 Κειμενογράφοι χαρακτήρων (character-oriented editors) 108
2.7 Συνδέτης των τμημάτων του προγράμματος (linker) 109
2.8 Φορτωτής του εκτελέσιμου κώδικα στη μνήμη (loader) 109
2.8.1 Απόλυτος φορτωτής (Absolute loader) 109
2.8.2 Μεταθέσιμος φορτωτής (Relocating loader) 110
2.8.3 Συνδετικός φορτωτής (Linking loader) 110
2.9 Εξομοιωτές (Simulators) 110
2.10 Αποσφαλματωτές (Debuggers) 110
2.10.1 Προσομοιωτής αποσφαλμάτωσης (Debugging emulator) 111
3. Ο ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΗΣ Ζ80 113
3.1 Εισαγωγή – Γενικά χαρακτηριστικά 113
3.2 Οργάνωση ενός μικροϋπολογιστικού συστήματος με βάση τον Ζ80 114
3.3 Εξωτερική όψη και ακίδες (pins) του Ζ80 117
3.4 Η μνήμη του Ζ80 125
3.5 Εσωτερική Αρχιτεκτονική του Ζ80 127
3.5.1 Οι καταχωρητές του Ζ80 130
3.5.2 Καταχωρητής Κατάστασης (Flag Register) 134
3.6 Παράλληλη Είσοδος / Έξοδος (Parallel Input / Output, PIO) 138
3.6.1 Γενικά στοιχεία για το ΡΙΟ 138
3.6.2 Στοιχεία εσωτερικής αρχιτεκτονικής του ΡΙΟ 139
3.6.3 Εξωτερική όψη και ακίδες (pins) του ΡΙΟ 142
3.7 Το Κύκλωμα Μετρητή – Χρονιστή του Ζ80 (Counter – Timer Circuit, CTC) 148
3.7.1 Γενικά στοιχεία για το CTC 148
3.7.2 Εξωτερική όψη και ακίδες (pins) του CTC 151
3.8 Σειριακή Είσοδος / Έξοδος (Serial Input / Output, SIO) 156
3.8.1 Γενικά στοιχεία για το SIO 156
3.8.2 Εξωτερική όψη και ακίδες (pins) του SIO 159
3.9 Εντολές προγραμματισμού του Ζ80 σε συμβολική γλώσσα 164
3.10 Μορφή των εντολών (Instruction format) 166
3.10.1 Εντολές ενός byte 168
3.10.2 Εντολές δύο bytes 170
3.10.3 Εντολές τριών bytes 171
3.11 Τρόποι διευθυνσιοδότησης των εντολών 172
3.11.1 Άμεση και Επεκτεταμένη Άμεση διευθυνσιοδότηση (Immediate and immediate extended addressing) 174
3.11.2 Διευθυνσιοδότηση με καταχωρητή (Register addressing) 175
3.11.3 Έμμεση διευθυνσιοδότηση με καταχωρητή (Register Indirect addressing) 175
3.11.4 Απόλυτη ή επεκτεταμένη διευθυνσιοδότηση (Absolute or extended
addressing) 176
3.11.5 Σχετική διευθυνσιοδότηση (Relative addressing) 177
3.11.6 Διευθυνσιοδότηση μέσω δείκτη (Indexed addressing) 178
3.11.7 Υπονούμενη διευθυνσιοδότηση (Implied addressing) 179
3.11.8 Διευθυνσιοδότηση ανά δυαδικό ψηφίο (Bit addressing) 180
3.11.9 Διευθυνσιοδότηση με τροποποίηση της μηδενικής σελίδας μνήμης (Modified
page zero addressing) 181
3.12 Εκτέλεση των εντολών 182
3.12.1 Η φάση ανάκλησης 184
3.12.2 Οι φάσεις αποκωδικοποίησης και εκτέλεσης 185
3.12.3 Παραδείγματα εκτέλεσης εντολών 186
3.13 Εντολές μεταφοράς 190
3.13.1 Εντολές μεταφοράς των 8 bits 191
3.13.2 Εντολές μεταφοράς 16 bits 195
3.13.3 Εντολές λειτουργίας σωρού 196
3.13.4 Εντολές μεταφοράς block 206
3.13.5 Εντολές ανταλλαγής 210
3.14 Εντολές επεξεργασίας δεδομένων 211
3.14.1 Εντολές λογικών πράξεων 212
3.14.2 Εντολές γενικής αριθμητικής 213
3.14.3 Εντολές αριθμητικών πράξεων 214
3.14.4 Εντολές σύγκρισης 220
3.14.5 Εντολές ολίσθησης και περιστροφής 224
3.14.6 Εντολές χειρισμού bit 232
3.15 Ψευδοεντολές 233
3.16 Εντολές διακλάδωσης 235
3.16.1 Εντολές άλματος 236
3.16.2 Εντολές άλματος υπό συνθήκη 238
3.16.3 Εντολές χειρισμού υποπρογραμμάτων 245
3.16.4 Εντολές χειρισμού αιτήσεων διακοπής (interrupts) 256
3.16.5 Εντολές ελέγχου της CPU 276
3.17 Εντολές Εισόδου / Εξόδου 276
3.17.1 Εντολές απλής εισόδου / εξόδου 279
3.17.2 Εντολές εισόδου / εξόδου block 280
3.18 Μακροεντολές 284
3.19 Ασκήσεις 288
ΒΙΒΛΙΟΓΡΑΦΙΑ 289
ΠΑΡΑΡΤΗΜΑ Α: ΕΝΤΟΛΕΣ TOY Ζ80 291
ΠΑΡΑΡΤΗΜΑ Β: ΑΣΚΗΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ 317