Αρχιτεκτονική-Ι Ενότητα 5: H Γλώσσα ASSEMBLY Ιωάννης Έλληνας Τμήμα Η/ΥΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
Advertisements

ΑΤΕΙ ΣΕΡΡΩΝ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Γενετική Εξέλιξη Μικροοργανισμών Λογισμικού Θέμις Παναγιωτόπουλος, Χαρίλαος Καλογήρου, Αντώνιος Πετρόπουλος, Διονύσης Δημόπουλος Εργαστήριο Τεχνολογίας.
Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής:
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές.
1 Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Φώτης Βαρζιώτης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
§ 40. Электр кедергісінің температураға тәуелділігі. Асқын өткізгіштік
Αρχιτεκτονική-Ι Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086 Ιωάννης Έλληνας Τμήμα Η/ΥΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού.
Εσωτερικές Ηλεκτρικές Εγκαταστάσεις Ι Ενότητα 4: Υλικά μιας Ε.Η.Ε. Σταύρος Καμινάρης Τμήμα Ηλεκτρολόγων Μηχανικών ΤΕ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό.
ΧΜ380: ΕΠΙΣΤΗΜΗ ΥΛΙΚΩΝ 1 Ενότητα 4: κρυσταλλογραφικές διευθύνσεις και επίπεδα Διδάσκων: Γεώργιος Ν. Αγγελόπουλος, καθηγητής Επιμέλεια: Πήττας Κωνσταντίνος,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ Τμήμα Ηλεκτρολογών Μηχανικών και Τεχνολογίας Υπολογιστών Προηγμένοι Μικροεπεξεργαστές Καθηγητής Σταύρος Α. Κουμπιάς.
Γενική Οικονομική Ιστορία Ενότητα # 3: Οι μεγάλες αυτοκρατορίες Διδάσκων: Ιωάννα-Σαπφώ Πεπελάση Τμήμα: Οικονομικής Επιστήμης.
Ασκήσεις Επαναληπτικές ασκήσεις στο μάθημα Πληροφορική 1 1.
Τραπεζικό σύστημα Μετά την επιβολή των ελέγχων στην κίνηση κεφαλαίων, οι ανάγκες χρηματοδότησης από την ΕΚΤ σταδιακά περιορίζονται Η αναβάθμιση της πιστοληπτικής.
Γενική Οικονομική Ιστορία Ενότητα # 2: Η Ευρώπη πριν από τη Βιομηχανική Επανάσταση Διδάσκων: Ιωάννα-Σαπφώ Πεπελάση Τμήμα: Οικονομικής Επιστήμης.
Ποιοτικός Έλεγχος Πρώτων Υλών Ενότητα 3: Ποιοτικός Έλεγχος στα Έπιπλα Γεώργιος Νταλός, Καθηγητής, Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου και Επίπλου, T.E.I.
1.  Τα κύματα δημιουργούνται όταν ένα σύστημα διαταράσσεται από την κατάσταση ισορροπίας και η ενέργεια ταξιδεύει από μια περιοχή του συστήματος σε.
1 Πληροφορική Ι Ενότητα 4 : Πράξεις με bits Δρ. Γκόγκος Χρήστος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Προγραμματιζόμενοι Λογικοί Ελεγκτές (P.L.C.)
Καθηγητής Σταύρος Α. Κουμπιάς
Ο Υπαλληλικός Κώδικας του 1951
Η μονιμότητα των δημοσίων υπαλλήλων
Ενότητα 5 : Οργάνωση Υλικού Υπολογιστών Δρ. Γκόγκος Χρήστος
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Οι διοικητικές εκκαθαρίσεις
INSTRUCTIONS LANGUAGE OF THE MACHINE
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι Ιωάννης Έλληνας Τμήμα Η/ΥΣ
Κινητές Επικοινωνίες Ενότητα #8: Πολλαπλή πρόσβαση Γεώργιος Καρέτσος
Αγριάνη Νομού Έβρου Χουσεΐν Χατζή Χαλήλ ΕΚΠΑΙΔΕΥΤΙΚΗ ΟΜΑΔΑ:
Προτασιακή λογική.
Λογιστική Κόστους Ενότητα # 1: Εισαγωγή Διδάσκουσα: Σάνδρα Κοέν
Εισαγωγή στους Η/Υ Ενότητα 10: Μέθοδος συμπληρώματος Ιωάννης Σταματίου
Ενότητα 7: Σύνθετα Παραδείγματα Προγραμματισμού
ΗΜΥ 007 – Τεχνολογία Πληροφορίας Διάλεξη 5
ΕΚΡΕΜΜΕΣ.
Ψηφιακή Σχεδίαση εργαστήριο
Τεχνολογία Πολυμέσων Ενότητα # 17: Πρωτόκολλα μετάδοσης
Αριθμητική για υπολογιστές
Το να γίνεις ευτυχισμένος
Ενότητα 10: Άτμιση του Ξύλου.
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ. Ε
Θέματα Φεβρουαρίου
Σχεδιασμός με αναζήτηση στο χώρο πλάνων
Αναπαραγωγικό σύστημα και υγεία
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ – Α’ Τάξη ΓΕ.Λ
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Επιχειρησιακές Επικοινωνίες
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
ΨΗΦΙΑΚΟΣ ΚΟΣΜΟΣ 4ο ΓΥΜΝΑΣΙΟ ΑΓΡΙΝΙΟΥ.
Αρχιτεκτονική ΙΑ-64 Προηγμένες Αρχιτεκτονικές Υπολογιστών
Εργαστηριακές ασκήσεις με τον μικροελεγκτή PIC
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
מכטרוניקה אלקטרוניקה ספרתית סתיו תשס"ה 2004/2005
محاضر بجامعة السودان للعلوم والتكنولوجيا
النمو السكانى والاسقاطات السكانية
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Увод у организацију и архитектуру рачунара 2
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Η επιγραφή στο πίσω θυρόφυλλο αναγράφει: Η επιγραφή στο μεγάλο κομμάτι αναγράφει τα εξής : (με κόκκινο τα αποκαταστημένα τμήματα της επιγραφής) 
Γυμνάσιο Νέας Κυδωνίας
Αγαπημένο μου παιδί....
ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ.
Principles of Computers 19th Lecture
Κτηνοτροφική εγκατάσταση είναι το ζωικό κεφάλαιο και το σύνολο των περιφραγμένων εγκαταστάσεων, κτηρίων, γηπέδων και αποθηκών, στις οποίες περιλαμβάνονται.
Μεταγράφημα παρουσίασης:

Αρχιτεκτονική-Ι Ενότητα 5: H Γλώσσα ASSEMBLY Ιωάννης Έλληνας Τμήμα Η/ΥΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Στην ενότητα αυτή εξετάζονται οι τρόποι διευθυνσιοδότησης, οι ομάδες εντολών του μικροεπεξεργαστή 8086 και ο τρόπος γραφής ενός προγράμματος σε γλώσσα Assembly. 4

Περιεχόμενα ενότητας Τρόποι διευθυνσιοδότησης Άμεσος Απευθείας Έμμεσος με καταχωρητή Με καταχωρητή βάσης και μετατόπιση Με καταχωρητή δείκτη Με καταχωρητή βάσης και δείκτη Τύποι εντολών Εντολές μεταφοράς δεδομένων Εντολές αριθμητικών πράξεων Διορθωτικές εντολές αριθμητικών πράξεων Εντολές λογικών πράξεων Εντολές ολίσθησης Εντολές περιστροφής Εντολές διακλάδωσης Εντολές διακλάδωσης με προϋποθέσεις Εντολές συμβολοσειρών Εντολές ελέγχου επεξεργαστή Πηγαίο πρόγραμμα Ψευδοεντολές Παράδειγμα διαδικασίας 5

Τρόποι Διευθυνσιοδότησης Συνοπτικά 6 Άμμεσος (Immediate) – MOV AX, 1234 Με καταχωρητή (Register) – MOV AX, DS Απευθείας (Direct) – MOV AX, [1234h] Έμμεσος με καταχωρητή (Register Indirect) – MOV AX, [BX] Με καταχωρητή βάσης και μετατόπιση (Base relative) – MOV AX, [BX+2] Με καταχωρητή δείκτη (Direct indexed) – MOV AX, [SI+2] Με καταχωρητή βάσης και δείκτη (Base indexed) – MOV AX, BX[SI]

Τα δεδομένα βρίσκονται μέσα στην εντολή Ο επεξεργαστής διαβάζει τον κωδικό εντολής και τοποθετεί τα δεδομένα που ακολουθούν στον κατάλληλο καταχωρητή Τα δεδομένα μπορεί να έχουν μήκος 8 ή 16bit το οποίο καθορίζεται στον κωδικό εντολής και από το μήκος του καταχωρητή προορισμού Reg[dst]  Imm 7 Άμεσος Immediate

Άμεσος Παραδείγματα MOV AX, 1000h ; AH  10h, AL  00h MOV AX, 320 ; AH  b (01h) ; AL  b (40h) ADD AL, 10 ; AL  AL + 0Ah MOV AL, -40 ; AL  b (D8h) 8

Με καταχωρητή Register Direct (1 ) 9 Τα δυο ορίσματα της εντολής είναι καταχωρητές του επεξεργαστή Ο καταχωρητής πηγής και ο καταχωρητής προορισμού έχουν πάντα το ίδιο μήκος σε bits Η εντολή αποτελείται μόνο από τον κωδικό εντολής και δεν έχει άλλα bytes που να την αποτελούν Το περιεχόμενο του καταχωρητή πηγής αντιγράφεται στον καταχωρητή προορισμού (μεταφορά δεδομένων) Reg[dst]  Reg[src]

Με καταχωρητή Register Direct (2) 10 ΜΟV DL, AH 8Eh Word 4D23h D8h 23h 4Dh 23h 4D23h 12440h 4Dh Byte 4Dh

Με καταχωρητή - Παραδείγματα 11 MOV DS, AX; DS  AX MOV DL, AL; DL  AL MOV AH, AL; AH  AL MOV BL, AH; BL  AH MOV AX, CX; AX  CX

Απευθείας Direct Η εντολή περιέχει μια 16bit λογική διεύθυνση Η λογική διεύθυνση συνδυάζεται με τη βάση του τμήματος που χρησιμοποιείται για να σχηματίσει τη φυσική διεύθυνση Εξ ορισμού, ο καταχωρητής τμήματος είναι ο DS Τα 8 ή 16bit δεδομένα που ορίζει ο κωδικός εντολής μεταφέρονται από ή προς τον καταχωρητή που ορίζει η εντολή Reg[r] = [ SegReg*16 + Imm + (0/1) ] 12

Απευθείας Direct 13 ΜΟV AX, [1001h] 08h 23h A1h 01h01h 10h 57781h + 01h01h 10h 5678h 08h 23h Word 2308h

Απευθείας Παραδείγματα 14 MOV AX, [1000h]; AL  DS:[1000h], ; AH  DS:[1001h] MOV AX, [Table]; AL  DS:[Table], ; AH  DS:[Table+1] MOV [1000h], AL ; DS:[1000h]  AL MOV [1000h], AX ; DS:[1000h]  AL, ; DS:[1001h]  AH

Έμμεσος με καταχωρητή Register Indirect (1) Η 16bit λογική διεύθυνση μετατόπισης βρίσκεται αποθηκευμένη σε κάποιον από τους καταχωρητές SI, DI, BX, BP, ο οποίος εμπεριέχεται στον κωδικό εντολής Η τιμή μετατόπισης προστίθεται κάθε φορά στον εξ ορισμού καταχωρητή τμήματος για τον χρησιμοποιούμενο καταχωρητή μετατόπισης ή με καταχωρητή τμήματος προκαθορισμένο από το χρήστη – DS: BX, SI, DI – SS: BP Reg[dst]  [ SegReg * 16 + Reg[offset] + (0/1) ] [ SegReg * 16 + Reg[offset] + (0/1) ]  Reg[src] 15

Έμμεσος με καταχωρητή Register Indirect (2) 16 ΜΟV DL, AH 89h Word 4D23h 07h 23h 4Dh 23h ΜΟV [BX], AX 4Dh 10h 04h 57784h

Έμμεσος με καταχωρητή Παραδείγματα MOV [BX], AL; DS:[BX]  AL MOV SS:[BX], AL; SS:[BX]  AL MOV [DI], AX; DS:[DI]  AX MOV AH, [SI]; AH  DS:[SI] MOV AH, SS:[SI]; AH  SS:[SI] MOV AX, [BP]; AX  SS:[BP] MOV AX, DS:[BP]; AX  DS:[BP] MOV AX, [BX]; AX  DS:[BX] 17

Με καταχωρητή βάσης & μετατόπιση Base Relative Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου του καταχωρητή βάσης BX ή BP, και μια ακέραια σταθερή προσημασμένη τιμή μετατόπισης Η μετατόπιση μπορεί να είναι των 8bits (-128 έως + 127) ή των 16bits ( έως ) Ο εξ ορισμού καταχωρητής τμήματος είναι ο DS για τον BX και ο SS για τον BP Reg[dst]  [ SegReg * 16 + (BX ή BP) + offset + (0/1) ] [ SegReg * 16 + (BX ή BP) + offset + (0/1) ]  Reg[dst] 18

Με καταχωρητή βάσης & μετατόπιση Παραδείγματα MOV [BX + 6], AL ; DS:[BX h]  AL MOV [BX + 0Ah], AX ; DS:[BX + 000Ah]  AX MOV SS:[BX + FFh], CX ; SS:[BX + 00FFh]  CX MOV AH, [BP + 100]; AH  SS:[BP h] MOV AX, [BP-3]; AX  SS:[BP + FFFDh] MOV AX, [BX-100] ; AX  DS:[BX + FF9Ch] 19

Με καταχωρητή δείκτη Indexed Relative Παρόμοια με τη διευθυνσιοδότηση με καταχωρητή βάσης και μετατόπιση H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου ενός εκ των καταχωρητών δείκτη SI ή DI και πιθανώς μια ακέραια σταθερή προσημασμένη τιμή μετατόπισης (8 ή 16bits) Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη Reg[dst]  [ SegReg * 16 + (SI ή DI) + offset + (0/1) ] [ SegReg * 16 + (SI ή DI) + offset + (0/1) ]  Reg[dst] 20

Με καταχωρητή δείκτη Παραδείγματα MOV AL, [SI + 6]; AL  DS:[SI h] MOV ES:[DI + 100h], AL ; ES:[DI h]  AL MOV [SI ], AX; DS:[SI + 61A8h]  AL, ; DS:[SI + 61A9h]  AH MOV [SI - 68], AX; DS:[SI + FFBCh]  AL, ; DS:[SI + FFBDh]  AH ADD AL, ES:[DI + 10] ; AL  AL + ES:[DI + 000Ah] 21

Με καταχωρητή βάσης & δείκτη Based Indexed Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου ενός εκ των καταχωρητών βάσης BX ή BP, ενός εκ των καταχωρητών δείκτη SI ή DI και την πιθανή μετατόπιση που δίνεται με την εντολή Τα περιεχόμενα των χρησιμοποιούμενων καταχωρητών θεωρούνται ακέραιοι προσημασμένοι αριθμοί των 16bits Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη Reg[dst]  [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ] [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ]  Reg[dst] 22

Με καταχωρητή βάσης & δείκτη Παραδείγματα (1) MOV DX, [BX + DI]; DH  DS:[BX + DI + 1], DL  DS:[BX + DI] MOV DX, [BX + SI]; DH  DS:[BX + SI + 1], DL  DS:[BX + SI] MOV DX, [BP + DI]; DH  DS:[BP + DI + 1], DL  DS:[BP + DI] MOV DX, SS:[BP + DI]; DH  SS:[BP + DI + 1], ; DL  SS:[BP + DI] MOV DX, [BP + SI]; DH  DS:[BP + SI + 1], DL  DS:[BP + SI] MOV [BP + DI], AX; DS:[BP + DI + 1]  DH, DS:[BP + DI]  DL MOV SS:[BP + DI], AX; SS:[BP + DI + 1]  DH, ; SS:[BP + DI]  DL 23

Με καταχωρητή βάσης & δείκτη Παραδείγματα (2) 24

Τύποι εντολών Μεταφοράς δεδομένων Αριθμητικών πράξεων Χειρισμού bit Διακλάδωσης Διακλάδωσης με προϋποθέσεις Συμβολοσειρών Ελέγχου επεξεργαστή 25

Εντολές Μεταφοράς Δεδομένων (1) 1. mov dst,src;dst  src (καταχωρητές ή μνήμη – όχι και τα 2 μνήμη) mov ax,bx mov si,al mov cl,dl mov cs,ax mov si,di mov [1000h],[bx] mov ax,1234h mov ds,1234h mov ds,ax mov ds,es mov [bx],ax mov bl,[si] mov [1000h],cx 26

Εντολές Μεταφοράς Δεδομένων (2) 2. push src ; (sp-2)  src Low, (sp-1)  src High pop dst ; dst Low  (sp), dst High  (sp+1), sp  sp+2 mov sp,0000h mov ax,1234h push ax pop bx; bl=34 h, bh=12 h, sp=0000 h push [bx]; (sp-2)  [bx], (sp-1)  [bx+1 push al 27

Εντολές Μεταφοράς Δεδομένων (3) 3. xchg r1,r2; Ανταλλαγή μεταξύ καταχωρητών, καταχωρητή και μνήμης xchg al,blxchg ax,bl xchg ax,dxxchg [bx],[1000h] xchg al,[bx] xchg ax,[1000h] xchg [bx+si],cx xchg si,di 28

Εντολές Μεταφοράς Δεδομένων (4) 4. in acc,port ; al ή ax  (διεύθυνση πόρτας) – Άμεσος τρόπος ; al ή ax  (dx) – Έμμεσος τρόπος out port,acc ; (Διεύθυνση πόρτας)  al ή ax – Άμεσος τρόπος ; (dx)  al ή ax – Έμμεσος τρόπος in al,80h; al  (80h) mov dx,1000h in ax,dx; al  (1000h), ah  (1001h) out 82h,ax; (82h)  al, (83h)  ah out dx,al in bl,80h out dx,cx 29

Εντολές Μεταφοράς Δεδομένων (5) 5. lea dst,src; Μεταφέρει τη διεύθυνση μετατόπισης σε καταχωρητή lea bx, table; bx=1000h lea si, var; si=2000h 6. xlat; al  (ds:bx+al) lea bx, table mov ax,01h xlat; al  (1000h+01h), al=5Fh 30 00h 12h table=1000h var=2000h DS 5Fh

Εντολές Αριθμητικών Πράξεων (1) 1. add dst, src; dst  dst+src για 8 ή 16 bit adc dst,src; dst  dst+src+CF για 8 ή 16 bit add ax,bx add cl,dl add ax,[bx];ax=ax+[bx+1][bx] add [1000h],3;[1001h][1000h]= [1001h][1000h]+3 adc ax,5Fh;ax=ax+005Fh+CF 2. sub dst, src; dst  dst-src για 8 ή 16 bit sbb dst,src; dst  dst-src-CF για 8 ή 16 bit 31

Εντολές Αριθμητικών Πράξεων (2) 3. inc dst; dst  dst+1 dec dst; dst  dst-1 inc ax dec dl inc [bx]; by default [bx]=[bx]+1 dec [1000h] Σημείωση: 1) Δεν επηρεάζουν το CF. 2) Αν θέλουμε να αυξήσουμε/μειώσουμε λέξη στη μνήμη τότε πρέπει να χρησιμοποιούμε την εντολή σαν: inc word ptr [bx] ή dec word ptr [1000h]. 32

Εντολές Αριθμητικών Πράξεων (3) 4.cmp dst,src; Μεταβολή μόνο των σημαιών μετά την πράξη dst-src cmp ax,bx cmp ax,[bx] cmp [1000h],dl cmp ax,1000h 5.mul src; Πολλαπλασιασμός μη προσημασμένων αριθμών ; al*8 bits=ax (για bytes) ή ax*16 bits=dxax (για words) mov al,9;al=09 h mov bl,5;bl=05h mul bl;ax=al*bl=09h*05h=45d=002dh mul byte ptr [1000h] ;πολλ/σμός του al με το byte στη διεύθυνση ds:1000h mul 12h 33

Εντολές Αριθμητικών Πράξεων (4) 6.div src; Διαίρεση μη προσημασμένων αριθμών ; ax/8 bits=al (υπόλοιπο στον ah - για bytes) ή ; ax=dxax/16 bits (υπόλοιπο στον dx - για words) mov ax,45;ax=002dh mov bl,5;bl=05h div bl;al=2dh/05h=45d/5d=09d=09h, ah=00 mov ax,46;ax=002eh mov bl,5;bl=05h div bl;al=2dh/05h=45d/5d=09d=09h, ah=00 div 12h 34

Διορθωτικές Εντολές Αριθμητικών Πράξεων (1) 1.daa; Decimal Adjust al after Addition ; Χρησιμοποιείται μετά από πρόσθεση 2 packed BCD για επαναφορά του αποτελέσματος σε BCD μορφή mov al,19h mov bl,15h add al,bl; al=2eh (θέλουμε αποτέλεσμα 34h, δηλαδή δεκαδικής εμφάνισης) daa; al=2eh 6 24 και AF=1 +1 ; al=34h 35

Διορθωτικές Εντολές Αριθμητικών Πράξεων (2) 2.das; Decimal Adjust al after Subtraction ; Χρησιμοποιείται μετά από αφαίρεση 2 packed BCD για επαναφορά του αποτελέσματος σε BCD μορφή mov al,32h mov bl,16h sub al,bl; al=1ch (θέλουμε αποτέλεσμα 16h, δηλαδή δεκαδικής εμφάνισης) das; al=1ch και AF=0 - 0 ; al=16h 36

Διορθωτικές Εντολές Αριθμητικών Πράξεων (3) 3.aaa; ASCII Adjust al after Addition ; Χρησιμοποιείται μετά από πρόσθεση 2 unpacked BCD για επαναφορά του αποτελέσματος σε BCD μορφή mov ax,0109h mov bx,0105h add ax,bx; ax=020eh (θέλουμε αποτέλεσμα 0304h, δηλαδή δεκαδικής εμφάνισης) aaa; al=0eh 6 04 και ah=ah+1  ax=0304h mov ax,15; ax=000fh aaa;ax=0105h 37

Διορθωτικές Εντολές Αριθμητικών Πράξεων (4) 4.aas; ASCII Adjust al after Subtraction ; Χρησιμοποιείται μετά από αφαίρεση 2 unpacked BCD για επαναφορά του αποτελέσματος σε BCD μορφή mov ax,0305h mov bx,0009h sub ax,bx; ax=03fch (θέλουμε αποτέλεσμα 0206h, δηλαδή δεκαδικής εμφάνισης) aas; al=fch και ah=ah-1  ax=0206h mov ax,02ffh; ax=02ffh aas;ax=0109h (?) 38

Διορθωτικές Εντολές Αριθμητικών Πράξεων (5) 5.aam; ASCII Adjust ax after Multiplication ; Χρησιμοποιείται μετά από πολλ/σμό 2 unpacked BCD για επαναφορά του αποτελέσματος σε BCD μορφή.  ah=al/10, al=υπόλοιπο mov ax,0005h mov bx,0009h mul bx; dxax= d h (θέλουμε αποτέλεσμα 0405h, δηλαδή δεκαδικής; εμφάνισης) aam; ah=2dh/0ah=45d/10d=04h και al=05h  ax=

Διορθωτικές Εντολές Αριθμητικών Πράξεων (6) 6.aad; ASCII Adjust ax before Division ; Χρησιμοποιείταιπριν τη διαίρεση 2 unpacked BCD για τη μετατροπή του ax σε δυαδικό αριθμό.  ah=00h, al=ah*10+al mov ax,0207h mov bl,09h aad; ah=00h, al=02h*10+07=27d=1bh  ax=001bh div bl; 001bh/09h  al=03h,ah=00h  ax=0003h Σημείωση: Αν γίνει η διαίρεση div bl χωρίς να προηγηθεί η aad, το αποτέλεσμα είναι 39h. 40

Εντολές Λογικών Πράξεων and dst, src ; dst  dst src or dst, src ; dst  dst + src xor dst,src; dst  dst ʘ src not dst; dst  /dst test dst, src; Ενημερώνει τις σημαίες μετά την πράξη dst src χωρίς να αλλάξει τους καταχωρητές mov ax,1234h mov bx,5678h and ax,bx or ax,[bx] xor [1000h],bx not [bx]; Προσοχή στις αμφισημίες (byte ή word?) test ax,bx; ax bx = 1238h (ZF=0, CF=0, …) not ax; ax=edcb h 41

Εντολές Ολίσθησης (1) shl dst, cl; Λογική ολίσθηση αριστερά cl φορές sal dst, cl; Αριθμητική ολίσθηση αριστερά cl φορές - Ίδια με την προηγούμενη mov ax,1234h shl ax,8;ax=3400h sal ax,8;ax=3400h shl ax,4;ax=2340 Σημείωση: Κανονικά o αριθμός ολισθήσεων δηλώνεται από τον cl εκτός αν είναι 1 (επιτρέπεται shl al,1). Επειδή όμως ο emulator που χρησιμοποιούμε στο εργαστήριο δέχεται και τη δήλωση όποιασδήποτε αριθμητικής τιμής, γι’ αυτόν το λόγο μπορούμε να τον χρησιμοποιούμε. 42

Εντολές Ολίσθησης (2) shr dst, cl ; Λογική ολίσθηση δεξιά cl φορές sar dst, cl ; Αριθμητική ολίσθηση δεξιά cl φορές – Χρησιμοποιείται για ολίσθηση προσημασμένων αριθμών mov ax,fffa h; Ο ax περιέχει το αριθμό -6 sar ax,1; ax=fffd h  O ax περιέχει τον αριθμό -3 43

Εντολές Περιστροφής (1) rol dst, cl ; Περιστροφή αριστερά cl φορές rcl dst, cl ; Περιστροφή αριστερά μέσω κρατούμενου cl φορές mov ax, 1234h rol ax,8;ax=3412h rol ax,4;ax=2341h 44

Εντολές Περιστροφής (2) ror dst, cl ; Περιστροφή δεξιά cl φορές rcr dst, cl ; Περιστροφή δεξιά μέσω κρατούμενου cl φορές mov ax, 1234h ror ax,8;ax=3412h rol ax,4;ax=4123h 45

Εντολές Διακλάδωσης (1) jmp addr; short (-128 έως +127) ; near ( έως ) ή ενδοτμηματική ; far  jmp cs:addr ή διατμηματική loop addr; cx  cx-1 και πηγαίνει στο addr αν cx ≠ 0 call addr; near  Στο σωρό αποθηκεύεται ο ΙΡ της επόμενης εντολής ; far  Στο σωρό αποθηκεύεται ο CS και ο ΙΡ της επόμενης ; Εντολής 46

Εντολές Διακλάδωσης (2) int n; κλήση εξυπηρέτησης διακοπής λογισμικού ; Στο σωρό αποθηκεύονται οι σημαίες (2 bytes), ο CS (2 ; bytes) και ο IP (2 bytes) της επόμενης εντολής ret; Επιστροφή από την υπορουτίνα. Ανάκτηση από το σωρό των ; προηγούμενων δεδομένων και επιστροφή στην επόμενη εντολή της ; call addr. iret; Επιστροφή από την υπορουτίνα εξυπηρέτησης της ; διακοπής. Ανάκτηση από το σωρό των προηγούμενων ; δεδομένων και επιστροφή στην επόμενη εντολή της int n. 47

Εντολές Διακλάδωσης με προϋποθέσεις jg; Άλμα για μεγαλύτερο jge; Άλμα για μεγαλύτερο ή ίσο jl; Άλμα για μικρότεροΠροσημασμένοι jle; Άλμα για μικρότερο ή ίσο ja ; Άλμα για μεγαλύτερο jae ; Άλμα για μεγαλύτερο ή ίσο jb ; Άλμα για μικρότεροΜη Προσημασμένοι jbe ; Άλμα για μικρότερο ή ίσο jz/jnz; Άλμα για ισότητα/ανισότητα je/jne ; Άλμα για ισότητα/ανισότητα jc/jnc ; Άλμα εάν CF=1 ή CF=0 48

Εντολές Συμβολοσειρών (1) movsb/movsw; es:di  ds:si (byte/word) – si/di=si/di +/- 1 ή 2 (DF=0/1) lodsb/lodsw; al/ax  ds:si (byte/word) - si=si +/- 1 ή 2 (DF=0/1) stosb/stosw; es:di  al/ax (byte/word) - di=di +/- 1 ή 2 (DF=0/1) rep; Επανέλαβε την εντολή μέχρι cx=0 (π.χ. rep movsb) 49

Εντολές Συμβολοσειρών (2) cmpsb/cmpsw; Σύγκριση byte/word μεταξύ ds:si και es:di - si/di=si/di +/- 1 ή 2 scasb/scasw; al/ax <> es:di (byte/word) - di=di +/- 1 ή 2 (DF=0/1) repne/repnz; Επανάληψη της εντολής μέχρι cx=0 ή τα υπό σύγκριση στοιχεία ; δεν είναι ίσα repe/repz; Επανάληψη της εντολής μέχρι cx=0 ή τα υπό σύγκριση στοιχεία ; είναι ίσα 50

Εντολές Ελέγχου Επεξεργαστή stc; CF=1 clc; CF=0 std ; DF=1  ενέργεια εντολής συμβολοσειράς κατά φθίνουσες διευθύνσεις cld; DF=0  ενέργεια εντολής συμβολοσειράς κατά αύξουσες διευθύνσεις sti; IF=1  ενεργοποίηση του μηχανισμού διακοπών cli; IF=0  απενεργοποίηση του μηχανισμού διακοπών 51

Εναλλακτικό παράδειγμα πηγαίου αρχείου 52 Πηγαίο πρόγραμμα

Ψευδοεντολές (1) db – define byte  Ορισμός μεταβλητής μεγέθους 1 byte db 13h, 13, b, ’13’  περνάνε στη μνήμη  13h,0dh,13h,31h,33h dw – define word  Ορισμός μεταβλητής μεγέθους 2 bytes dw 1234h,1234,’1234’  περνάνε στη μνήμη  34h,12h, d2h,04h,31h,32h,33h,34h equ – Ορισμός σταθεράς factor equ 16; factor=10h 53

Ψευδοεντολές (2) end – Τέλος προγράμματος endp – Τέλος διαδικασίας offset – Υπολογίζει τη σχετική διεύθυνση (μετατόπιση) από τη φυσική διεύθυνση proc – Έναρξη υπορουτίνας ή διαδικασίας ptr – Δείκτης μνήμης που μαζί με το byte/word ορίζει το μέγεθος του δεδομένου 54

Πρόκειται για ένα παράδειγμα διαδικασίας. 55 Παράδειγμα διαδικασίας

Βιβλιογραφία 1.“ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ-Ο επεξεργαστής 8086”, Ι. Ν. Έλληνας, Π. Δ. Κεντερλής, ISBN: , Αθήνα Γ. Δ. Κόγιας, “Αρχιτεκτονική, Οργάνωση και Προγραμματισμός μικροϋπολογιστών”, Σύγχρονη Εκδοτική. 3.Κ. Ζ. Πεκμεστζή, “Συστήματα μικροϋπολογιστών”, Εκδόσεις Συμμετρία. 56

Τέλος Ενότητας