ΗΜΥ 213 Εργαστήριο Οργάνωσης Η.Y.και Μικροεπεξεργαστών Εργαστήριο 2 Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Χρήση Εντολών Αssembly για λύση βασικών προβλημάτων 1. Πως επιτυγχάνεται η διαίρεση και ο πολλαπλασιασμός με δυνάμεις του 2 (χωρίς τη χρήση των εντολών mulκαι div) 2. Πως επιτυγχάνεται ο έλεγχος συγκεκριμένου μπιτ σε κάποιο καταχωρητή; 3. Με ποιο τρόπο μπορεί: (α) να μηδενιστεί (clear) (β)να τεθεί σε λογικό 1 (set) συγκεκριμένο μπιτ σε κάποιο καταχωρητή; 4. Με ποια εντολή μπορεί να αλλάξει η τιμή (invert) συγκεκριμένου μπιτ σε κάποιο καταχωρητή; 5. Πως υλοποιείται ένας μετρητής στην Assembly; 2
Παράδειγμα week2.s Αυτό το αρχείο ζητά από τον χρήστη να δώσει ένα αριθμό από την κονσόλα. Αυτός ο αριθμός ορίζει και το πόσα γινόμενα θα προστεθούν. Τα γινόμενα είναι πάντοτε τα 1x2, 2x3, 3x4, 9x10 Με επιλογή του 3 λοιπόν από τον χρήστη, το πρόγραμμα θα υπολογίσει το άθροισμα των 3 πρώτων γινομένων [1x2+2x3+3x4]και θα τυπώσει το αποτέλεσμα [20]στην οθόνη. 3
Βρέστε στον κώδικα τα πιο κάτω: 1. Ποιος είναι ο μέγιστος αριθμός που μπορεί να δεχτεί το πρόγραμμα από τον χρήστη και να δώσει σωστό αποτέλεσμα; 2. Ποιος καταχωρητής χρησιμοποιείται στο πρόγραμμα ως μετρητής; 3. Ποια η διαφορά μεταξύ των εντολών: b loop1καιbgt $t1, $t2 loop1 A60, A62 Ας δούμε την εκτέλεση αυτού του κώδικα αναλυτικά! 4
Βελτίωση του κώδικα (μετονομάστε το week2 σε week2a) 1.Υπολογίστε ποιος είναι ο μέγιστος αριθμός για τον οποίο ο κώδικας δίνει το σωστό αποτέλεσμα. Στην συνέχεια τροποποιήστε τον κώδικα έτσι ώστε να δέχεται από τον χρήστη μόνοτους αριθμούς για τους οποίους δίνει το σωστό αποτέλεσμα. βοήθεια:τρέξτε τον κώδικα διαδοχικά δίνοντας ως είσοδο το 1858 και το 1862και παρατηρήστε τα μηνύματα στην οθόνη (επιλέγοντας ΟΚ σε κάθε νέο παράθυρο) 5
Βελτίωση του κώδικα (μετονομάστε το week2a σε week2b) 2.Τροποποιήστε το πρόγραμμα έτσι ώστε μετά από την εμφάνιση του αποτελέσματος να δίνεται η δυνατότητα στον χρήστη για υπολογισμό νέου αθροίσματος γινομένων ή έξοδο από το πρόγραμμα. βοήθεια:για έξοδο από το πρόγραμμα μπορείτε να χρησιμοποιήσετε κάποιον συγκεκριμένο αριθμό που δεν επηρεάζει τη λειτουργία του αρχικού κώδικα. 6
Βελτίωση του κώδικα (μετονομάστε το week2b σε week2c) 3.Τροποποιήστε το πρόγραμμα έτσι ώστενα ελέγχει αν το αποτέλεσμα (άθροισμα γινομένων) είναι πολλαπλάσιο του 4. Θα πρέπει να τυπώνεται κατάλληλο μήνυμα στην οθόνη που να λέει αν είναι ή όχι πολλαπλάσιο του 4. 7
Μαθησιακοί Στόχοι Εργαστηρίου 2 1. Εξοικείωση με το QtSPIM 2. Χρήση εντολών assembly για δημιουργία μετρητών, επαναλήψεων, ελέγχου και αριθμητικών πράξεων (πρόσθεσης/αφαίρεσης, πολλαπλασιασμού/ διαίρεσης) 3. Χρήση εντολών assembly(shift, or, and, xor) 4. Χρήση branch(conditional unconditional) 8
week2a Υπολογίστε ποιος είναι ο μέγιστος αριθμός για τον οποίο ο κώδικας δίνει το σωστό αποτέλεσμα. Στην συνέχεια τροποποιήστε τον κώδικα έτσι ώστε να δέχεται από τον χρήστη μόνοτους αριθμούς για τους οποίους δίνει το σωστό αποτέλεσμα. week2b Βελτιώσεις στον κώδικα week2 Τροποποιήστε το πρόγραμμα έτσι ώστε μετά από την εμφάνιση του αποτελέσματος να δίνεται η δυνατότητα στον χρήστη για υπολογισμό νέου αθροίσματος γινομένων ή έξοδο από το πρόγραμμα. week2c Τροποποιήστε το πρόγραμμα έτσι ώστενα ελέγχει αν το αποτέλεσμα (άθροισμα γινομένων) είναι πολλαπλάσιο του 4 και να τυπώνεται κατάλληλο μήνυμα στην οθόνη 9