ΗΜΥ 213 Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week3 Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Ορίσματα στο QtSpim (set parameters in QtSpim) Τα ορίσματα στο QtSPIM μπορούν να δοθούν από την επιλογή Run Parameters που βρίσκεται στο μενού simulator στον προσομοιωτή QtSpim. Το αποτέλεσμα της πιο πάνω ενέργειας είναι η αλλαγή στην τιμή του καταχωρητή $a0, ο οποίος θα πάρει το πλήθος των ορισμάτων που δώσαμε (διαχωρισμένα μεταξύ τους με κενό). Μέσω του καταχωρητή $a1, μπορούμε να βρούμε τη διεύθυνση στην οποία έχει αποθηκευτεί το κάθε όρισμα (ως 32-μπιτος αριθμός) $a0 = 2έχει τοπλήθος ορισμάτων $a1 = δείκτης μνήμης,έχει τη διεύθυνση όπου αποθηκεύτηκε το 1 ο όρισμα (όνομα του αρχείου) 4($a1)=δείκτης μνήμηςέχει τη διεύθυνση όπου αποθηκεύτηκε o ascii κώδικας του 2 ου ορίσματος (1 ο όρισμα που δόθηκε στο Run Parameters) π.χ. για 5, αποθηκεύεται 0x35 Πως μπορούμε να διαβάσουμε την τιμή που δόθηκε από το Run parameters ως αριθμό(και όχι ως κώδικα ascii); 2 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Κώδικας ascii 3 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Παράδειγμα week3.s Το πρόγραμμα θα τρέξει μόνο αν ο χρήστης έχει δηλώσει έναν αριθμό στο Run Parametersτου simulator. Ο αριθμός αυτός καθορίζει πόσα γινόμενα (Π.Μ.xβαθμός) θα υπολογιστούν και τυπώνει απλά το τελευταίο γινόμενο στην οθόνη. Οι πολλαπλασιαστέοι έχουν δηλωθεί στο πεδίο.dataτου κώδικα και βρίσκονται αποθηκευμένοι στη μνήμη σε διευθύνσεις που μπορούν να εξευρεθούν χρησιμοποιώντας τις ετικέτες credits και grades Τα γινόμενα αυτά υπολογίζονται ως: credits(i) x grades(i) Το κάθε γινόμενο θα αποθηκεύεται σε θέσεις που έχουν δεσμευθεί στη μνήμη με όνομα moria. Π.χ. Αν ο χρήστης εισαγάγει τον αριθμό 3, το πρόγραμμα θα υπολογίσει ξεχωριστά 3 γινόμενα μεταξύ credits(i)και grades(i)και θα εκτυπώσει μόνο το αποτέλεσμα του τελευταίου πολλαπλασιασμού. 4 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Απαντήστε στα πιο κάτω ερωτήματα με βάση τον κώδικα week3.s 1. Ποια η διαφορά μεταξύ.byte,.word και.space; 2. Γιατί η μεταβλητή (μονοδιάστατος πίνακας) moria έχει δηλωθεί ως.wordκαι όχι ως.byte; 3. Γιατί ο μετρητής ($t0)αρχικοποιήθηκε στο 0 και όχι στο 1; 4. Με ποιο τρόπο διευθυνσιοδότησης μπορούμε να αποθηκεύουμε το κάθε γινόμενο στη μνήμη; 5. Πως μπορεί να υπολογιστεί ο μέσος όρος από τα πιο πάνω γινόμενα; 6. Τι θα συμβεί αν ο χρήστης δώσει μεγαλύτερο αριθμό από τον αριθμό των μαθημάτων που είναι καταχωρημένα στο πρόγραμμα(αν δεν υπήρχε ο έλεγχος); Ας δούμε τον κώδικα αναλυτικά! 5 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Βελτίωση του κώδικα (μετονομάστε σε week3a.s) Υλοποιήστε τις αλλαγές που απαιτούνται (μέσα στον ήδη υλοποιημένο βρόχο) έτσι ώστε το κάθε υπολογισμένο γινόμενο να αποθηκεύεται στη σωστή θέση που έχει κρατηθεί για αυτό τον σκοπό στη μνήμη (moria). βοήθεια:ο δείκτης στη μνήμη θα πρέπει να αυξάνεται κατά 4 μετά από κάθε εντολή store(μιας και είναι τύπου:.word) 6 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Βελτίωση του κώδικα (μετονομάστε σε week3b.s) Υλοποιήστε τον υπολογισμό του μέσου όρου σε ξεχωριστό βρόχο (φορτώνοντας και πάλι τα δεδομένα που χρειάζεστε από την μνήμη). Το τελικό αποτέλεσμα (ο Μέσος Όρος) θα πρέπει να αποθηκευτεί και στη θέση μνήμης που δεσμεύσαμε Εκτυπώστε αναλυτικά το αποτέλεσμα στην οθόνη. βοήθεια:ο μέσος όρος δίνεται από τον λόγο του αθροίσματος των μορίων προς το άθροισμα των πιστωτικών μονάδων. (εδώ δεν λαμβάνεται υπόψη το αν έχετε πάρει προβιβάσιμο βαθμό στο μάθημα!) 7 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Πρόσθετα Ερωτήματα Πως μπορούμε να δούμε σε πόσα μαθήματα ο φοιτητής πήρε άρτια ή περιττή βαθμολογία; Βρέστε την διεύθυνση μνήμης που περιέχει βαθμολογία μαθήματος 70! Βρέστε εάν στη λίστα μαθημάτων υπάρχει καταχωρημένο το μάθημα ΗΜΥ213 και αν υπάρχει, εκτυπώστε τη σειρά του στη λίστα, τις Π.Μ και τον βαθμό που πήρατε στο μάθημα. 8 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Μαθησιακοί Στόχοι Εργαστηρίου 3 Εξοικείωση με το QtSpim Χρήση εντολών assembly για δημιουργία μετρητών, επαναλήψεων, ελέγχου και αριθμητικών πράξεων Χρήση εντολών φόρτωσης και αποθήκευσης δεδομένων από/προς τη μνήμη με διάφορους τρόπους διευθυνσιοδότησης Χρήση της επιλογής Run Parametersγια είσοδο στοιχείων 9 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.