Αρχιτεκτονική Υπολογιστών Ι



Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών Ι

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Προγραμματιστικό Περιβάλλον

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

Διάγραμμα Ροής. Σελίδα 1 από 10

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Μεταβλητές τύπου χαρακτήρα

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών. Ασκήσεις: week3 και week4. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός

Εισαγωγή στην Αριθμητική Ανάλυση

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

Αρχιτεκτονική Υπολογιστών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών LAB 1 ( )

Αριθμητικά Συστήματα

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

3. Να γραφεί πρόγραμμα που θα διαβάζει 100 ακεραίους αριθμούς από το πληκτρολόγιο και θα υπολογίζει το άθροισμά τους.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Εντολές της LOGO (MicroWorlds Pro)

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ ΛΥΚΕΙΟΥ-ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 09/09/2012

Προτεινόμενα Θέματα ΑΕΠΠ

4. Επιλογή και Επανάληψη

Παραδείγματα Assembly (Μέρος

Δυαδικό Σύστημα Αρίθμησης

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Γνωρίστε το Excel 2007

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Διαδικασιακός Προγραμματισμός

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Ενδεικτικές Ερωτήσεις Θεωρίας

Παραδείγματα Assembly Μέρος Γ

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Εισαγωγή στις Αρχές της Επιστήμης των Υπολογιστών

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Αρχιτεκτονική Υπολογιστών

Εισαγωγή στον Προγραμματισμό

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Transcript:

Αρχιτεκτονική Υπολογιστών Ι ΥΠΟΔΕΙΞΕΙΣ ΓΙΑ ΤΗ ΛΥΣΗ ΤΩΝ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 1

Βήμα 1 Βήμα 2 Βήμα 5 Βήμα 6 Βήμα 7 Άσκηση 1 Αν τρέξουμε το πρόγραμμα στο PCSPIM ή xspim θα πρέπει να προστεθεί η ετικέτα main: μετά την ντιρεκτίβα.text. Προσέξτε την επέκταση του αρχείου που θα φιλοξενεί τον κώδικα. Το αρχείο θα πρέπει να περιέχει μόνο τον κώδικα χωρίς καμία μορφοποίηση κειμένου. Αν χρησιμοποιήσετε άλλο επεξεργαστή κειμένου όπως το Word ή το Openoffice/libreOffice writer θα πρέπει να επιλέξετε τη σωστή μορφή αποθήκευσης. Εκτελούμε τον προσομοιωτή από τη γραμμή εντολής ή μέσω μενού και αναζητούμε την επιλογή Open ή Load για να φορτώσουμε το πρόγραμμα μας. Στο QtSPIM πιέζουμε το κουμπί Play για να τρέξουμε το πρόγραμμα που φορτώσαμε. Το περιεχόμενο του καταχωρητή $v0 βρίσκεται στο παράθυρο ή την καρτέλα που εμφανίζει το περιεχόμενο των καταχωρητών (ακέραιας αριθμητικής για το περιβάλλον του QtSPIM). Το περιεχόμενο του $v0 θα πρέπει να είναι 0a από την τελευταία κλήση συνάρτησης. Ο κώδικας εμφανίζεται στην περιοχή με τίτλο text. Πολλές φορές οι εντολές που χρησιμοποιούμε είναι ψευδοεντολές για τη διευκόλυνσή μας. Ο προσομοιωτής αναλαμβάνει την αντικατάστασή τους με τις πραγματικές. Σημειώστε στο τετράδιο τις αρχικές διευθύνσεις για τις εντολές του προγράμματός σας (πρώτη έως τρίτη εντολή). Οι διευθύνσεις βρίσκονται αριστερά μέσα σε αγκύλες. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 2

Βήμα 8 Βήμα 9 Βήμα 10 Βήμα 11 Βήμα 12 Βήμα 13 Παρατηρήστε τις διευθύνσεις αριστερά μέσα στις αγκύλες. Παρατηρήστε και την απόσταση των αρχικών διευθύνσεων κάθε εντολής. Μετρήστε τα byte που αντιπροσωπεύουν κάθε εντολή. Σταθερό μήκος εντολής σημαίνει απλούστερη και γρηγορότερη διαδικασία εκτέλεσης. Κάθε σύμβολο του μηνύματος κωδικοποιείται στη μνήμη βάσει του κώδικα ASCII. Αναζητήστε αρχικά τον κώδικα του χαρακτήρα 'a'. Ο κώδικας Unicode χρησιμοποιεί 16bit για κάθε σύμβολο. Έτσι, απαιτούνται δύο θέσεις μνήμης για την αποθήκευση κάθε συμβόλου. Οι εντολές γράφονται με πεζά γράμματα και δεν επιτρέπεται άλλος συνδυασμός. Αυτό σημαίνει ότι το LI είναι διαφορετικό από το li που αναγνωρίζει ο προσομοιωτής. Βήμα 1 Άσκηση 2 Το πρόγραμμα αυτό διαβάζει ένα αριθμό από το πληκτρολόγιο και στη συνέχεια τον εμφανίζει στην οθόνη. Στην ανάγνωση αλλά και στην εμφάνιση του αριθμού γίνεται προηγουμένως εμφάνιση βοηθητικού μηνύματος. Όπου υπάρχει χρήση της συνάρτησης 4 γίνεται εμφάνιση μηνύματος στην οθόνη και όπου υπάρχουν οι συναρτήσεις 5 και 1 γίνεται η ανάγνωση και εμφάνιση του αριθμού αντίστοιχα. Ακολουθήστε τη σειρά εμφάνισης των εντολών για να δείτε και τη σειρά που εκτελούνται οι λειτουργίες του προγράμματος. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 3

Βήμα 2 Βήμα 5 Βήμα 6 Βήμα 7 Επειδή στη συνέχεια γίνεται εμφάνιση μηνύματος θα χρησιμοποιηθεί ο καταχωρητής $v0 για την κλήση της αντίστοιχης συνάρτησης με αποτέλεσμα να χαθεί το περιεχόμενο του το οποίο είχε καθοριστεί μετά την ανάγνωση του αριθμού από το πληκτρολόγιο. Έτσι, με την εντολή move $t0,$v0 φυλάσσουμε προσωρινά τον ακέραιο αριθμό που διαβάστηκε ώστε να χρησιμοποιηθεί στο σημείο που θα γίνει η εμφάνιση στην οθόνη. Εισάγουμε τον αριθμό και στη συνέχεια τον παρατηρούμε επίσης στο παράθυρο της κοσνόλας. Αν δεν χρησιμοποιηθούν βοηθητικά μηνύματα, το πρόγραμμα θα ξεκινήσει με τη χρήση της συνάρτησης 5 (ανάγνωση αριθμού) τρεις φορές ενώ οι αριθμοί μπορούν να αποθηκευτούν προσωρινά σε καταχωρητές γενικής χρήσης όπως οι $t1, $t2 και $t3. Στη συνέχεια θα γίνει εμφάνιση των αριθμών με χρήση της συνάρτησης 1 επίσης τρεις φορές. Σε περίπτωση εμφάνισης βοηθητικών μηνυμάτων θα πρέπει η συνάρτηση εμφάνισης να χρησιμοποιηθεί τρεις φορές στη διαδικασία της ανάγνωσης και τρεις φορές σε αυτή της εμφάνισης. Η συνάρτηση 4 θα παρεμβάλλεται εναλλάξ στις βασικές συναρτήσεις. Μπορούμε να αποφύγουμε την εμφάνιση των βοηθητικών μηνυμάτων κατά την εισαγωγή των αριθμών αρκεί ο χρήστης να γνωρίζει πως να εισάγει τους αριθμούς. Τρεις φορές η συνάρτηση 4 και τρεις η συνάρτηση 5 ξεκινώντας από τη συνάρτηση 4 και εναλλάξ στη συνέχεια μεταξύ τους. Πληκτρολογήστε απευθείας στο παράθυρο της κονσόλας κάθε αριθμό ξεχωριστά πατώντας στη συνέχεια το πλήκτρο enter. Βήμα 8 Θα χρησιμοποιηθεί η εντολή add, π.χ. add $t0, $t1, $t2 #$t0=$t1+$t2 Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 4

Βήμα 9 Το βοηθητικό μήνυμα (X+Y)= θα εμφανιστεί με τη χρήση της συνάρτησης 4 ενώ θα πρέπει να δηλωθεί στο τμήμα data. Βήμα 10 Ο νέος αυτός κώδικας περιλαμβάνει την εντολή πρόσθεσης και τη χρήση των συναρτήσεων 4 και 1 για την εμφάνιση του βοηθητικού μηνύματος και του αποτελέσματος αντίστοιχα. Βήμα 1 Άσκηση 3 Αν οι αριθμοί μετά την ανάγνωση βρίσκονται στους καταχωρητές $t1, $t2 και $t3 η αφαίρεση θα γίνει σε δύο στάδια. Αρχικά θα υπολογιστεί το πρώτο ζευγάρι (π.χ. $t1, $t2 γράφοντας sub $t0,$t1,$t2) και στη συνέχεια το επόμενο (sub $t0,$t0,$t3). Για να εμφανιστεί το αποτέλεσμα στη μορφή (3-1- 1)=1 θα πρέπει να εμφανιστεί ο συνδυασμός '(' $t1 '-' $t2 '-' $t3 ')=' $t0. Έτσι, θα απαιτηθεί η χρήση της συνάρτησης 4 (4 φορές) και της συνάρτησης 1 (4 φορές) με την κατάλληλη σειρά. Βήμα 2 Θα ξεκινήσετε με τη χρήση της συνάρτησης 4 που θα εμφανίζει το '('. Στη συνέχεια ακολουθεί η συνάρτηση 1 για την εμφάνιση του $t1, η συνάρτηση 4 για την εμφάνιση του '-', κ.ο.κ. Θα απαιτηθεί η δήλωση τριών αλφαριθμητικών. Τα αλφαριθμητικά αυτά θα είναι '(', '-' και ')='. Το αλφαριθμητικό '-' θα χρησιμοποιηθεί απλά δύο φορές. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 5

Βήμα 5 Εισάγετε αρχικά τους τρεις αριθμούς και παρατηρήστε το αποτέλεσμα στην αναμενόμενη μορφή. Όλοι οι υπολογισμοί (Z1 έως Ζ4) θα γίνουν σταδιακά. Για παράδειγμα: Z1=(A/B)+C div $t0,$t1,$t2 add $t0,$t0,$t3 Βήμα 6 Βήμα 7 Θα απαιτηθεί σε κάθε αποτέλεσμα η εμφάνιση βοηθητικού μηνύματος της μορφής Ζ1=... και στη συνέχεια η εμφάνιση του αριθμητικού αποτελέσματος. Προτείνεται για κάθε υπολογισμό που ολοκληρώνεται να γίνεται και εμφάνιση αποτελέσματος πριν τον υπολογισμό του επόμενου. Αν επιχειρήσετε όλους τους υπολογισμούς μαζί θα χρειαστείτε πολλούς καταχωρητές (σε τέτοιες περιπτώσεις καταφεύγουμε στη χρήση της μνήμης). Ελέγξτε τα αριθμητικά αποτελέσματα σε σχέση με τους αριθμούς που έχουν διαβαστεί από το πληκτρολόγιο. Βήμα 8 Μελετήστε το βήμα 1. Βήμα 9 Αυτό σχετίζεται με το συνδυασμό των συναρτήσεων 4 και 1. Βήμα 10 Ελέγξτε τις εκφράσεις των αποτελεσμάτων αν ταιριάζουν με τη ζητούμενη μορφή. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 6

Βήμα 1 Άσκηση 4 Το πρόγραμμα ελέγχει αν το $t1 είναι μεγαλύτερο από 10. Αν η συνθήκη είναι true η ροή εκτέλεσης οδηγείται στο σημείο syneheia με αποτέλεσμα να εμφανιστεί στην οθόνη το μήνυμα message2. Διαφορετικά (περίπτωση false), δεν θα γίνει μετάβαση στο σημείο syneheia με αποτέλεσμα να εκτελεστούν απλά οι εντολές που ακολουθούν με τις οποίες εμφανίζεται στην οθόνη το μήνυμα message1. Μετά την εμφάνιση αυτού του μηνύματος, το πρόγραμμα οδηγείται στον τερματισμό ώστε να μην τυπωθεί και το μήνυμα message2 που ακολουθεί. Βήμα 2 Ανάλογα με το αποτέλεσμα της σύγκρισης του $t1 με τον αριθμό 10. Βήμα 5 IF ($t1>10) printf( message2 ); else printf( message1 ); Για να ανήκει ο αριθμός στο συγκεκριμένο διάστημα θα πρέπει να είναι μεγαλύτερος ή ίσος από το 10 και μικρότερος ή ίσος από το 20 (δύο συνθήκες συνδεδεμένες με τη λογική AND). Αρχικά γίνεται έλεγχος αν ο αριθμός είναι μικρότερος του 10. Αν είναι, τότε είναι εκτός ορίων και δεν έχει νόημα ο υπόλοιπος έλεγχος (η περίπτωση true δηλαδή οδηγεί στον τερματισμό). Αντίθετα, αν είναι false τότε ο αριθμός είναι μεγαλύτερος ή ίσος από το 10 οπότε έχει νόημα και ο δεύτερος έλεγχος. Στο δεύτερο έλεγχο αν ο αριθμός είναι μεγαλύτερος από το 20 οδηγούμαστε πάλι στον τερματισμό, διαφορετικά ανήκει στο διάστημα (έχουμε ήδη περάσει και τον έλεγχο για το αριστερό όριο). Ο έλεγχος μπορεί να ξεκινήσει εξετάζοντας αν ο αριθμός είναι μεγαλύτερος ή ίσος του 10 και στη συνέχεια αν είναι μικρότερος ή ίσος του 20 (αν αληθεύει η πρώτη συνθήκη). Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 7

Βήμα 6 Βήμα 7 Βήμα 8 Βήμα 9 Βήμα 10 Βήμα 11 Βήμα 12 Βήμα 13 1ος τρόπος (Αν αριθμός>=10 και αριθμός <=20) τότε ανήκει 2ος τρόπος (Αν αριθμός>=10) τότε αν (αριθμός<=20) τότε ανήκει Δοκιμάστε διάφορους αριθμούς εντός και εκτός διαστήματος. Να συγκρίνετε τα αποτελέσματα των δύο προσεγγίσεων εισάγοντας τους ίδιους αριθμούς στα δύο προγράμματα. li $t1,1 start: #εντολές που επαναλαμβάνονται add $t1,$t1,1 ble $t1,10,start Αναζητήστε στοιχεία για τη λύση σε προηγούμενο κεφάλαιο του βιβλίου. Αναζητήστε στοιχεία για τη λύση σε προηγούμενο κεφάλαιο του βιβλίου. Θα αλλάξετε μόνο την τιμή ελέγχου στην εντολή ble και στη θέση των εντολών που επαναλαμβάνονται θα τοποθετήσετε τη συνάρτηση 4 που θα εμφανίζει μήνυμα με το όνομά σας. Αναζητήστε στοιχεία για τη λύση σε προηγούμενο κεφάλαιο του βιβλίου. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 8

Βήμα 1 Βήμα 2 Άσκηση 5 Υπολογίζει το άθροισμα των τετραγώνων των αριθμών 1 έως 10. Ο καταχωρητής $t2 φιλοξενεί το τετράγωνο του αριθμού ενώ ο $t0 το άθροισμα με μια πράξη της μορφής Sum=Sum+i 2. Υλοποιήστε αρχικά ένα βρόχο επανάληψης με μετρητή που θα παίρνει τιμές από 1 έως 10. Στη συνέχεια, αρχικοποιήστε πριν το βρόχο μια μεταβλητή αθροίσματος. Εντός του βρόχου υπολογίστε το τετράγωνο του μετρητή και αποθηκεύστε το σε μια άλλη μεταβλητή. Πριν την ενημέρωση και τη συνθήκη ελέγχου του βρόχου ενημερώστε τη μεταβλητή του αθροίσματος με το τετράγωνο που υπολογίσατε προηγουμένως. Αφού υπολογίσετε το άθροισμα Α+Β θα προχωρήσετε σε δύο διαδοχικούς ελέγχους της μορφής: bgtz $t0,meg_miden bltz $t0,mik_miden #iso me miden Αν το άθροισμα (στο $t0) είναι θετικό οδηγούμαστε στην παράγραφο meg_miden όπου γίνεται ο απαιτούμενος υπολογισμός, διαφορετικά το πρόγραμμα προχωρά στο δεύτερο έλεγχο που οδηγεί στην παράγραφο mik_miden αν το άθροισμα είναι αρνητικό. Τέλος, αν και οι δύο συνθήκες είναι false τότε το άθροισμα είναι μηδέν και έτσι εκτελούνται απλά οι εντολές που βρίσκονται από κάτω. Μην ξεχνάτε να οδηγείτε το πρόγραμμα πάντα σε τερματισμό μετά από κάθε υπολογισμό. Δοκιμάστε διάφορες τιμές που παράγουν άθροισμα θετικό, αρνητικό ή μηδέν ώστε να επαληθεύσετε τη λειτουργία του προγράμματος. Τοποθετήστε όπου χρειάζεται εμφάνιση αποτελεσμάτων. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 9

Βήμα 5 Βήμα 6 Θα χρειαστεί να υλοποιήσετε δύο επίπεδα ελέγχου. Στο πρώτο επίπεδο θα ελέγχετε απλά αν το (Α+Β-C) είναι >5, αρνητικό ή =5 και θα οδηγείτε τη ροή εκτέλεσης στο επιθυμητό σημείο από το οποίο θα συνεχίζετε τις υπόλοιπες πράξεις που απαιτούνται. Στη δεύτερη περίπτωση θα συνεχίζετε με διπλό έλεγχο για το διάστημα [6,10] εφόσον σας έχει οδηγήσει εκεί η συνθήκη που ελέγχει αν το (Α+Β-C) είναι > 5. Μετά και το διπλό έλεγχο του διαστήματος μπορείτε να προχωρήσετε και στο ζητούμενο υπολογισμό. Κάντε δοκιμές με πολλούς αριθμούς εισόδου και επαληθεύστε τα αριθμητικά αποτελέσματα των αντίστοιχων υπολογισμών που πραγματοποιούνται. Άσκηση 6 Βήμα 1 Μετά τον υπολογισμό του Δ υλοποιήστε ελέγχους όπως στο βήμα 3 της άσκησης 5. Βήμα 2 Για να υπολογίσετε το x mod 2 (ακέραιο υπόλοιπο) όπου το x υλοποιείται με τον καταχωρητή $t1, θα γράψετε li $t2,2 div $t1,$t2 mfhi $t3 Έτσι, ο καταχωρητής $t3 θα περιέχει το x mod 2. Η συνάρτηση θα υπολογιστεί βήμα προς βήμα. Πρώτα ο αριθμητής, στη συνέχεια ο παρανομαστής και τέλος το ζητούμενο πηλίκο. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 10

π.χ. f(x)=(x 2 +1)/(X+1) με X=$t1 mul $t2,$t1,$t1 #X 2 add $t2,$t2,1 # X 2 +1 add $t1,$t1,1 #X+1 div $t0,$t2,$t1 #(X 2 +1)/(X+1) Όταν ένας αριθμός μηδενίζει τον παρονομαστή τότε αποτελεί ρίζα του. Επειδή όμως δεν είναι πάντα δυνατό να υπολογίζονται οι ρίζες θα εφαρμόσουμε μια προγραμματιστική τεχνική. Όταν θα εισάγεται ένας αριθμός θα γίνεται υπολογισμός μόνο του παρανομαστή. Αν το αποτέλεσμα είναι μηδέν τότε το πρόγραμμα θα ζητά εκ νέου ένα αριθμό. Αυτό σημαίνει ότι θα χρειαστεί η υλοποίηση ενός βρόχου που θα τερματίζεται όταν ο υπολογισμός θα δίνει αποτέλεσμα διάφορο από το μηδέν. Η συνέχεια των υπολογισμών θα είναι απλή αφού θα έχουμε ήδη υπολογίσει τον παρανομαστή. Βήμα 1 Άσκηση 7 Θα ξεκινήσετε διαιρέσεις με το δύο και θα σημειώνετε το πηλίκο και το υπόλοιπο. Το πηλίκο θα διαιρείται κάθε φορά με το δύο και θα παίρνουμε το υπόλοιπο. Όταν προκύψει πηλίκο μηδέν οι διαιρέσεις σταματούν. Το τελευταίο υπόλοιπο που θα προκύψει (με πηλίκο μηδέν) αποτελεί το περισσότερο σημαντικό ψηφίο του αριθμού (ο τελικός δυαδικός αριθμός προκύπτει διαβάζοντας τα υπόλοιπα με την αντίστροφη σειρά) Βήμα 2 Διαβάστε την υπόδειξη του βήματος 1. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 11

Διάβασε Χ (ο αριθμός που θα μετατραπεί) Επανέλαβε Π=πηλίκο (Χ/2) Υ=υπόλοιπο (Χ/2) Εμφάνισε Υ Χ=Π Όσο Π<>0 Βήμα 5 Βήμα 6 Χρησιμοποιήστε την εντολή div με δύο ορίσματα και στη συνέχεια τις εντολές mfhi και mflo για να αντλήσετε το υπόλοιπο και το πηλίκο αντίστοιχα. Δοκιμάστε διάφορους αριθμούς ως είσοδο. Παρατηρήστε ότι το σχήμα έχει πέντε γραμμές και σε κάθε γραμμή εμφανίζονται αστερίσκοι που το πλήθος τους αντιστοιχεί στον αριθμό της γραμμής. Έτσι, θα έχουμε ένα εξωτερικό βρόχο που θα μετρά από Α=1 έως Ν, όπου Ν το συνολικό πλήθος των γραμμών. Εντός του βρόχου θα υπάρχει και ένας δεύτερος που θα εμφανίζει Α το πλήθος αστερίσκους ενώ κάθε φορά που θα τερματίζεται θα γίνεται αλλαγή γραμμής. Βήμα 7 Κάντε δοκιμές για διάφορες τιμές του Ν. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 12

Βήμα 1 2 Άσκηση 8 67 21 98 45 120 233 4 Βήμα 2 Βήμα 5 Θα πρέπει να υπολογίσετε πόσα bit απαιτούνται για την αναπαράσταση κάθε αριθμού. Τα bit αυτά χωρίζονται σε οκτάδες για να σχηματίσουν byte. Για τον αριθμό 1356 απαιτούνται Ν bit ώστε να ισχύει ότι 2 Ν >=1356. Εναλλακτικά μπορείτε να χρησιμοποιήσετε το λογάριθμο. Μπορούν να φιλοξενηθούν αριθμοί των 16bit. Άρα το εύρος θα είναι [0,2 16-1]. Κάθε καταχωρητής είναι 32bit, άρα τέσσερις θα είναι 32x4 bit. Για κάθε καταχωρητή απαιτούνται τέσσερις θέσεις μνήμης. Ο πρώτος καταχωρητής ξεκινά από τη διεύθυνση pina+0 ή F000+0. Ο δεύτερος ξεκινά από την pina+4 ή F000+4, ο τρίτος από την pina+8 ή F000+8, κ.ο.κ. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 13

Βήμα 6 Βήμα 7 Βήμα 8 Βήμα 9 Ο λογικός πίνακας θα φιλοξενεί ένα καταχωρητή ανά γραμμή ενώ στη μνήμη θα φιλοξενείται ένας καταχωρητής ανά τέσσερις φυσικές θέσεις. Ο πρώτος θα βρίσκεται στις διευθύνσεις AFF0+0 (K12), AFF0+1 (K11), AFF0+2 (K10), κ.ο.κ. Πρώτη εντολή: li $t1,0 #αρχικοποίηση απόκλισης πίνακα Δεύτερη εντολή: sw $t0,pina($t1) #αποθήκευση Τρίτη εντολή: add $t1,$t1,4 #ενημέρωση μετρητή απόκλισης Το πρόγραμμα θα είναι το ίδιο με το προηγούμενο αλλά αντί της εντολής sw θα μπει η lw (ανάγνωση) και επιπλέον θα καταργηθεί η ανάγνωση αριθμού από το πληκτρολόγιο και μετά την εντολή lw θα χρησιμοποιηθεί η συνάρτηση 1 ώστε να εμφανίζεται στην οθόνη ο αριθμός που διαβάστηκε. Βήμα 10 Ενοποιήστε σωστά τα προγράμματα των βημάτων 8 και 9. Βήμα 11 Βήμα 12 Βήμα 13 Θα πρέπει να αντικατασταθεί η εντολή sw από την sb (αποθήκευση ενός byte) και να ρυθμιστεί κατάλληλα το βήμα του μετρητή απόκλισης. Κάθε μια από αυτές τις εντολές αντλεί διαφορετική ποσότητα πληροφορίας από τον επιλεγμένο καταχωρητή με αποτέλεσμα να καταλαμβάνεται και διαφορετικό πλήθος θέσεων μνήμης. Θα δουλέψουμε όπως και στην παραμετρική εμφάνιση που είδαμε σε προηγούμενη άσκηση. Δηλαδή θα διασπάσουμε το μήνυμα σε επιμέρους τμήματα. Σε κάθε γραμμή θα εμφανίζεται το μήνυμα Α[, το περιεχόμενο του μετρητή και το μήνυμα ]=. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 14

Βήμα 1 Βήμα 2 Βήμα 5 Βήμα 6 Άσκηση 9 Θα χρησιμοποιήσουμε την εντολή mul με δεύτερο και τρίτο όρισμα τον ίδιο καταχωρητή. Αφού γεμίσει ο πίνακας, θα τον σαρώσουμε (αντίστοιχος βρόχος με αυτόν του γεμίσματος) και για κάθε αριθμό που θα διαβάζουμε θα ελέγχουμε αν είναι θετικός. Η αντίστοιχη συνθήκη θα οδηγεί σε μία άλλη παράγραφο (μέσω ετικέτας) στην οποία θα υπολογίζεται το τετράγωνο και με μια εντολή sw θα αποθηκεύεται το αποτέλεσμα στην ίδια θέση. Με εντολή άλματος θα επιστρέφουμε στο βρόχο που σαρώνει τον πίνακα ώστε να διαβάζεται ο επόμενος αριθμός. Πριν το βρόχο σάρωσης του πίνακα θα γίνει αρχικοποίηση καταχωρητή ο οποίος θα παίξει το ρόλο της μεταβλητής του αθροίσματος. Μετά το διάβασμα του αριθμού από τον πίνακα θα ακολουθεί εντολή add για την ενημέρωση του καταχωρητή που θα φιλοξενεί το άθροισμα. Θα πρέπει να διαιρέσουμε με το 2 και να ελέγξουμε την τιμή του υπολοίπου. Αν είναι μηδέν σημαίνει ότι διαιρείται ακριβώς, άρα είναι άρτιος. Αν το υπόλοιπο είναι ένα τότε είναι περιττός. Προσέξτε να εισάγετε αριθμούς μεγαλύτερους ή ίσους από το 2. Θα χρησιμοποιήσετε τη μέθοδο του βήματος 4 και θα οδηγείτε το πρόγραμμα σε διαφορετική παράγραφο ανάλογα με την τιμή του υπολοίπου. Σε κάθε παράγραφο θα φροντίσετε ώστε να ενημερώνεται κατάλληλος μετρητής και να πραγματοποιείται επιστροφή στον αρχικό βρόχο. Μελετήστε το βήμα 5 και προσθέστε τον έλεγχο και τον υπολογισμό Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 15

των μηδενικών στοιχείων όταν ισχύει ότι το πλήθος των άρτιων αριθμών είναι μεγαλύτερο από το άθροισμα των περιττών αριθμών. Βήμα 7 Βήμα 8 Βήμα 9 Βήμα 1 Βήμα 2 Θα πρέπει να βρούμε την απόκλιση που αντιστοιχεί στην τελευταία αποθήκευση που έγινε (πρώτο byte της τελευταίας τετράδας που αποθηκεύτηκε). Ο μετρητής απόκλισης σε συνδυασμό με τη συμβολική διεύθυνση του πίνακα θα δείχνει την αρχή της τελευταίας τετράδας. Ο μετρητής αυτός στη συνέχεια θα μειώνεται κατά 4 μέχρι το μηδέν που είναι η απόκλιση για την πρώτη τετράδα. Μελετήστε το βήμα 7 για την αντίστροφη ανάγνωση του πίνακα. Μελετήστε την τιμή του μετρητή απόκλισης όταν γίνεται το γέμισμα του πίνακα από τα ψηφία που προκύπτουν μετά από κάθε διαίρεση. Άσκηση 10 Θυμηθείτε πως γίνεται η ανταλλαγή περιεχομένων δύο μεταβλητών. Δεν χρειάζεται να οριστεί τρίτος πίνακας. Απλά θα χρησιμοποιηθεί ένας επιπλέον καταχωρητής στον οποίο θα κάνουμε προσωρινή αποθήκευση του αριθμού που μόλις διαβάστηκε από τον πίνακα. Θα πρέπει να γίνει εμφάνιση περιεχομένων των δύο πινάκων μετά το γέμισμα και μετά την ανταλλαγή. Ανατρέξτε σε προηγούμενη άσκηση για να μελετήσετε ξανά το γέμισμα και την εμφάνιση πινάκων. Το βασικό στοιχείο αυτής της άσκησης είναι να βρεθούν οι οριακές τιμές που θα χρησιμοποιηθούν για τους μετρητές απόκλισης. Ο ένας μετρητής θα ξεκινά από την αρχή του πίνακα και ο άλλος από τη μέση. Το βήμα των μετρητών παραμένει τέσσερα εφόσον διαχειριζόμαστε πίνακα που φιλοξενεί τιμές 32bit. Θα χρειαστεί επιπλέον και ένας καταχωρητής για προσωρινή αποθήκευση κατά την Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 16

ανταλλαγή των περιεχομένων. Βήμα 5 Βήμα 6 Βήμα 7 Αφού γεμίσουμε τον πίνακα με το γνωστό αλγόριθμο θα προχωρήσουμε στη σάρωση του (διαδικασία ανάγνωσης). Κάθε αριθμός που θα διαβάζουμε από τον πίνακα θα αποτελεί την αρχική τιμή μετρητή σε ένα εσωτερικό βρόχο που θα εμφανίζει αστερίσκους. Θα χρειαστούμε συνολικά δύο βρόχους. Ένα εξωτερικό και ένα εσωτερικό. Ο εξωτερικός θα καλύπτει τις τιμές του Χ (-10 έως 10). Στο εσωτερικό του βρόχου θα γίνεται υπολογισμός του τετραγώνου (εντολή mul) και στη συνέχεια θα τρέχει ένας βρόχος που θα εμφανίζει τόσους αστερίσκους όση και η τιμή του τετραγώνου. Μετά τον τερματισμό του εσωτερικού βρόχου θα γίνεται αλλαγή γραμμής. Θα γίνει τροποποίηση στο πρόγραμμα του βήματος 5. Αφού έχει υπολογιστεί το τετράγωνο θα ακολουθεί ένας βρόχος που θα εμφανίζει Χ 2-1 κενά και μετά τον τερματισμό του θα εμφανίζεται ένας αστερίσκος με μια χρήση της συνάρτησης 4. Στη συνέχεια θα γίνεται αλλαγή γραμμής και θα συνεχίζει κανονικά ο εξωτερικός βρόχος. Αρχικά θα φτιάξουμε δύο βρόχους (εξωτερικός, εσωτερικός) που θα εκτείνονται από το 1 έως το 5. Έτσι, χρησιμοποιώντας τη συνάρτηση 5 θα διαβάζουμε συνολικά 25 αριθμούς (όσες και οι θέσεις του δισδιάστατου πίνακα). Θα μπορούσε να τοποθετηθεί και βοηθητικό μήνυμα κατά την ανάγνωση ώστε να γνωρίζουμε ποιο στοιχείο εισάγουμε (π.χ. Α[1,2]= ). Η ουσία είναι ότι ενώ ο χρήστης πιστεύει ότι εισάγει αριθμούς ανά γραμμή και στήλη, στην πραγματικότητα εισάγει συνεχόμενους αριθμούς σε ένα μονοδιάστατο πίνακα (τη φυσική μνήμη). Άρα για κάθε αριθμό που θα εισάγει θα καταλαμβάνεται στη μνήμη η επόμενη τετράδα θέσεων όπως ακριβώς κάναμε και στο γέμισμα του πίνακα σε προηγούμενα βήματα. Αυτό σημαίνει ότι ως προς το μετρητή απόκλισης δεν υπάρχει αλλαγή. Το ζήτημα είναι πως θα εμφανίζουμε στην οθόνη το σωστό στοιχείο όταν ο χρήστης δίνει συγκεκριμένη γραμμή και στήλη. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 17

Βήμα 8 Τα στοιχεία της διαγωνίου αντιστοιχούν στα στοιχεία i,i. Σχεδιάστε ένα πίνακα δύο διαστάσεων και συσχετίστε τον με τις αντίστοιχες θέσεις που καταλαμβάνει στη φυσική μνήμη. Βήμα 9 Αποτελεί την υλοποίηση του βήματος 8. Βήμα 1 Βήμα 2 Βήμα 5 Άσκηση 11 Ο κώδικας υλοποιεί ένα μενού επιλογών. Η επιλογή του χρήστη μπορεί να είναι από 1 έως 3 ή 0 για έξοδο. Αν η επιλογή είναι στο διάστημα 1 έως 3 τότε γίνεται κλήση του αντίστοιχου υποπρογράμματος. Το υποπρόγραμμα diavase_epilogi διαβάζει έναν ακέραιο από το πληκτρολόγιο που αποτελεί την επιλογή του χρήστη. Το πρόγραμμα θα τερματίζεται μόνο αν ο χρήστης επιλέξει μηδέν. Για τις επιλογές 1 έως 3 θα εμφανίζεται ένα βοηθητικό μήνυμα από τα αντίστοιχα υποπρογράμματα για να επιβεβαιώσουμε την επιλογή του χρήστη. Αν δοθεί μη αποδεκτή τιμή, θα γίνεται ξανά ανάγνωση επιλογής. Η τροποποίηση θα γίνει προσθέτοντας ένα υποπρόγραμμα print_menu. Ανάλογα με την επιλογή του χρήστη θα εκτελείται και η αντίστοιχη αριθμητική πράξη με την κατάλληλη εμφάνιση του αποτελέσματος. Χρησιμοποιήστε τον ίδιο καταχωρητή για την αποθήκευση του αποτελέσματος ώστε η εμφάνιση του να γίνεται με μια αναγραφή της συνάρτησης 1 (για όλες τις πράξεις). Ο δείκτης σωρού υλοποιείται με το μετρητή της απόκλισης ο οποίος Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 18

θα αλλάζει σύμφωνα με την ανάκτηση ή αποθήκευση δεδομένων στον πίνακα (σωρός) ώστε να εμφανίζεται κάθε φορά το αντίστοιχο περιεχόμενο. Βήμα 1 Βήμα 2 Άσκηση 12 Συνδυάστε τα προγράμματα που αναπτύξατε τόσο για τη διαχείριση των πινάκων όσο και για τη δημιουργία μενού επιλογών. Ο αλγόριθμος θα περιλαμβάνει ένα βρόχο μέσω του οποίου θα γίνεται η σάρωση του πίνακα. Αρχικά και πριν τη σάρωση του πίνακα υποθέτουμε ότι ο μέγιστος ή ελάχιστος αριθμός βρίσκεται στην πρώτη θέση. Εντός του βρόχου συγκρίνουμε την τιμή που μόλις διαβάστηκε με την τιμή που υποτίθεται ότι είναι η μέγιστη ή η ελάχιστη. Αν βρεθεί νέα μέγιστη τιμή για παράδειγμα, τότε αντικαθιστούμε την παλιά μέγιστη τιμή με τη νέα. Έτσι, μετά τη σάρωση του πίνακα θα έχει εντοπιστεί η μέγιστη ή η ελάχιστη τιμή. Συνδυάστε τα προηγούμενα βήματα. Συνδυάστε βήματα από αυτή και τις προηγούμενες ασκήσεις. Άσκηση 13 Βήμα 1 Μελετήστε τα χαρακτηριστικά κλήσης της συνάρτησης 8. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 19

Βήμα 2 Βήμα 5 Βήμα 6 Χρησιμοποιήστε τη συνάρτηση 4 όπως τη γνωρίζετε και τοποθετήστε ως δεύτερο όρισμα στην εντολή la την ετικέτα που αντιστοιχεί στην αρχική διεύθυνση της περιοχής που φιλοξενεί το αλφαριθμητικό (ετικέτα alpha). Βάσει του πίνακα ASCII θα χρησιμοποιηθεί ένα byte ανά χαρακτήρα (ας μην εξετάσουμε αν πρόκειται για κώδικα ASCII 7 ή 8 bit). Για τον υπολογιστή όλα τα σύμβολα είναι αριθμοί. Αυτό σημαίνει ότι μπορούμε να κάνουμε πράξεις με αυτά. Έτσι, η αφαίρεση 'a'-32 έχει νόημα αφού το σύμβολο 'a' αντιστοιχεί στον αριθμό 97 του πίνακα ASCII. Η αφαίρεση μπορεί να γραφεί και 'a'-32=97-32=65. Αν τώρα επιχειρήσουμε να εμφανίσουμε στην οθόνη το σύμβολο που αντιστοιχεί στον αριθμό 65 θα δούμε το 'A'. Χρησιμοποιήστε την ίδια τεχνική για όλες τις ζητούμενες μετατροπές. Χρησιμοποιήστε την εντολή lb για να διαβάζετε τη λέξη χαρακτήρα προς χαρακτήρα. Σε κάθε χαρακτήρα θα προσθέτουμε τον αριθμό 1 (π.χ. 'A'+1='B'). Βήμα 7 Σε κάθε κρυπτογραφημένο χαρακτήρα θα αφαιρούμε τον αριθμό 1 (π.χ. 'B'-1='A'). Βήμα 8 Βήμα 9 Το πρόγραμμα θα συγκρίνει το byte κάθε χαρακτήρα και αν είναι ίσο με 97 (άρα πρόκειται για το χαρακτήρα 'a'), θα αυξάνει την τιμή ενός μετρητή. Μελετήστε παλαιότερη άσκηση. Δρ. Παναγιώτης Παπάζογλου / Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι / Σελίδα 20