Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΝΔΕΙΚΤΙΚΕΣ ΕΡΩΤΗΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ No11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http:// arch.icte.uowm.gr/mdasyg
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα του Πανεπιστημίου Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2
Περιεχόμενα 1. Σκοπός της άσκησης... 4 2. Ενδεικτικές ερωτήσεις... 4 3
1. Σκοπός της άσκησης Σκοπός της ενότητας είναι να παρουσιάσει ορισμένες ενδεικτικές ερωτήσεις εξέτασης για το Εργαστήριο Νο 11. 2. Ενδεικτικές ερωτήσεις 1) Υπάρχει κάποιο πρόβλημα στο παρακάτω κομμάτι κώδικα; mov di,sp mov bx,[di+2] mov ax,[bx] ;πάρε την τρέχουσα τιμή του SP για διευθυνσιοδότηση ;μετέφερε τη διεύθυνση του pass by reference που ;κάνε de-reference και πάρε την πρώτη τιμή 2) Αν η παραπάνω εντολή έχει πρόβλημα, πως μπορεί να διορθωθεί χωρίς να χρησιμοποιηθεί ο καταχωρητής bp. 3) Υπάρχει κάποιο πρόβλημα στο παρακάτω κομμάτι κώδικα; mov bx,[sp+2] mov ax,[bx] ;μετέφερε τη διεύθυνση του pass by reference που ;κάνε de-reference και πάρε την πρώτη τιμή 4) Υπάρχει κάποιο πρόβλημα στο παρακάτω κομμάτι κώδικα; lea dx,pinakas push dx call find_max.. mov bx, [sp+2] mov ax, [bx] ;βρες τη διεύθυνση του πίνακα ;τοποθέτησε τη διεύθυνση στο σωρό ;κλήση της συνάρτηση, η παράμετρος ;πάρε την παράμετρο από το σωρό ;πάρε την τιμή αφού κάνεις dereference 4
5) Συμπληρώστε την τιμή του offset XXXXX στη συνάρτηση. lea dx,pinakas push dx call find_max.. push bp push bx mov bx, [bp XXXXX ] ;βρες τη διεύθυνση του πίνακα ;τοποθέτησε τη διεύθυνση στο σωρό ;κλήση της συνάρτηση, η παράμετρος ;πάρε την παράμετρο από το σωρό 6) Συμπληρώστε την τιμή του offset XXXXX στη συνάρτηση.... mov [bp-2],ax POP BX POP BP RET call find_max mov bx,[bp XXXXX] ;τοποθέτησε το αποτέλεσμα στο σωρό ;κλήση της συνάρτηση, το αποτέλεσμα ;πάρε το αποτέλεσμα από το σωρό 7) Στο data segment υπάρχουν ορισμένες οι τιμές data segment n1 db 10 n2 dw 5 data ends Πως θα δώσουμε ως παράμετρο τις τιμές n1 και n2 στον καθένα από τους παρακάτω τρόπους: (α) πέρασμα παραμέτρων με καταχωρητές με τεχνική pass-by-value (β) πέρασμα παραμέτρων με διευθύνσεις μνήμης δηλωμένες στο data segment με τεχνική pass-by-value (γ) πέρασμα παραμέτρων με σωρό και τεχνική pass-by-value 5
(δ) πέρασμα παραμέτρων με την τεχνική pass-by-reference. Οι διευθύνσεις μνήμης θα μπουν σε καταχωρητές. (ε) πέρασμα παραμέτρων με την τεχνική pass-by-reference. Οι διευθύνσεις μνήμης θα μπουν στο σωρό. 8) Η παρακάτω συνάρτηση δέχεται μια παράμετρο. Με ποιο τρόπο μεταφέρεται αυτή η παράμετρος; Επιλέξτε από τα παρακάτω: καταχωρητές/σωρό/τμήμα_δεδομένων pass-by-value/pass-by-reference push bp push bx mov bx, [bp+8] 9) Η δεύτερη γραμμή στο παρακάτω κομμάτι κώδικα που θα εκτυπώσει το pixel ως προς την πρώτη γραμμή; MOV ES:[SI],DI MOV ES:[SI+320],DI 10) Να υπολογιστεί το νούμερο XXXX ώστε να εκτυπωθεί ένα pixel ΔΕΞΙΑ του pixel που έχει εκτυπωθεί στην πρώτη εντολή. MOV ES:[SI],DI MOV ES:[SI XXXXX ],DI 11) Στην παρακάτω συνάρτηση η τιμή βρίσκεται στο σωρό ως pass-byreference. Να συμπληρωθεί το κενό στην τελευταία εντολή. push bp push bx mov bx, [bp+8] mov ax,... 6