Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών
Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada 4 2 0000 000000000000 hlt 3 1111 111111111111-4 0000 000000000001-5 6 7 0
Εκτέλεση προγράμματος σε γλώσσα μηχανής O ΕΚΥ χρησιμοποιεί την μορφή συμπληρώματος ως προς 2 για την αναπαράσταση των ακεραίων αριθμών. Το αποτέλεσμα της εκτέλεσης του προηγούμενου προγράμματος είναι η αποθήκευση της τιμής 0 στον συσσωρευτή (Α)
Άσκηση Περιγράψετε τα βήματα που εκτελούνται κατά την εκτέλεση του παραπάνω προγράμματος, τόσο κατά τη φάση ανάκλησης όσο και κατά τη φάση εκτέλεσης κάθε εντολής
Ορισμός προγράμματος σε γλώσσα μηχανής Πατάμε το πλήκτρο (Ι) Κάνουμε διπλό κλικ στη θέση μνήμης που θέλουμε να αλλάξουμε Επαναλαμβάνουμε για όλες τις θέσεις μνήμης που θέλουμε να διορθώσουμε Με τα πλήκτρα Μηδενισμός μηδενίζουμε μνήμη και καταχωρητές. Για οδηγίες χρήσης του ΕΚΥ δείτε http://www.cslab.ntua.gr/courses/csintro/eky/
Εκτέλεση προγράμματος Το πλήκτρο (Ι) πρέπει να είναι απενεργοποιημέν ο Πατάμε το πλήκτρο με το δεξί βέλος. Για οδηγίες χρήσης του ΕΚΥ δείτε http://www.cslab.ntua.gr/courses/csintro/eky/
Η συμβολική γλώσσα του ΕΚΥ (απλοποιημένη μορφή) Μορφή εντολής σε συμβολική γλώσσα (assembly) [Ετικέτα] [Εντολή] [Όρισμα] ;[Σχόλια] Δεν ενδιαφέρει αν οι χαρακτήρες μιας εντολής είναι μικρά ή κεφαλαία (case insensitive)
Μορφή εντολής σε συμβολική γλώσσα Όπου Ετικέτα Είναι ένα συμβολικό όνομα για την τρέχουσα θέση μνήμης Εντολή είναι το όνομα της εντολής. Για τις ανάγκες του μαθήματος, μπορεί να είναι ένα από τα lda, sta, ada, sba, mla, dva, hlt, καθώς και ένα όνομα ψευδοεντολής όπως θα αναφερθεί στη συνέχεια. Όρισμα, ή πεδίο εντολής. Πρόκειται για την θέση μνήμης στην οποία αναφέρεται η συγκεκριμένη εντολή. Μπορεί να είναι κάποιο συμβολικό όνομα ετικέτας ή αριθμητική τιμή δεκαδικό σύστημα αρίθμησης. Σχόλια Πρόκειται για ελεύθερο κείμενο το οποίο περιγράφει τη σημασία της εντολής.
Παραδείγματα εντολών lda my_num ; Εντολή χωρίς ετικέτα label sta 100 ; Εντολή με ετικέτα mem_pos hlt
Ψευδοεντολές Εντολές οι οποίες διευκολύνουν τον προγραμματισμό και καθοδηγούν την μετάφραση του προγράμματος σε γλώσσα μηχανής δεν ανήκουν στο σύνολο εντολών του επεξεργαστή και δεν εκτελούνται πραγματικά κατά την εκτέλεση των προγραμμάτων Οι ψευδοεντολές της συμβολικής γλώσσας του ΕΚΥ είναι οι: CON RES NAM END
H ψευδοεντολή CON Χρησιμοποιείται για την δήλωση σταθερών τιμών. Ημορφήτηςείναι label CON αριθμητική_σταθερά όπου label είναι το συμβολικό όνομα που αντιστοιχεί στη διεύθυνση της εντολής και αριθμητική_σταθερά είναι μια ακέραια τιμή στο δεκαδικό ή το οκταδικό σύστημα. Παράδειγμα: value con 24 Στο παραπάνω παράδειγμα η ετικέτα value αντιστοιχίζεται σε μια θέση μνήμης της οποίας το (σταθερό) περιεχόμενο είναι ο δεκαδικός αριθμός 24. Έτσι, η εντολή lda value έχει ως αποτέλεσμα την μεταφορά στο συσσωρευτή (A) της τιμής που περιέχεται στην θέση μνήμης με ετικέτα value, δηλαδή της σταθερής 24.
Η ψευδοεντολή RES Χρησιμοποιείται για την δήλωση μεταβλητών τιμών και πινάκων. Ημορφήτηςείναι label RES n H εντολή res ορίζει μια περιοχή από n διαδοχικές θέσεις μνήμης και αντιστοιχίζει την διεύθυνση της πρώτης θέσης στο συμβολικό όνομα label. Παράδειγμα: count con 1 Στο παραπάνω παράδειγμα η ετικέτα count αντιστοιχίζεται σε μια θέση μνήμης της οποίας το περιεχόμενο μπορεί να μεταβάλλεται. Έτσι, η εντολή sta count έχει ως αποτέλεσμα την μεταφορά της τιμής που είναι αποθηκευμένη στον συσσωρευτή (A) στη θέση μνήμης count.
Η ψευδοεντολή NAM Η ψευδοεντολή nam χρησιμοποιείται για τη δήλωση του ονόματος (NAMe) ενός προγράμματος σε συμβολική γλώσσα. Παράδειγμα nam my_program Άλλες εντολές end
Η ψευδοεντολή END Η ψευδοεντολή END ορίζει το τέλος ενός προγράμματος σε συμβολική γλώσσα.
Συμβολομεταφραστής (assembler) Η μετάφραση ενός προγράμματος από την συμβολική γλώσσα σε γλώσσα μηχανής γίνεται από προγράμματα που λέγονται συμβολομεταφραστές (assemblers).
Σύνταξη προγράμματος σε συμβολική γλώσσα στον εξομοιωτή του ΕΚΥ (1)
Σύνταξη προγράμματος σε συμβολική γλώσσα στον εξομοιωτή του ΕΚΥ (2) Μετάφραση του προγράμματος σε γλώσσα μηχανής Φόρτωση του προγράμματος στη μνήμη του ΕΚΥ
Αποτέλεσμα της φόρτωσης του προηγούμενου προγράμματος
Εκτέλεση του προγράμματος εξομοίωσης του Εκπαιδευτικού Υπολογιστή (Άβακας) Απ ευθείας από τη σελίδα http://www.cslab.ntua.gr/courses/csintro/eky/ (???) (Java applet) Εναλλακτικά Κατεβάστε το πρόγραμμα eky.zip απότηδιεύθυνση??? Αποσυμπιέστε τα περιεχόμενα του eky.zip σε έναν κατάλογο του υπολογιστή σας. Ανοίξτε την σελίδα eky_index.html. Για την εκτέλεση του προγράμματος ως εφαρμογής, κάντε διπλό κλικ στο run.bat. Για να εκτελεστεί το πρόγραμμα πρέπει να έχετε εγκατεστημένο το Java Runtime Environment (JRE) στον υπολογιστή σας. Για περισσότερα επικοινωνήστε με τον διδάσκοντα (andpapas@aegean.gr)
Γλώσσες προγραμματισμού χαμηλού επιπέδου Γλώσσα μηχανής Συμβολική γλώσσα Πλεονεκτήματα Δημιουργία «γρήγορων» προγραμμάτων (με μικρό χρόνο εκτέλεσης) Μειονεκτήματα Μεγάλος χρόνος ανάπτυξης Απαιτείται εξειδικευμένη γνώση του συγκεκριμένου επεξεργαστή Μεγάλη πιθανότητα λαθών και δυσκολία στην εύρεση και διόρθωσή τους Δημιουργούνται προγράμματα που απευθύνονται μόνο σε έναν τύπο υπολογιστή (μη μεταφέρσιμα)
Γλώσσες υψηλού επιπέδου Pascal, Basic, C, Fortran, Logo, Ανεξάρτητες από το υλικό ενός συγκεκριμένου υπολογιστή Ευκολία στην ανάπτυξη, ανίχνευση λαθών Μεταφέρσιμα
Επίλυση προβλημάτων με υπολογιστή Η επίλυση ενός προβλήματος μέσω υπολογιστή αποτελείται από δυο διακριτά βήματα: Αλγοριθμική σχεδίαση Κωδικοποίηση Το δεύτερο βήμα γίνεται σε κάποια γλώσσα προγραμματισμού.
Μετάφραση προγράμματος Τα προγράμματα που μεταφράζουν από μια γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής ονομάζονται μεταγλωττιστές Κάθε αρχείο που περιέχει το κείμενο ενός προγράμματος ονομάζεται πηγαίο αρχείο (source file). Η εισαγωγή και τροποποίηση των περιεχομένων ενός αρχείου ονομάζεται επεξεργασία (editing).
Μεταγλώττιση Ο μεταγλωττιστής μεταφράζει ένα πηγαίο αρχείο σε ένα αρχείο σε γλώσσα μηχανής που ονομάζεται αντικειμενικό αρχείο (object file). Το αντικειμενικό αρχείο συνδυάζεται με άλλα αντικειμενικά αρχεία που ονομάζονται βιβλιοθήκες (libraries) ώστε να δημιουργηθεί το εκτελέσιμο αρχείο (executable). Αυτή η διαδικασία ονομάζεται σύνδεση (linking).