Οδηγίες χρήσης του προσοµοιωτή emu8086 (Για τους φοιτητές του εργαστηρίου της Αρχιτεκτονικής Υπολογιστών). Αστέριος Τούτιος, Νοέµβριος 2004 Ξεκινώντας το πρόγραµµα-προσοµοιωτή emu8086 βλέπουµε την οθόνη: στην οποία απλώς πατάµε το πλήκτρο Continue Οδηγούµαστε έτσι στο εξής παράθυρο το οποίο είναι ουσιαστικό ο editor του προσοµοιωτή στον οποίο θα γράφουµε τα assembly προγράµµατά µας. Στην αρχή µας εµφανίζει σαν παράδειγµα το πρόγραµµα Hello World. 1
Αν πατήσουµε το κουµπί ew θα µας βγάλει το εξής παραθυράκι στο οποίο επιλέγουµε BI Template και πατάµε OK. Έτσι οδηγούµαστε στο παράθυρο... Στην πραγµατικότητα, από τα περιεχόµενα αυτού του παραθύρου χρειαζόµαστε µόνο την πρώτη γραµµή (#make_bi#). Όλα τα υπόλοιπα τα σβήνουµε και δε µας απασχολούν. 2
Είµαστε έτοιµοι να γράψουµε το assembly πρόγραµµά µας. Το γράφουµε όπως θα το γράφαµε και στο εργαστήριο, εκτός από τις παράκάτω διαφορές. Ξεκινάµε πάντα µε τη γραµµή #make_bi#. Μπορούµε να εισάγουµε σχόλια ξεκινώντας µια γραµµή µε το ελληνικό ερωτηµατικό (;). Όταν γράφουµε µια διεύθυνση µνήµης ή έναν αριθµό αυτός θα πρέπει να ακολοθείται από το χαρακτήρα h, για να γίνεται ξεκάθαρο στον προσοµοιωτή ότι είµαστε στο δεκαεξαδικό σύστηµα (αλλιώς θα τον θεωρήσει δεκαδικό και θα έχουµε πρόβληµα). ηλαδή, αν θέλουµε να αναφερθούµε στη θέση µνήµης 200, αντί για [200] γράφουµε [200h]. Στο τέλος του προγράµµατος αντί για την IT 3 βάζουµε την HLT. εν υπάρχει πρόβληµα είτε γράφουµε µε µικρά είτε µε κεφαλαία γράµµατα. Για παράδειγµα... Εννοείται ότι ανα πάσα στιγµή µπορούµε να σώζουµε τον κώδικά µας µε Save As.. ή Save ή να φορτώσουµε κάποιο κώδικά µε Open. Τα αρχεία έχουν την κάτάληξη.asm. 3
Προκειµένου να τρέξουµε τον assembly κώδικά µας πρέπει πρώτα να τον «φορτώσουµε» στον προσοµοιωτή. Αυτό γίνεται παντώντας το πλήκτρο Emulate µε το πράσινο τριγωνάκι. Θα ανοίξουν δύο νέα παράθυρα. Το µικρότερο......δείχνει το πρόγραµµα που είναι φορτωµένο στον προσοµοιωτή. Το µεγαλύτερο µας δείχνει τί γίνεται στους καταχωρητές και τη µνήµη. Αυτό είναι και το βασικό παράθυρο του προσοµοιωτή. Στο αριστερό µέρος βλέπουµε τους καταχωρητές και τα περιεχόµενά τους. Μπορούµε να κάνουµε κλικ µε το ποντίκι και να αλλάξουµε τα περιεχόµενα τους. Οι AX, BX, CX, DX, είναι χωρισµένοι σε υψηλό (H) και χαµηλό (L) µέρος. Να µη µας µπερδεύει αυτό, όταν πρέπει να βάλουµε δεκαεξάµπιτο αριθµό τον γράφουµε µε τη σειρά που τον βλέπουµε στο χαρτί. Π.χ. αν θέλουµε να βάλουµε τον αριθµό 1F4B στον AX θα βάλουµε 1F στο τµήµα H και 4B στο τµήµα L. 4
Στη µέση του παρθύρου, σε κίτρινο φόντο βλέπουµε τις θέσεις µνήµης και τα περιεχόµενά τους ξεκινώντας από τη θέση µνήµης 0100:0000. Αυτό αναγράφεται και στα δύο µικρά άσπρα πλαίσια ακριβώς από κάτω. Για να δούµε, π.χ. τη θέση µνήµης 0100:0200 µπορούµε να κατέβουµε µε τη µπάρα κύλισης ή, ακόµα καλύτερα, να πάµε στο άσπρο πλαίσιο που γράφει 0000, να βάλουµε 0200 (ή και 200) και να πατήσουµε ETER: Για να αλλάξουµε το περιεχόµενο µιας θέσης µνήµης κάνουµε διπλό κλικ στον αριθµό της θέσης µνήµης στο κίτρινο πλαίσιο. Εµφανίζεται αυτό το παράθυρο: Μας ενδιαφέρει η γραµµή HEX. Κάνοντας κλικ στο πλάισιο L µπορούµε να αλλάξουµε το περιεχόµενο της θέσης µνήµης (της [200] στο παράδειγµά µας). Το πλαίσιο Η αντιστοιχεί στην αµέσως επόµενη θέση µνήµης (τη [201]). Στο παράθυρο αναγράφονται πληροφορίες όπως η δεκαδική τιµή των περιεχοµένων της µνήµης 5
όταν οι αριθµοί θεωρούνται µη προσηµασµένοι, προσηµασµένοι, οχτάµπιτοι ή δεκαεξάµπιτοι. Για να αλλάξουµε το περιεχόµενο µιας άλλης θέσης µνήµης µπορούµε να κλείσουµε το µικρό παράθυρο και να επαναλάβουµε την προηγούµενη διαδικασία. Εναλλακτικά, µπορούµε να πάµε στο πάνω δεξιά πλαίσιο του µικρού παραθύρου και να αλλάξουµε τη θέση µνήµης (π.χ. να κάνουµε το 0200 202). Με την επιλογή Watch πάνω αριστερά µπορούµε να πάµε και σε κάποιον καταχωρητή και να το αλλάξουµε (για τη µνήµη η επιλογή είναι η ΜΕΜ:). Ωστόσο ο τρόπος που περιγράψαµε πριν για την αλλαγή του περιεχοµένου των καταχωρητών είναι απλούστερος. Για να τρέξουµε το πρόγραµµά µας πατάµε το κουµπί Run στο βασικό παράθυρο του προσοµοιωτή. Όταν το πρόγραµµα τρέξει θα εµφανιστεί το παράθυρο: Το οποίο δε µας ενοχλεί, απλώς το κλείνουµε. Μπορούµε να χρησιµοποιήσουµε και το κουµπί Single Step επαναληπτικά οπότε το πρόγραµµά µας θα τρέξει εντολή-εντολή. Σε κάθε περίπτωση, για να ξανατρέξουµε το πρόγραµµα θα πρέπει πρώτα να πατήσουµε το κουµπί Reload. Τις σηµαίες µπορούµε να τις δούµε παντώντας το κουµπί FLAGS στο βασικό παράθυρο. Εµφανίζεται το παράθυρο: Μετακινώντας τον κέρσορα πάνω από τα γράµµατα θα δούµε σε ποια ακριβώς σηµαία αναφέρεται το καθένα. 6
Σηµειώνουµε τέλος ότι επειδή o προσοµοιωτής emu8086 δεν είναι registered είναι πολύ πιθανό την ώρα που τα assembly προγράµµατά µας τρέχουν να σταµατήσει και να εµφανίσει το παράθυρο: Αν πατήσουµε το µεσαίο κουµπί θα ανοίξει στον υπολογιστή µας ο Internet Explorer, και ίσως βγάλει το παράθυρο της dial-up σύνδεσης. ε µας ενοχλούν, τα κλείνουµε, και κάνουµε Reload και Run. 7