Δομές στη γλώσσα assembly. Δομή προγράμματος γλώσσας συναρμολόγησης Μορφή δεδομένων και δομή διδασκαλίας γλώσσας συναρμολόγησης

Θέμα 1.4 Μνημονικά Assembler. Δομή και μορφές εντολών. Τύποι διευθυνσιοδότησης. Σετ εντολών μικροεπεξεργαστή

Σχέδιο:

1 Γλώσσα συναρμολόγησης. ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

2 Σύμβολα γλώσσας συναρμολόγησης

3 Τύποι δηλώσεων assembler

4 Οδηγίες Συνέλευσης

5 Σετ εντολών επεξεργαστή

1 Ισυμβολική γλώσσα. ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

συμβολική γλώσσαείναι μια συμβολική αναπαράσταση της γλώσσας μηχανής. Όλες οι διεργασίες στο μηχάνημα στο χαμηλότερο επίπεδο υλικού οδηγούνται μόνο από εντολές (οδηγίες) της γλώσσας μηχανής. Από αυτό είναι σαφές ότι, παρά την κοινή ονομασία, η γλώσσα assembly για κάθε τύπο υπολογιστή είναι διαφορετική.

Ένα πρόγραμμα γλώσσας συναρμολόγησης είναι μια συλλογή μπλοκ μνήμης που ονομάζεται τμήματα μνήμης.Ένα πρόγραμμα μπορεί να αποτελείται από ένα ή περισσότερα από αυτά τα τμήματα μπλοκ. Κάθε τμήμα περιέχει μια συλλογή από γλωσσικές προτάσεις, καθεμία από τις οποίες καταλαμβάνει μια ξεχωριστή γραμμή κώδικα προγράμματος.

Οι δηλώσεις συναρμολόγησης είναι τεσσάρων τύπων:

1) εντολές ή οδηγίες που είναι συμβολικά ανάλογα εντολών μηχανής. Κατά τη διαδικασία μετάφρασης, οι οδηγίες συναρμολόγησης μετατρέπονται στις αντίστοιχες εντολές του συνόλου εντολών του μικροεπεξεργαστή.

2) μακροεντολές -οι προτάσεις του κειμένου του προγράμματος, οι οποίες επισημοποιούνται με συγκεκριμένο τρόπο, αντικαθίστανται από άλλες προτάσεις κατά τη διάρκεια της εκπομπής·

3) οδηγίες,οι οποίες είναι οδηγίες προς τον μεταφραστή assembler για την εκτέλεση ορισμένων ενεργειών. Οι οδηγίες δεν έχουν αντίστοιχη αναπαράσταση μηχανών.

4) γραμμές σχολίων , που περιέχει οποιουσδήποτε χαρακτήρες, συμπεριλαμβανομένων των γραμμάτων του ρωσικού αλφαβήτου. Τα σχόλια αγνοούνται από τον μεταφραστή.

­ Δομή προγράμματος συναρμολόγησης. σύνταξη assembler.

Οι προτάσεις που συνθέτουν ένα πρόγραμμα μπορεί να είναι μια συντακτική κατασκευή που αντιστοιχεί σε εντολή, μακροεντολή, οδηγία ή σχόλιο. Για να τα αναγνωρίσει ο μεταφραστής assembler, πρέπει να σχηματιστούν σύμφωνα με ορισμένους συντακτικούς κανόνες. Για να γίνει αυτό, είναι καλύτερο να χρησιμοποιήσετε μια επίσημη περιγραφή της σύνταξης της γλώσσας, όπως οι κανόνες της γραμματικής. Οι πιο συνηθισμένοι τρόποι περιγραφής μιας γλώσσας προγραμματισμού όπως αυτή - συντακτικά διαγράμματαΚαι εκτεταμένες μορφές του Backus-Naur.Πιο βολικό για πρακτική χρήση συντακτικά διαγράμματα.Για παράδειγμα, η σύνταξη των δηλώσεων γλώσσας συγκρότησης μπορεί να περιγραφεί χρησιμοποιώντας τα συντακτικά διαγράμματα που φαίνονται στα ακόλουθα σχήματα 10, 11, 12.

Εικόνα 10 - Μορφή πρότασης συναρμολόγησης


­ Εικόνα 11 - Μορφή οδηγιών

­ Εικόνα 12 - Μορφή εντολών και μακροεντολών

Σε αυτά τα σχέδια:

­ όνομα ετικέτας- αναγνωριστικό, η τιμή του οποίου είναι η διεύθυνση του πρώτου byte της πρότασης του πηγαίου κώδικα του προγράμματος, που υποδηλώνει.

­ όνομα -ένα αναγνωριστικό που διακρίνει αυτήν την οδηγία από άλλες ομώνυμες οδηγίες. Ως αποτέλεσμα της επεξεργασίας από τον συναρμολογητή μιας συγκεκριμένης οδηγίας, ορισμένα χαρακτηριστικά μπορούν να αποδοθούν σε αυτό το όνομα.

­ κωδικός λειτουργίας (COP) και οδηγία - Αυτά είναι μνημονικά σύμβολα για την αντίστοιχη οδηγία μηχανής, μακροεντολή ή οδηγία μεταγλωττιστή.

­ τελεστές -τμήματα μιας εντολής, μιας μακροεντολής ή μιας οδηγίας συναρμολόγησης, που δηλώνουν αντικείμενα στα οποία εκτελούνται ενέργειες. Οι τελεστές Assembler περιγράφονται με εκφράσεις με αριθμητικές και σταθερές κειμένου, ετικέτες μεταβλητών και αναγνωριστικά που χρησιμοποιούν σήματα τελεστή και μερικές δεσμευμένες λέξεις.

Τα συντακτικά διαγράμματα βοηθούν βρείτε και μετά περάστε τη διαδρομή από την είσοδο του διαγράμματος (αριστερά) στην έξοδο του (δεξιά). Εάν υπάρχει τέτοιο μονοπάτι, τότε η πρόταση ή η κατασκευή είναι συντακτικά σωστή. Εάν δεν υπάρχει τέτοιο μονοπάτι, τότε ο μεταγλωττιστής δεν θα αποδεχτεί αυτήν την κατασκευή.

­ 2 σύμβολα γλώσσας συναρμολόγησης

Οι επιτρεπόμενοι χαρακτήρες κατά τη σύνταξη του κειμένου των προγραμμάτων είναι:

1) όλα τα λατινικά γράμματα: Α-Ζ,a-z. Στην περίπτωση αυτή, τα κεφαλαία και τα πεζά γράμματα θεωρούνται ισοδύναμα.

2) αριθμοί από 0 πριν 9 ;

3) σημάδια ? , @ , $ , _ , & ;

4) διαχωριστικά , . () < > { } + / * % ! " " ? = # ^ .

Οι προτάσεις Assembler σχηματίζονται από μάρκες, που είναι συντακτικά αχώριστες ακολουθίες έγκυρων γλωσσικών χαρακτήρων που έχουν νόημα για τον μεταφραστή.

μάρκεςείναι:

1) αναγνωριστικά - ακολουθίες έγκυρων χαρακτήρων που χρησιμοποιούνται για τον προσδιορισμό των αντικειμένων του προγράμματος, όπως κωδικούς λειτουργίας, ονόματα μεταβλητών και ονόματα ετικετών. Ο κανόνας για την εγγραφή αναγνωριστικών είναι ο εξής: ένα αναγνωριστικό μπορεί να αποτελείται από έναν ή περισσότερους χαρακτήρες.

2) συμβολοσειρές χαρακτήρων - ακολουθίες χαρακτήρων που περικλείονται σε μονά ή διπλά εισαγωγικά.

3) ακέραιοι σε ένα από τα ακόλουθα συστήματα αριθμών : δυαδικό, δεκαδικό, δεκαεξαδικό. Η αναγνώριση των αριθμών κατά την εγγραφή τους σε προγράμματα συναρμολόγησης πραγματοποιείται σύμφωνα με ορισμένους κανόνες:

4) Οι δεκαδικοί αριθμοί δεν απαιτούν πρόσθετα σύμβολα για την αναγνώρισή τους, για παράδειγμα, 25 ή 139. Για αναγνώριση στον πηγαίο κώδικα του προγράμματος δυαδικούς αριθμούςείναι απαραίτητο, αφού γράψετε τα μηδενικά και τα που περιλαμβάνονται στη σύνθεσή τους, να βάλετε τα λατινικά « σι”, για παράδειγμα 10010101 σι.

5) Οι δεκαεξαδικοί αριθμοί έχουν περισσότερες συμβάσεις στη σημείωση τους:

Πρώτον, αποτελούνται από αριθμούς. 0...9 , πεζά και κεφαλαία γράμματα του λατινικού αλφαβήτου ένα,σι, ντο,ρε,μι,φάή ΕΝΑ,σι,ντο,ρε,μι,φά.

Δεύτερον, ο μεταφραστής μπορεί να δυσκολεύεται να αναγνωρίσει δεκαεξαδικούς αριθμούς λόγω του γεγονότος ότι μπορούν να αποτελούνται και από τα ψηφία 0 ... 9 (για παράδειγμα, 190845) και να ξεκινούν με ένα γράμμα του λατινικού αλφαβήτου (για παράδειγμα, εφ15). Για να «εξηγήσει» στον μεταφραστή ότι το λήμμα που δίνεται δεν είναι δεκαδικός αριθμός ή αναγνωριστικό, ο προγραμματιστής πρέπει να εκχωρήσει ειδικά τον δεκαεξαδικό αριθμό. Για να το κάνετε αυτό, στο τέλος της ακολουθίας δεκαεξαδικών ψηφίων που αποτελούν τον δεκαεξαδικό αριθμό, γράψτε το λατινικό γράμμα " η". Αυτό είναι προαπαιτούμενο. Εάν ένας δεκαεξαδικός αριθμός ξεκινά με ένα γράμμα, προηγείται ένα μηδενικό στην αρχή: 0 εφ15 η.

Σχεδόν κάθε πρόταση περιέχει μια περιγραφή του αντικειμένου στο οποίο ή με τη βοήθεια του οποίου εκτελείται κάποια ενέργεια. Αυτά τα αντικείμενα ονομάζονται τελεστές. Μπορούν να οριστούν ως εξής: τελεστές- αυτά είναι αντικείμενα (ορισμένες τιμές, καταχωρητές ή κελιά μνήμης) που επηρεάζονται από οδηγίες ή οδηγίες ή πρόκειται για αντικείμενα που ορίζουν ή βελτιώνουν τη δράση των εντολών ή των οδηγιών.

Είναι δυνατό να πραγματοποιηθεί η ακόλουθη ταξινόμηση τελεστών:

­ σταθεροί ή άμεσοι τελεστές.

­ τελεστές διεύθυνσης·

­ Μετακινημένοι τελεστές.

μετρητής διευθύνσεων?

­ τελεστής εγγραφής·

­ τελεστές βάσης και ευρετηρίου.

­ δομικοί τελεστές·

εγγραφές.

Οι τελεστές είναι στοιχειώδη στοιχεία που αποτελούν μέρος της εντολής μηχανής, δηλώνοντας τα αντικείμενα στα οποία εκτελείται η λειτουργία. Σε μια πιο γενική περίπτωση, οι τελεστές μπορούν να συμπεριληφθούν ως συστατικά σε πιο σύνθετους σχηματισμούς που ονομάζονται εκφράσεις.

Εκφράσεις είναι συνδυασμοί τελεστών και τελεστών που θεωρούνται ως σύνολο. Το αποτέλεσμα της αξιολόγησης της έκφρασης μπορεί να είναι η διεύθυνση κάποιου κελιού μνήμης ή κάποια σταθερή (απόλυτη) τιμή.

­ 3 Τύποι δηλώσεων assembler

Ας απαριθμήσουμε τους πιθανούς τύπους δηλώσεις assemblerκαι συντακτικοί κανόνες για το σχηματισμό παραστάσεων assembler:

­ αριθμητικοί τελεστές·

­ χειριστές βάρδιας·

­ χειριστές σύγκρισης·

­ λογικοί τελεστές·

­ τελεστής ευρετηρίου·

­ τελεστής παράκαμψης τύπου?

­ τελεστής επαναπροσδιορισμού τμήματος.

­ τελεστής ονομασίας τύπου δομής.

­ τελεστής για τη λήψη της συνιστώσας τμήματος της διεύθυνσης της έκφρασης.

­ μετατόπιση έκφρασης τελεστής λήψης.

1 Οδηγίες Συνέλευσης

­ Οι οδηγίες συναρμολόγησης είναι:

1) Οδηγίες τμηματοποίησης. Κατά τη διάρκεια της προηγούμενης συζήτησης, ανακαλύψαμε όλους τους βασικούς κανόνες για τη σύνταξη εντολών και τελεστών σε ένα πρόγραμμα γλώσσας assembly. Το ερώτημα για το πώς να μορφοποιήσετε σωστά την ακολουθία εντολών έτσι ώστε ο μεταφραστής να μπορεί να τις επεξεργαστεί και ο μικροεπεξεργαστής να τις εκτελέσει παραμένει ανοιχτό.

Εξετάζοντας την αρχιτεκτονική του μικροεπεξεργαστή, μάθαμε ότι έχει έξι καταχωρητές τμημάτων, μέσω των οποίων μπορεί να λειτουργήσει ταυτόχρονα:

­ με ένα τμήμα κώδικα.

­ με ένα τμήμα στοίβας.

­ με ένα τμήμα δεδομένων.

­ με τρία πρόσθετα τμήματα δεδομένων.

Φυσικά, ένα τμήμα είναι μια περιοχή μνήμης που καταλαμβάνεται από εντολές και (ή) δεδομένα των οποίων οι διευθύνσεις υπολογίζονται σε σχέση με την τιμή στον αντίστοιχο καταχωρητή τμήματος. Η συντακτική περιγραφή ενός τμήματος στο assembler είναι η κατασκευή που φαίνεται στο Σχήμα 13:


­ Εικόνα 13 - Συντακτική περιγραφή του τμήματος στο assembler

Είναι σημαντικό να σημειωθεί ότι η λειτουργικότητα ενός τμήματος είναι κάπως ευρύτερη από την απλή διάσπαση του προγράμματος σε μπλοκ κώδικα, δεδομένων και στοίβας. Η τμηματοποίηση είναι μέρος ενός γενικότερου μηχανισμού που σχετίζεται με έννοια του αρθρωτού προγραμματισμού.Περιλαμβάνει την ενοποίηση του σχεδιασμού των ενοτήτων αντικειμένων που δημιουργούνται από τον μεταγλωττιστή, συμπεριλαμβανομένων εκείνων από διαφορετικές γλώσσες προγραμματισμού. Αυτό σας επιτρέπει να συνδυάσετε προγράμματα γραμμένα σε διαφορετικές γλώσσες. Οι τελεστές στην οδηγία SEGMENT προορίζονται για την εφαρμογή διαφόρων επιλογών για μια τέτοια ένωση.

2) Οδηγίες ελέγχου καταχώρισης. Οι οδηγίες ελέγχου καταχώρισης χωρίζονται στις ακόλουθες ομάδες:

­ γενικές οδηγίες για τον έλεγχο των λιστών·

­ Οδηγίες εξόδου για να συμπεριλάβουν την καταχώριση αρχείων.

­ Οδηγίες εξόδου για μπλοκ συναρμολόγησης υπό όρους.

­ οδηγίες εξόδου για την καταχώριση μακροεντολών·

­ οδηγίες για την εμφάνιση πληροφοριών σχετικά με παραπομπές στην καταχώριση·

­ οδηγίες αλλαγής μορφής καταχώρισης.

2 Σετ εντολών επεξεργαστή

Το σύνολο εντολών του επεξεργαστή φαίνεται στο Σχήμα 14.

Εξετάστε τις κύριες ομάδες εντολών.

­ Εικόνα 14 - Ταξινόμηση οδηγιών συναρμολόγησης

Οι εντολές είναι:

1 Εντολές μεταφοράς δεδομένων. Αυτές οι οδηγίες καταλαμβάνουν μια πολύ σημαντική θέση στο σύνολο εντολών οποιουδήποτε επεξεργαστή. Εκτελούν τις ακόλουθες βασικές λειτουργίες:

­ αποθήκευση στη μνήμη των περιεχομένων των εσωτερικών καταχωρητών του επεξεργαστή.

­ αντιγραφή περιεχομένου από μια περιοχή μνήμης σε άλλη.

­ εγγραφή σε συσκευές I/O και ανάγνωση από συσκευές I/O.

Σε ορισμένους επεξεργαστές, όλες αυτές οι λειτουργίες εκτελούνται από μία μόνο εντολή MOV (για μεταφορές byte - MOVB ) αλλά με διαφορετικές μεθόδους αντιμετώπισης τελεστών.

Σε άλλους επεξεργαστές εκτός από τις οδηγίες MOV υπάρχουν πολλές ακόμη εντολές για την εκτέλεση των αναφερόμενων λειτουργιών. Οι εντολές μεταφοράς δεδομένων περιλαμβάνουν επίσης εντολές ανταλλαγής πληροφοριών (η ονομασία τους βασίζεται στη λέξηΑνταλλαγή ). Μπορεί να είναι δυνατό να προβλεφθεί η ανταλλαγή πληροφοριών μεταξύ εσωτερικών μητρώων, μεταξύ δύο μισών ενός μητρώου (ΑΝΤΑΛΑΓΗ ) ή μεταξύ ενός καταχωρητή και μιας θέσης μνήμης.

2 Αριθμητικές εντολές. Οι αριθμητικές εντολές αντιμετωπίζουν τους κώδικες τελεστών ως αριθμητικούς δυαδικούς ή BCD κώδικες. Αυτές οι εντολές μπορούν να χωριστούν σε πέντε κύριες ομάδες:

­ εντολές για πράξεις με σταθερό σημείο (πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση).

­ οδηγίες κινητής υποδιαστολής (πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση).

­ εντολές καθαρισμού.

­ εντολές αύξησης και μείωσης.

­ εντολή σύγκρισης.

3 Οι εντολές σταθερού σημείου λειτουργούν σε κώδικες στους καταχωρητές επεξεργαστή ή στη μνήμη όπως θα λειτουργούσαν με τους κανονικούς δυαδικούς κώδικες. Οι οδηγίες κινητής υποδιαστολής (σημείο) χρησιμοποιούν μια μορφή αναπαράστασης αριθμού με έναν εκθέτη και μια μάντισσα (συνήθως αυτοί οι αριθμοί καταλαμβάνουν δύο διαδοχικές θέσεις μνήμης). Στους σύγχρονους ισχυρούς επεξεργαστές, το σύνολο εντολών κινητής υποδιαστολής δεν περιορίζεται μόνο σε τέσσερις αριθμητικές πράξεις, αλλά περιέχει επίσης πολλές άλλες πιο σύνθετες εντολές, για παράδειγμα, τον υπολογισμό τριγωνομετρικών συναρτήσεων, λογαριθμικών συναρτήσεων και πολύπλοκων συναρτήσεων που είναι απαραίτητες για την επεξεργασία ήχου και εικόνας.

4 Οι εντολές διαγραφής έχουν σχεδιαστεί για να γράφουν έναν μηδενικό κωδικό σε έναν καταχωρητή ή ένα κελί μνήμης. Αυτές οι εντολές μπορούν να αντικατασταθούν από οδηγίες μεταφοράς μηδενικού κώδικα, αλλά οι ειδικές σαφείς οδηγίες είναι συνήθως πιο γρήγορες από τις οδηγίες μεταφοράς.

5 Εντολές αύξησης (αύξηση κατά ένα) και μείωσης

(οι μειώσεις κατά ένα) είναι επίσης πολύ βολικές. Θα μπορούσαν κατ' αρχήν να αντικατασταθούν από εντολές προσθήκης ή αφαίρεσης ενός, αλλά η αύξηση και η μείωση είναι ταχύτερη από την πρόσθεση και την αφαίρεση. Αυτές οι οδηγίες απαιτούν έναν τελεστή εισόδου που είναι επίσης τελεστής εξόδου.

6 Η εντολή σύγκρισης είναι για τη σύγκριση δύο τελεστών εισόδου. Στην πραγματικότητα, υπολογίζει τη διαφορά αυτών των δύο τελεστών, αλλά δεν σχηματίζει τον τελεστή εξόδου, αλλά αλλάζει μόνο τα bit στον καταχωρητή κατάστασης του επεξεργαστή με βάση το αποτέλεσμα αυτής της αφαίρεσης. Η εντολή που ακολουθεί την εντολή σύγκρισης (συνήθως μια εντολή άλματος) θα αναλύσει τα bit στον καταχωρητή κατάστασης του επεξεργαστή και θα εκτελέσει ενέργειες με βάση τις τιμές τους. Ορισμένοι επεξεργαστές παρέχουν οδηγίες για την αλυσιδωτή σύγκριση δύο ακολουθιών τελεστών στη μνήμη.

7 Λογικές εντολές. Οι λογικές εντολές εκτελούν λογικές (bitwise) πράξεις σε τελεστές, δηλαδή θεωρούν τους κωδικούς τελεστών όχι ως έναν μόνο αριθμό, αλλά ως ένα σύνολο μεμονωμένων bit. Σε αυτό διαφέρουν από τις αριθμητικές εντολές. Οι λογικές εντολές εκτελούν τις ακόλουθες βασικές λειτουργίες:

­ λογικό ΚΑΙ, λογικό Ή, προσθήκη modulo 2 (XOR);

­ λογικές, αριθμητικές και κυκλικές μετατοπίσεις.

­ έλεγχος bit και τελεστών.

­ ρύθμιση και εκκαθάριση bits (σημαίες) του καταχωρητή κατάστασης επεξεργαστή ( PSW).

Οι λογικές οδηγίες επιτρέπουν τον υπολογισμό bit-by-bit των βασικών λογικών συναρτήσεων από δύο τελεστές εισόδου. Επιπλέον, η λειτουργία AND χρησιμοποιείται για να εξαναγκάσει τη διαγραφή των καθορισμένων bit (ως ένας από τους τελεστές, αυτός χρησιμοποιεί τον κωδικό μάσκας, στον οποίο τα bit που απαιτούν εκκαθάριση ορίζονται στο μηδέν). Η λειτουργία OR χρησιμοποιείται για να εξαναγκάσει τη ρύθμιση των καθορισμένων bit (ως ένας από τους τελεστές, χρησιμοποιείται ο κώδικας μάσκας στον οποίο τα bit που απαιτούν ρύθμιση σε ένα είναι ίσα με ένα). Η λειτουργία XOR χρησιμοποιείται για την αντιστροφή των δεδομένων bit (ως ένας από τους τελεστές, χρησιμοποιείται ο κωδικός μάσκας στον οποίο τα bit που πρόκειται να αντιστραφούν ορίζονται σε ένα). Οι εντολές απαιτούν δύο τελεστές εισόδου και σχηματίζουν έναν τελεστή εξόδου.

8 Οι εντολές shift σάς επιτρέπουν να μετατοπίζετε τον κώδικα του τελεστή λίγο προς λίγο προς τα δεξιά (προς τα χαμηλότερα bit) ή προς τα αριστερά (προς τα υψηλότερα bit). Ο τύπος μετατόπισης (λογική, αριθμητική ή κυκλική) καθορίζει ποια θα είναι η νέα τιμή του πιο σημαντικού bit (όταν μετατοπίζεται δεξιά) ή του λιγότερο σημαντικού bit (όταν μετατοπίζεται αριστερά) και καθορίζει επίσης αν η παλιά τιμή του πιο σημαντικού το bit θα αποθηκευτεί κάπου (όταν μετακινείται αριστερά) ή το λιγότερο σημαντικό bit (όταν μετατοπίζεται προς τα δεξιά). Οι περιστροφικές μετατοπίσεις σάς επιτρέπουν να μετατοπίζετε τα bit του κώδικα τελεστών σε κύκλο (δεξιόστροφα όταν μετακινείτε προς τα δεξιά ή αριστερόστροφα όταν μετακινείτε αριστερά). Σε αυτήν την περίπτωση, ο δακτύλιος αλλαγής μπορεί να περιλαμβάνει ή όχι τη σημαία μεταφοράς. Το bit σημαίας μεταφοράς (εάν χρησιμοποιείται) ορίζεται στο πιο σημαντικό bit για περιστροφή προς τα αριστερά και στο λιγότερο σημαντικό bit για περιστροφή δεξιά. Κατά συνέπεια, η τιμή του bit σημαίας μεταφοράς θα ξαναγραφεί στο λιγότερο σημαντικό bit σε μια αριστερή κυκλική μετατόπιση και στο πιο σημαντικό bit σε μια δεξιά κυκλική μετατόπιση.

9 εντολές μετάβασης. Οι εντολές μετάβασης έχουν σχεδιαστεί για να οργανώνουν όλα τα είδη βρόχων, διακλαδώσεων, κλήσεων υπορουτίνας κ.λπ., δηλαδή διακόπτουν τη διαδοχική ροή του προγράμματος. Αυτές οι οδηγίες γράφουν μια νέα τιμή στον καταχωρητή μετρητή εντολών και έτσι προκαλούν τον επεξεργαστή να μεταβεί όχι στην επόμενη εντολή με τη σειρά, αλλά σε οποιαδήποτε άλλη εντολή στη μνήμη του προγράμματος. Ορισμένες εντολές άλματος σάς επιτρέπουν να επιστρέψετε στο σημείο από το οποίο έγινε το άλμα, ενώ άλλες όχι. Εάν παρέχεται επιστροφή, τότε οι τρέχουσες παράμετροι του επεξεργαστή αποθηκεύονται στη στοίβα. Εάν δεν παρέχεται επιστροφή, τότε οι τρέχουσες παράμετροι του επεξεργαστή δεν αποθηκεύονται.

Οι εντολές μετάβασης χωρίς backtracking χωρίζονται σε δύο ομάδες:

­ εντολές άνευ όρων άλματα.

­ οδηγίες άλματος υπό όρους.

Αυτές οι εντολές χρησιμοποιούν τις λέξεις Branch (κλαδί) και Jump (άλμα).

Οι οδηγίες άνευ όρων μεταπήδησης προκαλούν ένα άλμα σε μια νέα διεύθυνση ανεξάρτητα από το τι. Μπορούν να προκαλέσουν άλμα στην καθορισμένη τιμή μετατόπισης (εμπρός ή πίσω) ή στην καθορισμένη διεύθυνση μνήμης. Η τιμή μετατόπισης ή η νέα τιμή διεύθυνσης καθορίζεται ως ο τελεστής εισόδου.

Οι εντολές άλματος υπό όρους δεν προκαλούν πάντα άλμα, αλλά μόνο όταν πληρούνται οι καθορισμένες συνθήκες. Τέτοιες συνθήκες είναι συνήθως οι τιμές των σημαιών στον καταχωρητή κατάστασης επεξεργαστή ( PSW ). Δηλαδή, η συνθήκη μετάβασης είναι το αποτέλεσμα της προηγούμενης λειτουργίας που αλλάζει τις τιμές των σημαιών. Συνολικά, μπορεί να υπάρχουν από 4 έως 16 τέτοιες συνθήκες άλματος. Μερικά παραδείγματα εντολών άλματος υπό όρους:

­ άλμα αν είναι ίσο με μηδέν.

­ άλμα αν δεν είναι μηδενικό.

­ άλμα αν υπάρχει υπερχείλιση.

­ άλμα αν δεν υπάρχει υπερχείλιση.

­ άλμα αν είναι μεγαλύτερο από μηδέν.

­ άλμα εάν είναι μικρότερο ή ίσο με μηδέν.

Εάν πληρούται η συνθήκη μετάβασης, τότε μια νέα τιμή φορτώνεται στον καταχωρητή μετρητή εντολών. Εάν δεν πληρούται η συνθήκη άλματος, ο μετρητής εντολών απλώς αυξάνεται και ο επεξεργαστής επιλέγει και εκτελεί την επόμενη εντολή με τη σειρά.

Ειδικά για τον έλεγχο των συνθηκών διακλάδωσης, χρησιμοποιείται μια εντολή σύγκρισης (CMP) που προηγείται μιας εντολής άλματος υπό όρους (ή ακόμη και πολλών εντολών άλματος υπό όρους). Αλλά οι σημαίες μπορούν να οριστούν με οποιαδήποτε άλλη εντολή, όπως μια εντολή μεταφοράς δεδομένων, οποιαδήποτε αριθμητική ή λογική εντολή. Σημειώστε ότι οι ίδιες οι εντολές άλματος δεν αλλάζουν τις σημαίες, κάτι που σας επιτρέπει απλώς να βάλετε πολλές εντολές μετάβασης τη μία μετά την άλλη.

Οι εντολές διακοπής καταλαμβάνουν μια ιδιαίτερη θέση μεταξύ των εντολών άλματος με επιστροφή. Αυτές οι οδηγίες απαιτούν έναν αριθμό διακοπής (διεύθυνση διανύσματος) ως τελεστή εισόδου.

Παραγωγή:

Η γλώσσα συναρμολόγησης είναι μια συμβολική αναπαράσταση της γλώσσας μηχανής. Η γλώσσα assembly για κάθε τύπο υπολογιστή είναι διαφορετική. Ένα πρόγραμμα γλώσσας συναρμολόγησης είναι μια συλλογή μπλοκ μνήμης που ονομάζονται τμήματα μνήμης. Κάθε τμήμα περιέχει μια συλλογή από γλωσσικές προτάσεις, καθεμία από τις οποίες καταλαμβάνει μια ξεχωριστή γραμμή κώδικα προγράμματος. Οι δηλώσεις συναρμολόγησης είναι τεσσάρων τύπων: εντολές ή οδηγίες, μακροεντολές, οδηγίες, γραμμές σχολίων.

Οι έγκυροι χαρακτήρες κατά τη σύνταξη του κειμένου των προγραμμάτων είναι όλα λατινικά γράμματα: Α-Ζ,a-z. Στην περίπτωση αυτή, τα κεφαλαία και τα πεζά γράμματα θεωρούνται ισοδύναμα. φιγούρες από 0 πριν 9 ; σημάδια ? , @ , $ , _ , & ; διαχωριστές , . () < > { } + / * % ! " " ? = # ^ .

Ισχύουν οι ακόλουθοι τύποι δηλώσεων assembler και συντακτικών κανόνων για το σχηματισμό παραστάσεων assembler. αριθμητικοί τελεστές, τελεστές μετατόπισης, τελεστές σύγκρισης, λογικοί τελεστές, τελεστής ευρετηρίου, τελεστής επαναπροσδιορισμού τύπου, τελεστής επαναπροσδιορισμού τμήματος, τελεστής ονομασίας τύπου δομής, τελεστής λήψης συστατικού τμήματος διεύθυνσης έκφρασης, τελεστής λήψης μετατόπισης έκφρασης.

Το σύστημα εντολών χωρίζεται σε 8 κύριες ομάδες.

­ Ερωτήσεις τεστ:

1 Τι είναι η γλώσσα assembly;

2 Ποια σύμβολα μπορούν να χρησιμοποιηθούν για την εγγραφή εντολών στο assembler;

3 Τι είναι οι ετικέτες και ποιος είναι ο σκοπός τους;

4 Εξηγήστε τη δομή των οδηγιών συναρμολόγησης.

5 Καταγράψτε 4 τύπους δηλώσεων assembler.

1. Αρχιτεκτονική Η/Υ…………………………………………………………………… 5

    1.1. Μητρώα.

    1.1.1 Μητρώα γενικής χρήσης.

1.1.2. καταχωρητές τμημάτων

1.1.3 Μητρώο σημαίας

1.2. Οργάνωση μνήμης.

1.3. Αναπαράσταση δεδομένων.

1.3.1 Τύποι δεδομένων

1.3.2 Αναπαράσταση χαρακτήρων και συμβολοσειρών

2. Προγραμματικές δηλώσεις της Συνέλευσης …………………………………………

    1. Εντολές γλώσσας συναρμολόγησης

2.2. Τρόποι διευθυνσιοδότησης και μορφές εντολών μηχανής

3. Ψευδοτελεστές ……………………………………………………………

3.1 Οδηγίες για τον ορισμό δεδομένων

3.2 Δομή προγράμματος συνέλευσης

3.2.1 Τμήματα προγράμματος. αναλάβουν οδηγία

3.2.3 Απλοποιημένη οδηγία κατάτμησης

4. Συναρμολόγηση και σύνδεση του προγράμματος …………………………….

5. Εντολές μεταφοράς δεδομένων……………………………………………….

    5.1 Γενικές εντολές

    5.2 Εντολές στοίβας

5.3 Εντολές I/O

5.4 Εντολές προώθησης διευθύνσεων

5.5 Εντολές μεταφοράς σημαίας

6. Αριθμητικές εντολές ………………………………………………….

    6.1 Αριθμητικές πράξεις σε δυαδικούς ακέραιους αριθμούς

6.1.1 Πρόσθεση και αφαίρεση

6.1.2 Εντολές για αύξηση και μείωση του δέκτη κατά ένα

6.2 Πολλαπλασιασμός και διαίρεση

6.3 Αλλαγή πινακίδας

7. Λογικές πράξεις …………………………………………………….

8. Βάρδιες και κυκλικές βάρδιες ………………………………………………

9. Πράξεις συμβολοσειράς ……………………………………………………….

10. Λογική και οργάνωση προγραμμάτων …………………………………………

10.1 Άλματα χωρίς όρους

10.2 Άλματα υπό όρους

10.4 Διαδικασίες στη γλώσσα assembly

10.5 Διακόπτει INT

10.6 Λογισμικό συστήματος

10.6.1.1 Ανάγνωση του πληκτρολογίου.

10.6.1.2 Εμφάνιση χαρακτήρων στην οθόνη

10.6.1.3 Τερματισμός προγραμμάτων.

10.6.2.1 Επιλογή τρόπων εμφάνισης

11. Μνήμη δίσκου…………………………………………………………..

11.2 Πίνακας κατανομής αρχείων

11.3 Είσοδος/Έξοδος δίσκου

11.3.1 Εγγραφή αρχείου σε δίσκο

11.3.1.1 Δεδομένα ASCIIZ

11.3.1.2 Αριθμός αρχείου

11.3.1.3 Δημιουργία αρχείου δίσκου

11.3.2 Ανάγνωση αρχείου δίσκου

Εισαγωγή

Η γλώσσα συναρμολόγησης είναι μια συμβολική αναπαράσταση της γλώσσας μηχανής. Όλες οι διαδικασίες σε έναν προσωπικό υπολογιστή (PC) στο χαμηλότερο επίπεδο υλικού καθοδηγούνται μόνο από εντολές στη γλώσσα μηχανής (οδηγίες). Είναι αδύνατο να λυθούν πραγματικά προβλήματα που σχετίζονται με το υλικό (ή ακόμα και, επιπλέον, αυτά που σχετίζονται με το υλικό, όπως η βελτίωση της ταχύτητας ενός προγράμματος), χωρίς γνώση του assembler.

Το Assembler είναι μια βολική μορφή εντολών απευθείας για εξαρτήματα υπολογιστή και απαιτεί γνώση των ιδιοτήτων και των δυνατοτήτων του ολοκληρωμένου κυκλώματος που περιέχει αυτά τα στοιχεία, δηλαδή του μικροεπεξεργαστή υπολογιστή. Έτσι, η γλώσσα assembly σχετίζεται άμεσα με την εσωτερική οργάνωση του Η/Υ. Και δεν είναι τυχαίο ότι σχεδόν όλοι οι μεταγλωττιστές γλωσσών υψηλού επιπέδου υποστηρίζουν την πρόσβαση στο επίπεδο προγραμματισμού assembler.

Στοιχείο της προετοιμασίας ενός επαγγελματία προγραμματιστή είναι απαραίτητα η μελέτη του assembler. Αυτό οφείλεται στο γεγονός ότι ο προγραμματισμός της γλώσσας assembly απαιτεί γνώση της αρχιτεκτονικής του υπολογιστή, η οποία σας επιτρέπει να δημιουργείτε πιο αποτελεσματικά προγράμματα σε άλλες γλώσσες και να τα συνδυάζετε με προγράμματα γλώσσας assembly.

Το εγχειρίδιο ασχολείται με τον προγραμματισμό σε γλώσσα assembly για υπολογιστές που βασίζονται σε μικροεπεξεργαστές Intel.

Αυτό το σεμινάριο απευθύνεται σε όλους όσους ενδιαφέρονται για την αρχιτεκτονική του επεξεργαστή και τα βασικά του προγραμματισμού στη γλώσσα Assembly, πρώτα απ' όλα στους προγραμματιστές του προϊόντος λογισμικού.

    Αρχιτεκτονική Η/Υ.

Η αρχιτεκτονική του υπολογιστή είναι μια αφηρημένη αναπαράσταση ενός υπολογιστή που αντικατοπτρίζει τη δομή, τα κυκλώματα και τη λογική του οργάνωση.

Όλοι οι σύγχρονοι υπολογιστές έχουν κάποιες κοινές και μεμονωμένες αρχιτεκτονικές ιδιότητες. Οι μεμονωμένες ιδιότητες είναι εγγενείς μόνο σε ένα συγκεκριμένο μοντέλο υπολογιστή.

Η έννοια της αρχιτεκτονικής υπολογιστών περιλαμβάνει:

    μπλοκ διάγραμμα ενός υπολογιστή?

    μέσα και μεθόδους πρόσβασης στα στοιχεία του μπλοκ διαγράμματος ενός υπολογιστή·

    σύνολο και διαθεσιμότητα μητρώων·

    οργάνωση και μέθοδοι αντιμετώπισης·

    μέθοδος παρουσίασης και μορφή δεδομένων υπολογιστή·

    ένα σύνολο οδηγιών μηχανών υπολογιστή.

    Μορφές οδηγιών μηχανής.

    διακοπή χειρισμού.

Τα κύρια στοιχεία του υλικού του υπολογιστή: μονάδα συστήματος, πληκτρολόγιο, συσκευές οθόνης, μονάδες δίσκου, συσκευές εκτύπωσης (εκτυπωτής) και διάφορα μέσα επικοινωνίας. Η μονάδα συστήματος αποτελείται από την πλακέτα συστήματος, το τροφοδοτικό και τις υποδοχές επέκτασης για πρόσθετες πλακέτες. Η μητρική πλακέτα περιέχει τον μικροεπεξεργαστή, τη μνήμη μόνο για ανάγνωση (ROM), τη μνήμη τυχαίας πρόσβασης (RAM) και τον συνεπεξεργαστή.

      Μητρώα.

Μέσα στον μικροεπεξεργαστή, οι πληροφορίες περιέχονται σε μια ομάδα 32 καταχωρητών (16 χρήστες, 16 σύστημα), περισσότερο ή λιγότερο διαθέσιμοι για χρήση από τον προγραμματιστή. Δεδομένου ότι το εγχειρίδιο είναι αφιερωμένο στον προγραμματισμό του μικροεπεξεργαστή 8088-i486, είναι πολύ λογικό να ξεκινήσετε αυτό το θέμα συζητώντας τους εσωτερικούς καταχωρητές του μικροεπεξεργαστή που είναι διαθέσιμοι στον χρήστη.

Τα μητρώα χρηστών χρησιμοποιούνται από τον προγραμματιστή για τη σύνταξη προγραμμάτων. Αυτά τα μητρώα περιλαμβάνουν:

    οκτώ καταχωρητές 32-bit (καταχωρητές γενικής χρήσης) EAX/AX/AH/AL, EBX/BX/BH/BL, ECX/CX/CH/CL, EDX/DX/DLH/DL, EBP/BP, ESI/SI, EDI/DI, ESP/SP;

    έξι καταχωρητές τμήματος 16-bit: CS,DS, SS, ES, FS,GS.

    καταχωρητές κατάστασης και ελέγχου: καταχωρητής σημαίας EFLAGS/FLAGS και καταχωρητής δείκτη εντολών EIP/IP.

Τα μέρη ενός καταχωρητή 32 bit εμφανίζονται με κάθετο. Το πρόθεμα E (Extended) υποδηλώνει τη χρήση καταχωρητή 32 bit. Για την εργασία με byte, χρησιμοποιούνται καταχωρητές με προθέματα L (χαμηλό) και H (υψηλό), για παράδειγμα, AL, CH - που δηλώνουν τα χαμηλά και υψηλά byte των τμημάτων των 16-bit των καταχωρητών.

        Γενικά μητρώα.

EAX/AX/AH/AL (Μητρώο συσσωρευτή) - μπαταρία. Χρησιμοποιείται στον πολλαπλασιασμό και τη διαίρεση, σε πράξεις εισόδου/εξόδου και σε ορισμένες πράξεις σε συμβολοσειρές.

EBX/BX/BH/BL - μητρώο βάσης(βασικός καταχωρητής), που χρησιμοποιείται συχνά κατά τη διευθυνσιοδότηση δεδομένων στη μνήμη.

ECX/CX/CH/CL - μετρητής(καταγραφή καταμέτρησης), που χρησιμοποιείται ως μετρητής για τον αριθμό των επαναλήψεων βρόχου.

EDX/DX/DH/DL - μητρώο δεδομένων(μητρώο δεδομένων), που χρησιμοποιείται για την αποθήκευση ενδιάμεσων δεδομένων. Κάποιες εντολές το απαιτούν.

Όλα τα μητρώα αυτής της ομάδας σάς επιτρέπουν να έχετε πρόσβαση στα "κατώτερα" μέρη τους. Μόνο τα κατώτερα τμήματα 16 και 8 bit αυτών των καταχωρητών μπορούν να χρησιμοποιηθούν για αυτοδιευθυνσιοδότηση. Τα ανώτερα 16 bit αυτών των καταχωρητών δεν είναι διαθέσιμα ως ανεξάρτητα αντικείμενα.

Για την υποστήριξη εντολών επεξεργασίας συμβολοσειρών που επιτρέπουν τη διαδοχική επεξεργασία σειρών στοιχείων με μήκος 32, 16 ή 8 bit, χρησιμοποιούνται τα ακόλουθα:

ESI/SI (καταχωρητής ευρετηρίου πηγής) - δείκτης πηγή. Περιέχει τη διεύθυνση του τρέχοντος στοιχείου πηγής.

EDI/DI (καταχωρητής ευρετηρίου απόστασης) - δείκτης δέκτης(παραλήπτης). Περιέχει την τρέχουσα διεύθυνση στη συμβολοσειρά προορισμού.

Στην αρχιτεκτονική του μικροεπεξεργαστή, μια δομή δεδομένων, μια στοίβα, υποστηρίζεται σε επίπεδο υλικού και λογισμικού. Για να εργαστείτε με τη στοίβα, υπάρχουν ειδικές εντολές και ειδικοί καταχωρητές. Πρέπει να σημειωθεί ότι η στοίβα γεμίζει προς μικρότερες διευθύνσεις.

ESP/SP (καταχωρητής δείκτη στοίβας) - κανω ΕΓΓΡΑΦΗ δείκτης σωρός. Περιέχει έναν δείκτη στην κορυφή της στοίβας στο τρέχον τμήμα της στοίβας.

EBP/BP (βασικός καταχωρητής δείκτη) – καταχωρητής δείκτη βάσης στοίβας. Σχεδιασμένο για να οργανώνει την τυχαία πρόσβαση σε δεδομένα μέσα στη στοίβα.

1.1.2. καταχωρητές τμημάτων

Το μοντέλο λογισμικού μικροεπεξεργαστή έχει έξι καταχωρητές τμημάτων: CS, SS, DS, ES, GS, FS. Η ύπαρξή τους οφείλεται στις ιδιαιτερότητες της οργάνωσης και χρήσης της μνήμης RAM από μικροεπεξεργαστές Intel. Το υλικό του μικροεπεξεργαστή υποστηρίζει τη δομική οργάνωση του προγράμματος που αποτελείται από τμήματα.Οι καταχωρητές τμημάτων χρησιμοποιούνται για να υποδείξουν ποια τμήματα είναι διαθέσιμα αυτήν τη στιγμή. Ο μικροεπεξεργαστής υποστηρίζει τους ακόλουθους τύπους τμημάτων:

    τμήμα κώδικα.Περιέχει εντολές προγράμματος Για να αποκτήσετε πρόσβαση σε αυτό το τμήμα, χρησιμοποιήστε τον καταχωρητή CS (καταχωρητής τμήματος κώδικα) - καταχωρητής κωδικού τμήματος. Περιέχει τη διεύθυνση του τμήματος εντολών μηχανής στο οποίο έχει πρόσβαση ο μικροεπεξεργαστής.

    τμήμα δεδομένων.Περιέχει τα δεδομένα που επεξεργάζεται το πρόγραμμα. Για πρόσβαση σε αυτό το τμήμα, χρησιμοποιείται ο καταχωρητής DS (καταχωρητής τμήματος δεδομένων) - καταχωρητής δεδομένων τμήματος, το οποίο αποθηκεύει τη διεύθυνση του τμήματος δεδομένων του τρέχοντος προγράμματος.

    Τμήμα στοίβας.Αυτό το τμήμα είναι μια περιοχή της μνήμης που ονομάζεται στοίβα. Ο μικροεπεξεργαστής οργανώνει τη στοίβα σύμφωνα με την αρχή - το πρώτο "ήρθε", το πρώτο "αριστερά". Για πρόσβαση στη στοίβα, χρησιμοποιείται ο καταχωρητής SS (καταχωρητής τμημάτων στοίβας) - καταχωρητής τμήματος στοίβας A που περιέχει τη διεύθυνση του τμήματος στοίβας.

    Πρόσθετο τμήμα δεδομένων.Τα προς επεξεργασία δεδομένα μπορούν να είναι σε τρία πρόσθετα τμήματα δεδομένων. Από προεπιλογή, τα δεδομένα θεωρείται ότι βρίσκονται στο τμήμα δεδομένων. Όταν χρησιμοποιείτε πρόσθετα τμήματα δεδομένων, οι διευθύνσεις τους πρέπει να προσδιορίζονται ρητά χρησιμοποιώντας ειδικά προθέματα επαναπροσδιορισμού τμήματος στην εντολή. Οι διευθύνσεις πρόσθετων τμημάτων δεδομένων πρέπει να περιέχονται στους καταχωρητές ES, GS, FS (καταχωρητές τμημάτων δεδομένων επέκτασης).

        Μητρώα ελέγχου και κατάστασης

Ο μικροεπεξεργαστής περιέχει αρκετούς καταχωρητές που περιέχουν πληροφορίες σχετικά με την κατάσταση τόσο του ίδιου του μικροεπεξεργαστή όσο και του προγράμματος του οποίου οι οδηγίες έχουν φορτωθεί αυτήν τη στιγμή στον αγωγό. Αυτό:

Καταχωρητής δείκτη εντολών EIP/IP.

    Μητρώο σημαίας EFLAGS/FLAGS.

Χρησιμοποιώντας αυτούς τους καταχωρητές, μπορείτε να λάβετε πληροφορίες σχετικά με τα αποτελέσματα της εκτέλεσης εντολών και να επηρεάσετε την κατάσταση του ίδιου του μικροεπεξεργαστή.

EIP/IP (εγγραφή δείκτη εντολών) - δείκτης εντολές. Ο καταχωρητής EIP/IP έχει πλάτος 32 ή 16 bit και περιέχει τη μετατόπιση της επόμενης εντολής που θα εκτελεστεί σε σχέση με τα περιεχόμενα του καταχωρητή τμήματος CS στο τρέχον τμήμα εντολών. Αυτό το μητρώο δεν είναι άμεσα προσβάσιμο, αλλά αλλάζει με οδηγίες μετάβασης.

EFLAGS/FLAGS (Μητρώο σημαίας) - κανω ΕΓΓΡΑΦΗ σημαίες. Βάθος bit 32/16 bit. Τα μεμονωμένα bit αυτού του καταχωρητή έχουν συγκεκριμένο λειτουργικό σκοπό και ονομάζονται flags. Σημαία είναι ένα bit που ορίζεται σε 1 ("η σημαία έχει οριστεί") εάν κάποια συνθήκη είναι αληθής και 0 ("η σημαία έχει διαγραφεί") διαφορετικά. Το κάτω μέρος αυτού του μητρώου είναι εντελώς ανάλογο με τον καταχωρητή FLAGS για το i8086.

1.1.3 Μητρώο σημαίας

Ο καταχωρητής σημαίας είναι 32-bit και έχει το όνομα EFLAGS (Εικ. 1). Τα μεμονωμένα bit του καταχωρητή έχουν συγκεκριμένο λειτουργικό σκοπό και ονομάζονται flags. Σε καθένα από αυτά αποδίδεται ένα συγκεκριμένο όνομα (ZF, CF, κ.λπ.). Τα χαμηλότερα 16 bit του EFLAGS αντιπροσωπεύουν τον καταχωρητή FLAGS των 16 bit που χρησιμοποιείται κατά την εκτέλεση προγραμμάτων γραμμένων για τους μικροεπεξεργαστή i086 και i286.

Εικ.1 Μητρώο σημαιών

Ορισμένες σημαίες ονομάζονται σημαίες συνθήκης. αλλάζουν αυτόματα όταν εκτελούνται εντολές και διορθώνουν ορισμένες ιδιότητες του αποτελέσματός τους (για παράδειγμα, αν είναι ίσο με μηδέν). Άλλες σημαίες ονομάζονται κρατικές σημαίες. αλλάζουν από το πρόγραμμα και επηρεάζουν την περαιτέρω συμπεριφορά του επεξεργαστή (για παράδειγμα, μπλοκάρουν διακοπές).

Σημαίες κατάστασης:

CF (carry flag) - φέρουν σημαία. Λαμβάνει την τιμή 1 εάν, κατά την προσθήκη ακεραίων, εμφανίστηκε μια μονάδα μεταφοράς που δεν "ταιριάζει" στο πλέγμα bit ή εάν, κατά την αφαίρεση αριθμών χωρίς πρόσημο, ο πρώτος από αυτούς ήταν μικρότερος από τον δεύτερο. Στις εντολές shift, το bit που είναι εκτός δικτύου εισάγεται στο CF. Το CF διορθώνει επίσης τα χαρακτηριστικά της εντολής πολλαπλασιασμού.

OF (σημαία υπερχείλισης) σημαία υπερχείλισης. Ορίζεται σε 1 εάν, κατά την πρόσθεση ή την αφαίρεση ακεραίων με πρόσημο, το αποτέλεσμα προέκυψε, modulo που υπερέβαινε την επιτρεπόμενη τιμή (η μάντισσα ξεχείλισε και "σκαρφάλωσε" στο bit πρόσημου).

ZF (σημαία μηδέν) μηδενική σημαία. Ορίστε σε 1 εάν το αποτέλεσμα της εντολής είναι 0.

SF (σημαία Sign) - σημαία σημάδι. Ρυθμίστε το σε 1 εάν η λειτουργία σε υπογεγραμμένους αριθμούς έχει ως αποτέλεσμα αρνητικό αποτέλεσμα.

PF (σημαία ισοτιμίας) - σημαία ισοτιμία. Είναι ίσο με 1 αν το αποτέλεσμα της επόμενης εντολής περιέχει ζυγό αριθμό δυαδικών. Συνήθως λαμβάνεται υπόψη μόνο κατά τις λειτουργίες I/O.

AF (βοηθητική σημαία μεταφοράς) - πρόσθετη σημαία μεταφοράς. Διορθώνει τις δυνατότητες εκτέλεσης πράξεων σε δυαδικούς-δεκαδικούς αριθμούς.

Σημαίες κατάστασης:

DF (σημαία κατεύθυνσης) σημαία κατεύθυνσης. Ορίζει την κατεύθυνση των γραμμών σάρωσης σε εντολές συμβολοσειράς: με DF=0, οι γραμμές σαρώνονται "εμπρός" (από την αρχή μέχρι το τέλος), με DF=1 - προς την αντίθετη κατεύθυνση.

IOPL (επίπεδο προνομίου εισόδου/εξόδου) - Επίπεδο προνομίου I/O.Χρησιμοποιείται στην προστατευμένη λειτουργία του μικροεπεξεργαστή για τον έλεγχο της πρόσβασης σε εντολές I/O, ανάλογα με το προνόμιο της εργασίας.

NT (ένθετη εργασία) σημαία ένθεσης εργασιών.Χρησιμοποιείται στην προστατευμένη λειτουργία του μικροεπεξεργαστή για την καταγραφή του γεγονότος ότι μια εργασία είναι ένθετη μέσα σε μια άλλη.

Σημαία συστήματος:

IF (σημαία διακοπής) - σημαία διακοπής. Με IF=0, ο επεξεργαστής σταματά να ανταποκρίνεται σε διακοπές που του έρχονται, με IF=1, ο αποκλεισμός των διακοπών αφαιρείται.

TF (σημαία παγίδα) σημαία ίχνους. Με το TF=1, μετά την εκτέλεση κάθε εντολής, ο επεξεργαστής κάνει μια διακοπή (με αριθμό 1), η οποία μπορεί να χρησιμοποιηθεί κατά τον εντοπισμό σφαλμάτων ενός προγράμματος για την ανίχνευση του.

RF (σημαία βιογραφικού) σημαία βιογραφικού. Χρησιμοποιείται κατά το χειρισμό διακοπών από τους καταχωρητές εντοπισμού σφαλμάτων.

VM (εικονική λειτουργία 8086) - εικονική σημαία 8086. 1 - ο επεξεργαστής λειτουργεί σε εικονική λειτουργία 8086. 0 - ο επεξεργαστής λειτουργεί σε πραγματική ή προστατευμένη λειτουργία.

AC (έλεγχος ευθυγράμμισης) - σημαία ελέγχου ευθυγράμμισης.Σχεδιασμένο για να επιτρέπει τον έλεγχο ευθυγράμμισης κατά την πρόσβαση στη μνήμη.

      Οργάνωση μνήμης.

Η φυσική μνήμη στην οποία έχει πρόσβαση ο μικροεπεξεργαστής ονομάζεται μνήμη εργασίας (ή μνήμη τυχαίας πρόσβασης ΕΜΒΟΛΟ).Η RAM είναι μια αλυσίδα από byte που έχουν τη δική τους μοναδική διεύθυνση (τον αριθμό της), που ονομάζεται φυσικός.Το εύρος της φυσικής διεύθυνσης είναι από 0 έως 4 GB. Ο μηχανισμός διαχείρισης μνήμης βασίζεται εξ ολοκλήρου σε υλικό.

Ο μικροεπεξεργαστής υποστηρίζει πολλά μοντέλα χρήσης RAM σε υλικό:

    τμηματοποιημένο μοντέλο. Σε αυτό το μοντέλο, η μνήμη προγράμματος χωρίζεται σε συνεχόμενες περιοχές μνήμης (τμήματα) και το ίδιο το πρόγραμμα μπορεί να έχει πρόσβαση μόνο σε δεδομένα που βρίσκονται σε αυτά τα τμήματα.

    μοντέλο σελίδας. Σε αυτή την περίπτωση, η RAM θεωρείται ως ένα σύνολο μπλοκ σταθερού μεγέθους 4 KB. Η κύρια εφαρμογή αυτού του μοντέλου σχετίζεται με την οργάνωση της εικονικής μνήμης, η οποία επιτρέπει στα προγράμματα να χρησιμοποιούν περισσότερο χώρο στη μνήμη από την ποσότητα της φυσικής μνήμης. Για έναν μικροεπεξεργαστή Pentium, το μέγεθος της πιθανής εικονικής μνήμης μπορεί να είναι έως και 4 TB.

Η χρήση και η υλοποίηση αυτών των μοντέλων εξαρτάται από τον τρόπο λειτουργίας του μικροεπεξεργαστή:

    Λειτουργία πραγματικής διεύθυνσης (πραγματική λειτουργία).Η λειτουργία είναι παρόμοια με τη λειτουργία του επεξεργαστή i8086. Απαιτείται για τη λειτουργία προγραμμάτων που έχουν σχεδιαστεί για πρώιμα μοντέλα επεξεργαστών.

    Προστατευμένη λειτουργία.Σε προστατευμένη λειτουργία, καθίσταται δυνατή η επεξεργασία πληροφοριών πολλαπλών εργασιών, η προστασία της μνήμης χρησιμοποιώντας έναν μηχανισμό προνομίων τεσσάρων επιπέδων και τη σελιδοποίησή του.

    Εικονική λειτουργία 8086.Σε αυτήν τη λειτουργία, καθίσταται δυνατή η εκτέλεση πολλών προγραμμάτων για το i8086. Σε αυτήν την περίπτωση, τα προγράμματα πραγματικής λειτουργίας μπορούν να λειτουργήσουν.

Η τμηματοποίηση είναι ένας μηχανισμός διευθυνσιοδότησης που διασφαλίζει την ύπαρξη αρκετών ανεξάρτητων χώρων διευθύνσεων. Ένα τμήμα είναι ένα ανεξάρτητο μπλοκ μνήμης που υποστηρίζεται από υλικό.

Κάθε πρόγραμμα στη γενική περίπτωση μπορεί να αποτελείται από οποιονδήποτε αριθμό τμημάτων, αλλά έχει άμεση πρόσβαση στα τρία κύρια: κώδικα, δεδομένα και στοίβα - και από ένα έως τρία πρόσθετα τμήματα δεδομένων. Το λειτουργικό σύστημα τοποθετεί τμήματα προγράμματος στη μνήμη RAM σε συγκεκριμένες φυσικές διευθύνσεις και στη συνέχεια τοποθετεί τις τιμές αυτών των διευθύνσεων στους αντίστοιχους καταχωρητές. Μέσα σε ένα τμήμα, το πρόγραμμα έχει πρόσβαση σε διευθύνσεις σχετικά με την αρχή του τμήματος γραμμικά, δηλαδή ξεκινώντας από τη διεύθυνση 0 και τελειώνοντας σε διεύθυνση ίση με το μέγεθος του τμήματος. Σχετική διεύθυνση ή προκατάληψη,που χρησιμοποιεί ο μικροεπεξεργαστής για την πρόσβαση σε δεδομένα μέσα σε ένα τμήμα ονομάζεται αποτελεσματικός.

Σχηματισμός φυσικής διεύθυνσης σε πραγματικό τρόπο

Στην πραγματική λειτουργία, το εύρος της φυσικής διεύθυνσης είναι από 0 έως 1 MB. Το μέγιστο μέγεθος τμήματος είναι 64 KB. Όταν αναφέρεται σε ένα συγκεκριμένο φυσική διεύθυνσηΗ μνήμη RAM καθορίζεται από τη διεύθυνση της αρχής του τμήματος και τη μετατόπιση εντός του τμήματος. Η διεύθυνση έναρξης τμήματος λαμβάνεται από τον αντίστοιχο καταχωρητή τμήματος. Σε αυτήν την περίπτωση, ο καταχωρητής τμήματος περιέχει μόνο τα ανώτερα 16 bit της φυσικής διεύθυνσης της αρχής του τμήματος. Τα κάτω τέσσερα bit που λείπουν από τη διεύθυνση των 20 bit λαμβάνονται μετατοπίζοντας την τιμή του καταχωρητή τμήματος προς τα αριστερά κατά 4 bit. Η λειτουργία μετατόπισης εκτελείται σε υλικό. Η τιμή 20-bit που προκύπτει είναι η πραγματική φυσική διεύθυνση που αντιστοιχεί στην αρχή του τμήματος. Δηλ φυσική διεύθυνσηκαθορίζεται ως ένα ζεύγος "τμήμα: μετατόπιση", όπου το "τμήμα" είναι τα πρώτα 16 bit της αρχικής διεύθυνσης του τμήματος μνήμης στο οποίο ανήκει το κελί και το "offset" είναι η διεύθυνση 16-bit αυτού του κελιού, μετρημένη από η αρχή αυτού του τμήματος μνήμης (η τιμή 16*segment +offset δίνει την απόλυτη διεύθυνση του κελιού). Εάν, για παράδειγμα, η τιμή 1234h είναι αποθηκευμένη στον καταχωρητή CS, τότε το ζεύγος διευθύνσεων 1234h:507h ορίζει μια απόλυτη διεύθυνση ίση με 16*1234h+507h =12340h+507h = 12847h. Ένα τέτοιο ζεύγος γράφεται με τη μορφή διπλής λέξης και (όπως για τους αριθμούς) σε "ανεστραμμένη" μορφή: η πρώτη λέξη περιέχει τη μετατόπιση και η δεύτερη - το τμήμα, καθεμία από αυτές τις λέξεις με τη σειρά της αντιπροσωπεύεται στο «ανεστραμμένη» μορφή. Για παράδειγμα, το ζεύγος 1234h:5678h θα γραφόταν ως εξής:| 78 | 56| 34 | 12|.

Αυτός ο μηχανισμός σχηματισμού μιας φυσικής διεύθυνσης σάς επιτρέπει να κάνετε το λογισμικό με δυνατότητα μετεγκατάστασης, δηλαδή να μην εξαρτάται από συγκεκριμένες διευθύνσεις λήψης στη μνήμη RAM.

Ο προγραμματισμός σε επίπεδο οδηγιών μηχανής είναι το ελάχιστο επίπεδο στο οποίο είναι δυνατός ο προγραμματισμός. Το σύστημα οδηγιών του μηχανήματος πρέπει να είναι επαρκές για την υλοποίηση των απαιτούμενων ενεργειών με την έκδοση οδηγιών στο υλικό του υπολογιστή.

Κάθε οδηγία μηχανής αποτελείται από δύο μέρη:

  • χειρουργείο - καθορισμός του "τι να κάνουμε"?
  • τελεστής - ορισμός αντικειμένων επεξεργασίας, «με τι να κάνουμε».

Η εντολή μηχανής του μικροεπεξεργαστή, γραμμένη σε γλώσσα συναρμολόγησης, είναι μια ενιαία γραμμή με την ακόλουθη συντακτική μορφή:

εντολή/οδηγία ετικέτας τελεστές ;σχόλια

Σε αυτήν την περίπτωση, ένα υποχρεωτικό πεδίο σε μια γραμμή είναι μια εντολή ή οδηγία.

Η ετικέτα, η εντολή/οδηγία και οι τελεστές (εάν υπάρχουν) διαχωρίζονται με τουλάχιστον έναν χαρακτήρα διαστήματος ή καρτέλας.

Εάν μια εντολή ή οδηγία πρέπει να συνεχιστεί στην επόμενη γραμμή, τότε χρησιμοποιείται ο χαρακτήρας ανάστροφης κάθετο: \.

Από προεπιλογή, η γλώσσα assembly δεν κάνει διάκριση μεταξύ κεφαλαίων και πεζών γραμμάτων σε εντολές ή οδηγίες.

Παραδείγματα γραμμών κώδικα:

Countdb 1 ;Όνομα, οδηγία, ένας τελεστής
mov eax,0 Εντολή, δύο τελεστές
cbw ; Εντολή

Ετικέτες

Επιγραφή στη γλώσσα assembly μπορεί να περιέχει τα ακόλουθα σύμβολα:

  • όλα τα γράμματα του λατινικού αλφαβήτου·
  • αριθμοί από το 0 έως το 9.
  • ειδικοί χαρακτήρες: _, @, $, ?.

Μια τελεία μπορεί να χρησιμοποιηθεί ως ο πρώτος χαρακτήρας μιας ετικέτας, αλλά ορισμένοι μεταγλωττιστές αποθαρρύνουν αυτόν τον χαρακτήρα. Τα δεσμευμένα ονόματα γλωσσών συναρμολόγησης (οδηγίες, τελεστές, ονόματα εντολών) δεν μπορούν να χρησιμοποιηθούν ως ετικέτες.

Ο πρώτος χαρακτήρας στην ετικέτα πρέπει να είναι γράμμα ή ειδικός χαρακτήρας (όχι αριθμός). Το μέγιστο μήκος ετικέτας είναι 31 χαρακτήρες. Όλες οι ετικέτες που είναι γραμμένες σε μια γραμμή που δεν περιέχει οδηγία συναρμολόγησης πρέπει να τελειώνουν με άνω και κάτω τελεία: .

Της ομάδας

Εντολή λέει στον μεταφραστή ποια ενέργεια πρέπει να εκτελέσει ο μικροεπεξεργαστής. Σε ένα τμήμα δεδομένων, μια εντολή (ή οδηγία) ορίζει ένα πεδίο, χώρο εργασίας ή σταθερά. Σε ένα τμήμα κώδικα, μια εντολή ορίζει μια ενέργεια, όπως μια κίνηση (mov) ή μια προσθήκη (προσθήκη).

οδηγίες

Το assembler έχει έναν αριθμό χειριστών που σας επιτρέπουν να ελέγχετε τη διαδικασία συναρμολόγησης και δημιουργίας μιας καταχώρισης. Αυτοί οι τελεστές καλούνται οδηγίες . Ενεργούν μόνο στη διαδικασία συναρμολόγησης του προγράμματος και, σε αντίθεση με τις οδηγίες, δεν δημιουργούν κωδικούς μηχανής.

τελεστές

Ορος πράξης – ένα αντικείμενο στο οποίο εκτελείται μια εντολή μηχανής ή ένας χειριστής γλώσσας προγραμματισμού.
Μια εντολή μπορεί να έχει έναν ή δύο τελεστές ή καθόλου τελεστές. Ο αριθμός των τελεστών καθορίζεται σιωπηρά από τον κώδικα εντολών.
Παραδείγματα:

  • Χωρίς επαναφορά τελεστών ;Επιστροφή
  • Ένας τελεστής inc ecx ;Αύξηση ecx
  • Δύο τελεστές προσθέτουν eax,12, Προσθέστε 12 στο eax

Η ετικέτα, η εντολή (οδηγία) και ο τελεστής δεν χρειάζεται να ξεκινούν από κάποια συγκεκριμένη θέση στη συμβολοσειρά. Ωστόσο, συνιστάται η εγγραφή τους σε στήλη για μεγαλύτερη αναγνωσιμότητα του προγράμματος.

Οι τελεστές μπορούν να είναι

  • αναγνωριστικά·
  • συμβολοσειρές χαρακτήρων που περικλείονται σε μονά ή διπλά εισαγωγικά.
  • ακέραιοι σε δυαδικό, οκταδικό, δεκαδικό ή δεκαεξαδικό.
Αναγνωριστικά

Αναγνωριστικά – ακολουθίες έγκυρων χαρακτήρων που χρησιμοποιούνται για τον προσδιορισμό αντικειμένων προγράμματος, όπως κωδικούς λειτουργίας, ονόματα μεταβλητών και ονόματα ετικετών.

Κανόνες για τη σύνταξη αναγνωριστικών.

  • Το αναγνωριστικό μπορεί να είναι ένας ή περισσότεροι χαρακτήρες.
  • Ως χαρακτήρες, μπορείτε να χρησιμοποιήσετε γράμματα του λατινικού αλφαβήτου, αριθμούς και μερικούς ειδικούς χαρακτήρες: _, ?, $, @.
  • Ένα αναγνωριστικό δεν μπορεί να ξεκινά με ψηφιακό χαρακτήρα.
  • Το αναγνωριστικό μπορεί να έχει μήκος έως 255 χαρακτήρες.
  • Ο μεταφραστής δέχεται τους πρώτους 32 χαρακτήρες του αναγνωριστικού και αγνοεί τους υπόλοιπους.
Σχόλια

Τα σχόλια διαχωρίζονται από την εκτελέσιμη γραμμή με έναν χαρακτήρα. . Σε αυτή την περίπτωση, όλα όσα γράφονται μετά τον χαρακτήρα ερωτηματικό και μέχρι το τέλος της γραμμής είναι σχόλιο. Η χρήση σχολίων σε ένα πρόγραμμα βελτιώνει τη σαφήνειά του, ειδικά όταν ο σκοπός ενός συνόλου οδηγιών είναι ασαφής. Το σχόλιο μπορεί να περιέχει οποιουσδήποτε εκτυπώσιμους χαρακτήρες, συμπεριλαμβανομένων των διαστημάτων. Το σχόλιο μπορεί να εκτείνεται σε ολόκληρη τη γραμμή ή να ακολουθεί την εντολή στην ίδια γραμμή.

Δομή προγράμματος συναρμολόγησης

Ένα πρόγραμμα γραμμένο σε γλώσσα assembly μπορεί να αποτελείται από πολλά μέρη, που ονομάζονται ενότητες . Κάθε λειτουργική μονάδα μπορεί να ορίσει ένα ή περισσότερα τμήματα δεδομένων, στοίβας και κώδικα. Οποιοδήποτε πλήρες πρόγραμμα γλώσσας assembly πρέπει να περιλαμβάνει μία κύρια ή κύρια ενότητα από την οποία ξεκινά η εκτέλεσή του. Μια λειτουργική μονάδα μπορεί να περιέχει κώδικα, δεδομένα και τμήματα στοίβας που δηλώνονται με τις κατάλληλες οδηγίες. Πριν δηλώσετε τμήματα, πρέπει να καθορίσετε το μοντέλο μνήμης χρησιμοποιώντας την οδηγία .MODEL.

Ένα παράδειγμα προγράμματος "δεν κάνουμε τίποτα" στη γλώσσα assembly:

686P
.ΜΟΝΤΕΛΟ FLAT, STDCALL
.ΔΕΔΟΜΕΝΑ
.ΚΩΔΙΚΑΣ
ΑΡΧΗ:

ΜΟΥΣΚΕΥΩ
ΤΕΛΟΣ ΕΝΑΡΞΗ

Αυτό το πρόγραμμα περιέχει μόνο μία εντολή μικροεπεξεργαστή. Αυτή η εντολή είναι RET. Εξασφαλίζει τον σωστό τερματισμό του προγράμματος. Γενικά, αυτή η εντολή χρησιμοποιείται για έξοδο από μια διαδικασία.
Το υπόλοιπο πρόγραμμα σχετίζεται με τη λειτουργία του μεταφραστή.
.686P - Επιτρέπονται εντολές προστατευμένης λειτουργίας Pentium 6 (Pentium II). Αυτή η οδηγία επιλέγει το υποστηριζόμενο σύνολο εντολών συναρμολογητή καθορίζοντας το μοντέλο του επεξεργαστή. Το γράμμα P στο τέλος της οδηγίας λέει στον μεταφραστή ότι ο επεξεργαστής λειτουργεί σε προστατευμένη λειτουργία.
.MODEL FLAT, το stdcall είναι ένα μοντέλο επίπεδης μνήμης. Αυτό το μοντέλο μνήμης χρησιμοποιείται στο λειτουργικό σύστημα Windows. stdcall
Το .DATA είναι ένα τμήμα προγράμματος που περιέχει δεδομένα.
.CODE είναι ένα μπλοκ προγράμματος που περιέχει κώδικα.
Το START είναι μια ετικέτα. Στο assembler, οι ετικέτες παίζουν μεγάλο ρόλο, κάτι που δεν μπορούμε να πούμε για τις σύγχρονες γλώσσες υψηλού επιπέδου.
END START - το τέλος του προγράμματος και ένα μήνυμα στον μεταφραστή ότι το πρόγραμμα πρέπει να ξεκινήσει από την ετικέτα START .
Κάθε ενότητα πρέπει να περιέχει μια οδηγία ΤΕΛΟΣ που σηματοδοτεί το τέλος του πηγαίου κώδικα του προγράμματος. Όλες οι γραμμές που ακολουθούν την οδηγία ΤΕΛΟΣ αγνοούνται. Η παράλειψη της οδηγίας ΤΕΛΟΣ δημιουργεί ένα σφάλμα.
Η ετικέτα μετά την οδηγία ΤΕΛΟΣ λέει στον μεταγλωττιστή το όνομα της κύριας μονάδας από την οποία ξεκινά η εκτέλεση του προγράμματος. Εάν το πρόγραμμα περιέχει μία ενότητα, η ετικέτα μετά την οδηγία ΤΕΛΟΣ μπορεί να παραλειφθεί.

Ανάλογα με το σκοπό, οι εντολές μπορούν να διακριθούν (παραδείγματα μνημονικών κωδικών λειτουργίας εντολών ενός assembler υπολογιστή όπως το IBM PC δίνονται σε παρενθέσεις):

l εκτελώ αριθμητικές πράξεις (ADD και ADC - πρόσθεση και προσθήκη με μεταφορά, SUB και SBB - αφαίρεση και αφαίρεση με δάνειο, MUL και IMUL - πολλαπλασιασμοί ανυπόγραφων και προσημειωμένων, DIV και IDIV - ανυπόγραφες και υπογεγραμμένες διαιρέσεις, CMP - συγκρίσεις κ.λπ.) ;

l εκτέλεση λογικών πράξεων (OR, AND, NOT, XOR, TEST, κ.λπ.)

l μεταφορά δεδομένων (MOV - αποστολή, XCHG - ανταλλαγή, IN - είσοδος στον μικροεπεξεργαστή, OUT - απόσυρση από τον μικροεπεξεργαστή κ.λπ.)

l μεταφορά ελέγχου (διακλαδώσεις προγράμματος: JMP - διακλάδωση χωρίς όρους, CALL - κλήση διαδικασίας, RET - επιστροφή από τη διαδικασία, J* - κλάδος υπό όρους, LOOP - έλεγχος βρόχου κ.λπ.)

l Επεξεργασία συμβολοσειρών χαρακτήρων (MOVS - μεταφορές, CMPS - συγκρίσεις, LODS - λήψεις, SCAS - σαρώσεις. Αυτές οι εντολές χρησιμοποιούνται συνήθως με ένα πρόθεμα (τροποποιητής επανάληψης) · REP.

l διακοπές προγράμματος (INT - διακοπές λογισμικού, INTO - διακοπές υπό όρους σε υπερχείλιση, IRET - επιστροφή από διακοπή).

l Έλεγχος μικροεπεξεργαστή (ST* και CL* - ρύθμιση και διαγραφή σημαιών, HLT - διακοπή, ΑΝΑΜΟΝΗ - αναμονή, NOP - αδράνεια κ.λπ.).

Μια πλήρης λίστα εντολών assembler μπορεί να βρεθεί στα έργα.

Εντολές μεταφοράς δεδομένων

l MOV dst, src - μεταφορά δεδομένων (μετακίνηση - μετακίνηση από src σε dst).

Μεταφορές: ένα byte (εάν το src και το dst είναι σε μορφή byte) ή μία λέξη (εάν το src και το dst είναι σε μορφή word) μεταξύ καταχωρητών ή μεταξύ καταχωρητή και μνήμης και εγγράφει μια άμεση τιμή σε έναν καταχωρητή ή μνήμη.

Οι τελεστές dst και src πρέπει να έχουν την ίδια μορφή - byte ή λέξη.

Το Src μπορεί να είναι τύπου: r (register) - register, m (memory) - memory, i (impeance) - άμεση τιμή. Το Dst μπορεί να είναι τύπου r, m. Οι τελεστές δεν μπορούν να χρησιμοποιηθούν σε μία εντολή: rsegm μαζί με i; δύο τελεστές τύπου m και δύο τελεστές τύπου rsegm). Ο τελεστής i μπορεί επίσης να είναι μια απλή έκφραση:

mov AX, (152 + 101B) / 15

Η αξιολόγηση της έκφρασης πραγματοποιείται μόνο κατά τη μετάφραση. Οι σημαίες δεν αλλάζουν.

l PUSH src - βάζοντας μια λέξη στη στοίβα (ώθηση - σπρώξτε μέσα? σπρώξτε στη στοίβα από το src). Σπρώχνει τα περιεχόμενα του src στην κορυφή της στοίβας - οποιονδήποτε καταχωρητή 16 bit (συμπεριλαμβανομένου τμήματος) ή δύο θέσεις μνήμης που περιέχουν μια λέξη 16 bit. Οι σημαίες δεν αλλάζουν.

l POP dst - εξαγωγή λέξης από τη στοίβα (pop - pop; μέτρηση από τη στοίβα σε dst). Αφαιρεί μια λέξη από την κορυφή της στοίβας και την τοποθετεί σε dst - οποιονδήποτε καταχωρητή 16-bit (συμπεριλαμβανομένου τμήματος) ή δύο θέσεις μνήμης. Οι σημαίες δεν αλλάζουν.

Εργασία μαθήματος

Θέμα "Προγραμματισμός συστήματος"

Θέμα 4: "Επίλυση προβλημάτων για διαδικασίες"

Επιλογή 2

ΚΡΑΤΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΝΑΤΟΛΙΚΗΣ ΣΙΒΗΡΗΣ

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

____________________________________________________________________

ΤΕΧΝΟΛΟΓΙΚΟ ΚΟΛΥΓΕΙΟ

ΤΟ ΕΡΓΟ

για εργασία διάρκειας

Πειθαρχία:
Θέμα: Επίλυση προβλημάτων για διαδικασίες
Καλλιτέχνης: Glavinskaya Arina Alexandrovna
Επικεφαλής: Sesegma Viktorovna Dambaeva
Σύντομη περίληψη της εργασίας: η μελέτη υπορουτίνων στη γλώσσα Assembly,
επίλυση προβλημάτων με χρήση υπορουτίνων
1. Θεωρητικό μέρος: Βασικές πληροφορίες για τη γλώσσα assembly (σετ
εντολές κ.λπ.), Οργάνωση υποπρογραμμάτων, Τρόποι μετάβασης σε παραμέτρους
σε υπορουτίνες
2. Πρακτικό μέρος: Αναπτύξτε δύο υπορουτίνες, η μία από τις οποίες μετατρέπει οποιοδήποτε δεδομένο γράμμα σε κεφαλαία (συμπεριλαμβανομένων των ρωσικών γραμμάτων) και η άλλη μετατρέπει το γράμμα σε πεζό.
μετατρέπει οποιοδήποτε δεδομένο γράμμα σε κεφαλαίο και το άλλο μετατρέπει το γράμμα σε πεζό.
μετατρέπει ένα γράμμα σε πεζό.
Χρονοδιάγραμμα του έργου σύμφωνα με το χρονοδιάγραμμα:
1. Θεωρητικό μέρος - 30% την εβδομάδα 7.
2. Πρακτικό μέρος - 70% στις 11 εβδομάδες.
3. Προστασία - 100% στις 14 εβδομάδες.
Απαιτήσεις σχεδιασμού:
1. Το εκκαθαριστικό και το επεξηγηματικό σημείωμα του έργου του μαθήματος πρέπει να υποβληθεί στο
ηλεκτρονικά και έντυπα αντίγραφα.
2. Ο όγκος της έκθεσης πρέπει να είναι τουλάχιστον 20 δακτυλόγραφες σελίδες, εξαιρουμένων των παραρτημάτων.
3. Το RPP καταρτίζεται σύμφωνα με το GOST 7.32-91 και υπογράφεται από τον επικεφαλής.

προϊστάμενος εργασίας __________________

Εκτελεστής __________________

Ημερομηνία έκδοσης " 26 " Σεπτέμβριος 2017 ΣΟΛ.


Εισαγωγή. 2

1.1 Βασικές πληροφορίες για τη γλώσσα assembly. 3

1.1.1 Σετ εντολών. 4

1.2 Οργάνωση υπορουτίνων σε γλώσσα assembly. 4

1.3 Μέθοδοι μεταβίβασης παραμέτρων σε υπορουτίνες. 6

1.3.1 Διέλευση παραμέτρων μέσω καταχωρητών.. 6

1.3.2 Διέλευση παραμέτρων μέσω της στοίβας. 7

2 ΠΡΑΚΤΙΚΟ ΕΝΟΤΗΤΑ.. 9

2.1 Δήλωση του προβλήματος. εννέα

2.2 Περιγραφή της λύσης του προβλήματος. εννέα

2.3 Δοκιμή του προγράμματος.. 7

Συμπέρασμα. 8

Παραπομπές.. 9


Εισαγωγή

Είναι γνωστό ότι ο προγραμματισμός στη γλώσσα Assembly είναι δύσκολος. Όπως γνωρίζετε, υπάρχουν πολλές διαφορετικές γλώσσες τώρα υψηλό επίπεδο, που σας επιτρέπουν να ξοδεύετε πολύ λιγότερη προσπάθεια κατά τη σύνταξη προγραμμάτων. Φυσικά, τίθεται το ερώτημα πότε ένας προγραμματιστής μπορεί να χρειαστεί να χρησιμοποιήσει το Assembler όταν γράφει προγράμματα. Επί του παρόντος, υπάρχουν δύο τομείς όπου η χρήση της γλώσσας assembly είναι δικαιολογημένη και συχνά απαραίτητη.

Πρώτον, αυτά είναι τα λεγόμενα προγράμματα συστημάτων που εξαρτώνται από τη μηχανή, συνήθως ελέγχουν διάφορες συσκευές υπολογιστή (τέτοια προγράμματα ονομάζονται προγράμματα οδήγησης). Αυτά τα προγράμματα συστήματος χρησιμοποιούν ειδικές οδηγίες μηχανής που δεν χρειάζεται να χρησιμοποιούνται συνήθως (ή, όπως λένε, εφαρμοσμένος) προγράμματα. Αυτές οι εντολές είναι αδύνατο ή πολύ δύσκολο να καθοριστούν σε μια γλώσσα υψηλού επιπέδου.

Ο δεύτερος τομέας εφαρμογής του Assembler σχετίζεται με τη βελτιστοποίηση της εκτέλεσης του προγράμματος. Πολύ συχνά, προγράμματα μεταφραστών (μεταγλωττιστές) από γλώσσες υψηλού επιπέδου παράγουν ένα πολύ αναποτελεσματικό πρόγραμμα γλώσσας μηχανής. Αυτό ισχύει συνήθως για προγράμματα υπολογιστικής φύσης, στα οποία εκτελείται τις περισσότερες φορές ένα πολύ μικρό τμήμα του προγράμματος (περίπου 3-5%) (ο κύριος βρόχος). Για την επίλυση αυτού του προβλήματος, μπορούν να χρησιμοποιηθούν τα λεγόμενα πολυγλωσσικά συστήματα προγραμματισμού, τα οποία σας επιτρέπουν να γράφετε μέρη του προγράμματος σε διαφορετικές γλώσσες. Συνήθως, το κύριο μέρος του προγράμματος είναι γραμμένο σε γλώσσα προγραμματισμού υψηλού επιπέδου (Fortran, Pascal, C, κ.λπ.), και τα χρονικά κρίσιμα τμήματα του προγράμματος είναι γραμμένα σε Assembler. Σε αυτήν την περίπτωση, η ταχύτητα ολόκληρου του προγράμματος μπορεί να αυξηθεί σημαντικά. Αυτός είναι συχνά ο μόνος τρόπος για να πετύχετε ένα πρόγραμμα να παράγει αποτελέσματα σε εύλογο χρονικό διάστημα.

Σκοπός αυτής της εργασίας είναι η απόκτηση πρακτικών δεξιοτήτων στον προγραμματισμό σε γλώσσα assembly.

Εργασιακά καθήκοντα:

1. Να μελετήσει τις βασικές πληροφορίες για τη γλώσσα Assembler (τη δομή και τα στοιχεία του προγράμματος στο Assembler, τη μορφή των εντολών, την οργάνωση των υπορουτινών κ.λπ.).

2. Να μελετήσει τους τύπους των λειτουργιών bit, τη μορφή και τη λογική των εντολών λογικής assembler.

3. Λύστε ένα μεμονωμένο πρόβλημα για τη χρήση υπορουτίνων στο Assembler.

4.. Διατυπώστε ένα συμπέρασμα για την εργασία που έγινε.

1 ΘΕΩΡΗΤΙΚΗ ΕΝΟΤΗΤΑ

Βασικά στοιχεία της γλώσσας συναρμολόγησης

Η Assembler είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου που είναι μια μορφή για τη σύνταξη εντολών μηχανής που είναι βολική για την ανθρώπινη αντίληψη.

Οι εντολές της γλώσσας συναρμολόγησης αντιστοιχούν ένα προς ένα στις εντολές του επεξεργαστή και, στην πραγματικότητα, αντιπροσωπεύουν μια βολική συμβολική μορφή σημειογραφίας (μνημονικός κώδικας) των εντολών και των ορισμάτων τους. Η γλώσσα Assembly παρέχει επίσης βασικές αφαιρέσεις προγραμματισμού: σύνδεση τμημάτων ενός προγράμματος και δεδομένων μέσω ετικετών με συμβολικά ονόματα και οδηγίες.

Οι οδηγίες συναρμολόγησης σάς επιτρέπουν να συμπεριλάβετε μπλοκ δεδομένων (που περιγράφονται ρητά ή διαβάζονται από ένα αρχείο) στο πρόγραμμα. επαναλάβετε ένα συγκεκριμένο θραύσμα καθορισμένο αριθμό φορές. μεταγλωττίστε το θραύσμα σύμφωνα με την συνθήκη. ορίστε τη διεύθυνση εκτέλεσης του τμήματος, αλλάξτε τις τιμές της ετικέτας κατά τη μεταγλώττιση. χρήση μακροεντολών με παραμέτρους κ.λπ.

Πλεονεκτήματα και μειονεκτήματα

Η ελάχιστη ποσότητα πλεονάζοντος κώδικα (χρήση λιγότερων εντολών και προσβάσεων στη μνήμη). Κατά συνέπεια - μεγαλύτερη ταχύτητα και μικρότερο μέγεθος προγράμματος.

μεγάλες ποσότητες κώδικα, μεγάλος αριθμός πρόσθετων μικρών εργασιών.

Κακή αναγνωσιμότητα του κώδικα, δυσκολία υποστήριξης (debugging, προσθήκη χαρακτηριστικών).

· τη δυσκολία εφαρμογής παραδειγμάτων προγραμματισμού και οποιωνδήποτε άλλων κάπως περίπλοκων συμβάσεων, την πολυπλοκότητα της κοινής ανάπτυξης.

Λιγότερες διαθέσιμες βιβλιοθήκες, χαμηλή συμβατότητά τους.

· Άμεση πρόσβαση στο υλικό: θύρες εισόδου-εξόδου, ειδικοί καταχωρητές επεξεργαστών.

μέγιστη "τοποθέτηση" για την επιθυμητή πλατφόρμα (χρήση ειδικών οδηγιών, τεχνικά χαρακτηριστικά του "σίδερου").

· μη φορητότητα σε άλλες πλατφόρμες (εκτός από δυαδικές συμβατές).

Εκτός από τις οδηγίες, το πρόγραμμα μπορεί να περιέχει οδηγίες: εντολές που δεν μεταφράζονται απευθείας σε οδηγίες μηχανής, αλλά ελέγχουν τη λειτουργία του μεταγλωττιστή. Το σύνολο και η σύνταξή τους ποικίλλουν σημαντικά και δεν εξαρτώνται από την πλατφόρμα υλικού, αλλά από τον μεταγλωττιστή που χρησιμοποιείται (δημιουργώντας διαλέκτους γλωσσών στην ίδια οικογένεια αρχιτεκτονικών). Ως σύνολο οδηγιών, μπορούμε να διακρίνουμε:

Ορισμός δεδομένων (σταθερές και μεταβλητές).

διαχείριση της οργάνωσης του προγράμματος στη μνήμη και των παραμέτρων του αρχείου εξόδου.

Ρύθμιση της λειτουργίας μεταγλωττιστή.

· κάθε είδους αφαιρέσεις (δηλαδή, στοιχεία γλωσσών υψηλού επιπέδου) - από το σχεδιασμό διαδικασιών και συναρτήσεων (για την απλούστευση της εφαρμογής του παραδείγματος διαδικαστικού προγραμματισμού) έως δομές υπό όρους και βρόχους (για το παράδειγμα δομικού προγραμματισμού).

μακροεντολές.

Σετ εντολών

Οι τυπικές οδηγίες γλώσσας assembly είναι:

Εντολές μεταφοράς δεδομένων (mov, κ.λπ.)

Αριθμητικές εντολές (add, sub, imul, κ.λπ.)

Λογικές και bitwise πράξεις (ή, και, xor, shr, κ.λπ.)

Εντολές για τη διαχείριση της εκτέλεσης του προγράμματος (jmp, loop, ret, κ.λπ.)

Εντολές κλήσης διακοπής (μερικές φορές αναφέρονται ως εντολές ελέγχου): ενθ

Εντολές I/O σε θύρες (μέσα, έξοδος)

Οι μικροελεγκτές και οι μικροϋπολογιστές χαρακτηρίζονται επίσης από εντολές που εκτελούν ελέγχους και μεταβάσεις ανά συνθήκη, για παράδειγμα:

· jne - άλμα αν δεν είναι ίσο.

· jge - άλμα εάν είναι μεγαλύτερο ή ίσο με .

Συνεχίζοντας το θέμα:
Μόντεμ

Το MatLab παρουσιάζει όλα τα δεδομένα ως πίνακες. Είναι πολύ σημαντικό να κατανοήσετε πώς να χρησιμοποιείτε σωστά τους πίνακες. Χωρίς αυτό, η αποτελεσματική εργασία στο MatLab είναι αδύνατη, ιδίως...

Νέα άρθρα
/
Δημοφιλής