ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Αρχιτεκτονική Υπολογιστών

Στοιχεία από Assembly Γιώργος Μανής

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

1ο ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΑΘΗΜΑ

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ.

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης:

Σημειώσεις για τον 80x86

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Πρόχειρες Σημειώσεις. Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Οδηγός Εκμάθησης στην Assembly

Αρχιτεκτονική Υπολογιστών

0100: MAR ADR; wait;mdr DB; SCR L DH+MDR+CY

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ

Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο Σύντομη Επανάληψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Συστήματα Μικροϋπολογιστών

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 3 Έλεγχος Ροής Προγράμματος

Πράξεις με πραγματικούς αριθμούς (επαναλήψεις - συμπληρώσεις )

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Οργάνωση Υπολογιστών (Ι)

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 6 ο και 7 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

Πολλαπλασιασμός και Διαίρεση Ακεραίων

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086

Αρχιτεκτονική Υπολογιστών

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-21

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ίοδοι Εκποµπής Φωτός

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Κατ οίκον Εργασία ΚE5

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Ελίνα Μακρή

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Εντολές PIC16F887. Reg1=b' ' b' '

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Τρόποι Διευθυνσιοδότησης

Παραδείγματα Προγραμματισμού σε Assembly του TRN

Δ = δπ + υ με υ < δ. (Ταυτότητα της Ευκλείδειας διαίρεσης),

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Οργάνωση Υπολογιστών

Αρχιτεκτονική-Ι Ενότητα 5:

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

a -j a 5 a 4 a 3 a 2 a 1 a 0, a -1 a -2 a -3

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αρχιτεκτονική Υπολογιστών Ι

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Συστήματα Μικροϋπολογιστών

ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1. Συγγραφή. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Αρχιτεκτονική Υπολογιστών

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

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

1. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ Μ/Ε ΕΣΩΤΕΡΙΚΟΙ ΚΑΤΑΧΩΡΗΤΕΣ

Δοκιμασίες πολλαπλών επιλογών

Εισαγωγή στην επιστήμη των υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης]

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Αρχιτεκτονική Υπολογιστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών

Αλγεβρικές Παραστάσεις

γρηγορότερα. Αν θέλουμε να μηδενίσουμε όλα τα υπόλοιπα bit μπορούμε να χρησιμοποιήσουμε την εντολή:

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο Σύντοµη Επανάληψη

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής. Εισαγωγή στους Η/Υ

Λύσεις Ασκήσεων ΣΕΙΡΑ 1 η. Πρόσημο και μέγεθος

Transcript:

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης

ΕΡΓΑΣΤΗΡΙΟ 3 ΤΕΙ ΣΕΡΡΩΝ Η ΠΡΑΞΗ ΤΗΣ ΑΦΑΙΡΕΣΗΣ Πράξη 1 1 0 1-0 1 1 0 1 1 1 0 1-0 1 1 0 1Δ 1 1 1 1 0 1 0 1 1 0 1Δ 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 Επεξήγηση Μηδέν από ένα μας δίνει 1. Δεν χρειάστηκε δανεικό (δανεικό=0). Ένα από Μηδέν δεν αφαιρείται. Έτσι παίρνουμε δανεικό και λέμε Ένα (1 2 ) από Δύο (10 2 ) μας δίνει 1, άρα γράφουμε ως αποτέλεσμα το 1 και έχουμε 1 δανεικό Ένα το δανεικό και Ένα μας κάνουν Δύο (10 2 ), από Ένα (1 2 ) δεν αφαιρείται. Έτσι παίρνουμε δανεικό και λέμε Δύο (10 2 ) από Τρία (11 2 ) μας δίνουν Ένα, άρα γράφουμε ως αποτέλεσμα το 1 και έχουμε 1 ως δανεικό. Ένα το δανεικό και 0 μας κάνουν ένα (1 2 ), από Ένα μας δίνει 0 άρα γράφουμε ως αποτέλεσμα το 0 και δεν έχουμε δανεικό. Η πράξη τελείωσε και το αποτέλεσμα είναι 1 1 1 2 = 7 10

ΕΡΓΑΣΤΗΡΙΟ 3 ΕΝΤΟΛΕΣ ΑΦΑΙΡΕΣΗΣ H εντολή SUB και οι τρόποι σύνταξής της Αφαίρεση χωρίς δανεικό, SUB a,b a=a-b SUB καταχωρητής1, καταχωρητής2 SUB καταχωρητής, [θέση μνήμης] SUB [θέση μνήμης], καταχωρητής SUB καταχωρητής, τιμή SUB BY[διεύθυνση μνήμης], τιμή 8bit SUB WO[διεύθυνση μνήμης], τιμή 16bit SUB AX,BX SUB AX,[200] SUB [200],CΧ SUB DX, 1AF4 SUB ΒΥ[200], 7Α SUB WO[200], 10F5 SUB [θέση μνήμης], [θέση μνήμης]

ΕΡΓΑΣΤΗΡΙΟ 3 ΕΝΤΟΛΕΣ ΑΦΑΙΡΕΣΗΣ H εντολή SΒB και οι τρόποι σύνταξής της Αφαίρεση με δανεικό, SΒB a,b a=a-b-carry SBB καταχωρητής1, καταχωρητής2 SBB καταχωρητής, [θέση μνήμης] SBB [θέση μνήμης], καταχωρητής SBB καταχωρητής, τιμή SBB BY[διεύθυνση μνήμης], τιμή 8bit SBB WO[διεύθυνση μνήμης], τιμή 16bit SBB AX,BX SBB AX,[200] SBB [200],CΧ SBB DX, 1AF4 SBB ΒΥ[200], 7Α SBB WO[200], 10F5 Η εντολή NEG καταχωρητής αλλάζει πρόσημο στην τιμή του καταχωρητή με βάση το συμπλήρωμα ως προς 2

ΕΡΓΑΣΤΗΡΙΟ 3 ΑΣΚΗΣΗ 3.2 Γράψτε ένα πρόγραμμα που να αφαιρεί δύο προσημασμένους αριθμούς των 8 bit που βρίσκονται στις θέσεις μνήμης 200 και 201 και να τοποθετεί το αποτέλεσμα στην θέση μνήμης 202. Κάντε δοκιμή για τα παρακάτω δεδομένα : 0200 0201 0202 16-δικός 10-δικός 16-δικός 10-δικός Θεωρ. 10-δικός Εργ. 16-δικός Εργ. 10-δικός Σωστό? (Ναι/Όχι) C/OV/SIGN 6F +111 70 +112-1 FF -1 NAI CY/NV/NG FF -1 02 +2-3 FD -3 NAI NC/NV/NG 80-128 01 +1-129 7F +127 OXI NC/OV/PL

Γράψτε ένα πρόγραμμα που να αφαιρεί τον 16-bit προσημασμένο αριθμό που βρίσκεται στις θέσεις μνήμης 0202, 0203 (Υ.Τ.Β. στην 0203) από τον 16-bit προσημασμένο αριθμό που βρίσκεται στις θέσεις μνήμης 0200, 0201, (Υ.Τ.Β. στην 0201). Βάλτε το αποτέλεσμα της αφαίρεσης στις θέσεις 0204, 0205, και το αρνητικό του στις θέσεις μνήμης 0206,0207. Κάντε δοκιμή για τα παρακάτω δεδομένα : ΑΣΚΗΣΗ 3.3 ΕΡΓΑΣΤΗΡΙΟ 3 Μειωτέος Αφαιρέτης Διαφορά -Διαφορά FLAGS (πριν το NEG) 200 201 202 203 204 205 206 207 C OV SIGN Σωστό? 21 43 10 32 11 11 EF EE NC NV PL ΝΑΙ CD AB 11 11 BC 9A 44 65 NC NV NG ΝΑΙ 00 80 02 00 FE 7F 02 80 NC OV PL OXI 4321 ABCD 8000-3210 -1 1 1 1-0002 1 1 1 1 9 A B C 7 F F E

Η ΠΡΑΞΗ TOY ΠΟΛ/ΣΜΟΥ ΣΤΟΝ 8088 Πολ/σμός 8 bit: AL * AL AH BL BH CL CH DL DH AX AX BP Πολ/σμός 16 bit: BX SI AX * CX DI DX:AX DX SP Το αποτέλεσμα του πολ/σμού είναι σωστό ΠΑΝΤΑ!

ΕΡΓΑΣΤΗΡΙΟ 3 ΕΝΤΟΛΕΣ ΠΟΛ/ΣΜΟΥ H εντολή MUL Πολ/σμός μη προσημασμένων αριθμών MUL καταχωρητής καταχωρητής 8 bit ΑΧ=ΑL * καταχωρητής καταχωρητής 16 bit DX:ΑΧ=ΑX * καταχωρητής H εντολή IMUL Πολ/σμός προσημασμένων αριθμών IMUL καταχωρητής καταχωρητής 8 bit ΑΧ=ΑL * καταχωρητής καταχωρητής 16 bit DX:ΑΧ=ΑX * καταχωρητής

ΕΡΓΑΣΤΗΡΙΟ 3 ΑΣΚΗΣΗ 3.4 Γράψτε ένα πρόγραμμα που να πολλαπλασιάζει τους μη προσημασμένους 16 bit αριθμούς που βρίσκονται στις θέσεις μνήμης 0200-0201 και 0202-0203 και να βάζει το αποτέλεσμα στις θέσεις μνήμης 0204-0207. Εκτελέστε το πρόγραμμά σας για τα δεδομένα του παρακάτω πίνακα: Πολ/στής 0200...0201 Πολ/στής 0202...0203 Γινόμενο 0204...0207 Σωστό? (Ναι/Όχι) 34 12 00 01 00 34 12 00 Ν Α Ι FF FF FF FF 01 00 FE FF Ν Α Ι 1234 FFFF x 0100 x FFFF 00123400 FFFE0001

Η ΠΡΑΞΗ ΤΗΣ ΔΙΑΙΡΕΣΗΣ ΣΤΟΝ 8088 Διαίρεση 16 bit: AX / AL AH BL BH CL CH DL DH Π AL Y AH AX BP Διαίρεση 32 bit: DX:AX / BX SI CX DI DX SP Π AX Y DX Το αποτέλεσμα της διαίρεσης ΔΕΝ είναι πάντα σωστό!

ΕΡΓΑΣΤΗΡΙΟ 3 H εντολή DIV Διαίρεση μη προσημασμένων αριθμών DIV καταχωρητής καταχωρητής 8 bit AX/καταχωρητής και Π AL & Y AH καταχωρητής 16 bit DX:ΑΧ/καταχωρητής και Π AX & Y DX H εντολή IDIV Διαίρεση προσημασμένων αριθμών IDIV καταχωρητής καταχωρητής 8 bit ΕΝΤΟΛΕΣ ΔΙΑΙΡΕΣΗΣ AX/καταχωρητής και Π AL & Y AH καταχωρητής 16 bit DX:ΑΧ/καταχωρητής και Π AX & Y DX

ΕΡΓΑΣΤΗΡΙΟ 3 ΑΣΚΗΣΗ 3.5 Γράψτε ένα πρόγραμμα που να διαιρεί τον 32 bit προσημασμένο αριθμό που βρίσκεται στις θέσεις μνήμης 0200-0203, με τον 16-bit προσημασμένο αριθμό που βρίσκεται στις θέσεις μνήμης 0204-0205 και να βάζει το Πηλίκο στις θέσεις μνήμης 0206-0207 και το Υπόλοιπο στις θέσεις μνήμης 0208-0209. Εκτελέστε το πρόγραμμά σας για τα δεδομένα του παρακάτω πίνακα: Διαιρετέος 200 201 202 203 Διαιρέτης 204 205 Πηλίκο 206 207 Υπόλοιπο 208 209 01 40 23 01 00 10 34 12 01 00 00 00 FF FF 00 80 02 00 00 00 Π=1234 01234001/1000 FFFF0000/8000 Υ=0001 Π=0002 Υ=0000

ΕΡΓΑΣΤΗΡΙΟ 4 ΣΥΝΘΗΚΗ ΣΤΗΝ ASSEMBLY Ανώτερες γλώσσες προγραμματι σμού Assembly 8088 IF συνθήκη=true THEN GOTO διεύθυνση CMP x,y JXX διεύθυνση

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΝΤΟΛΗ ΣΥΓΚΡΙΣΗΣ H εντολή CMP και οι τρόποι σύνταξής της Σύγκριση 2 αριθμών, CMP a,b a-b και επηρεάζει τα flags CMP καταχωρητής1, καταχωρητής2 CMP καταχωρητής, [θέση μνήμης] CMP [θέση μνήμης], καταχωρητής CMP καταχωρητής, τιμή CMP BY[διεύθυνση μνήμης], τιμή 8bit CMP WO[διεύθυνση μνήμης], τιμή 16bit CMP AX,BX CMP AX,[200] CMP [200],CΧ CMP DX, 1AF4 CMP ΒΥ[200], 7Α CMP WO[200], 10F5 CMP [θέση μνήμης], [θέση μνήμης]

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΝΤΟΛΗ ΑΛΜΑΤΟΣ ΥΠΟ ΣΥΝΘΗΚΗ Οι εντολές JXX και οι τρόποι σύνταξής τους (29 εντολές) Άλμα υπό συνθήκη, JΧΧ a κάνε άλμα στην διεύθυνση a αν ισχύει η συνθήκη JE a (Jump on Equal) Κάνε άλμα στη διεύθυνση a αν το αποτέλεσμα της προηγούμενης πράξης 0 JNE a (Jump on Not Equal) Κάνε άλμα στη διεύθυνση a αν το αποτέλεσμα της προηγούμενης πράξης διάφορο του 0 JL a (Jump on Less) Κάνε άλμα στη διεύθυνση a αν στην προηγούμενη CMP o 1 ος αριθμός < 2 ου αριθμού JLΕ a (Jump on Less or Equal) Κάνε άλμα στη διεύθυνση a αν στην προηγούμενη CMP o 1 ος αριθμός 2 ου αριθμού JO a (Jump on Overflow) Κάνε άλμα στη διεύθυνση a αν overflow bit=1 κ.α. παρόμοιες εντολές (δες σημειώσεις) Προσοχή: μέγιστο άλμα -128/+127 διευθύνσεις μνήμης από την JXX

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΝΤΟΛΗ ΑΛΜΑΤΟΣ ΑΝΕΥ ΣΥΝΘΗΚΗΣ H εντολή JMP και οι τρόποι σύνταξής της Άλμα άνευ συνθήκης, JMP a JMP διεύθυνση μνήμης JMP 0300 JMP καταχωρητής JMP BX JMP [διεύθυνση μνήμης] JMP [0500] JMP segment:offset JMP 0100:0400 JMP FAR [διεύθυνση μνήμης] JMP FAR[0600]

ΕΡΓΑΣΤΗΡΙΟ 4 ΥΛΟΠΟΙΗΣΗ ΣΥΝΘΗΚΗΣ (IF) A/A Δομή της C Κώδικας Assembly 8088 Παρατηρήσεις 1 Εντολή πριν ; if (συνθήκη) { Εντολή 1; Εντολή 2;... Εντολή ν; } Εντολή μετά ; Εντολή πριν CMP <παράμετροι> Jxx <διεύθυνση> Εντολή 1 Εντολή 2... Εντολή ν <διεύθυνση> Εντολή μετά Η εντολή Jxx είναι αντίθετη από την (συνθήκη) της C. Π.x. για την συνθήκη : if (ax= =0) η εντολή θα είναι : JNZ 2 Εντολή πριν ; if (συνθήκη) { Εντολή 1;... Εντολή ν;} else { Εντολή ν+1;... Εντολή ì ;} Εντολή μετά ; Εντολή πριν CMP <παράμετροι> Jxx <διεύθυνση> Εντολή ν+1(περίπτωση else)... Εντολή ì JMP <συνέχεια> <διεύθυνση> Εντολή 1 (περίπτωση if)... Εντολή ν <συνέχεια> Εντολή μετά Η εντολή Jxx είναι όμοια με την (συνθήκη) της C. Π.x. για την συνθήκη : if (ax= =0) η εντολή θα είναι : JZ

ΕΡΓΑΣΤΗΡΙΟ 4 ΑΣΚΗΣΗ 4.1 Γράψτε ένα πρόγραμμα που θα ταξινομεί δύο μη προσημασμένους 16 bit αριθμούς κατ αύξουσα σειρά. Οι δύο αριθμοί περιέχονται στις θέσεις μνήμης 0200-0201 ο πρώτος και 0202-0203 ο δεύτερος. Εάν ο πρώτος αριθμός είναι μεγαλύτερος από τον δεύτερο τότε οι δύο αριθμοί θα εναλλάσσονται στη μνήμη. Εάν ο πρώτος είναι ίσος ή μικρότερος από τον δεύτερο θα παραμείνουν όπως είναι. Στο τέλος η θέση μνήμης 0204 να περιέχει μετά την εκτέλεση της σύγκρισης έναν από τους τρεις αριθμούς 0,1,2 όπως παρακάτω : 0 εάν ο πρώτος είναι μικρότερος από τον δεύτερο. 1 εάν οι δύο αριθμοί είναι ίσοι. 2 εάν ο πρώτος είναι μεγαλύτερος από τον δεύτερο.

ΕΡΓΑΣΤΗΡΙΟ 4 ΑΣΚΗΣΗ 4.1 0200-0201 23 45 ΑΑ ΑΑ FF FF 0202-0203 12 34 ΒΒ ΒΒ FF FF 0204 02 00 01 4523 > 3412 AAAA < BBBB FFFF = FFFF

ΕΡΓΑΣΤΗΡΙΟ 4 ΑΠΛΟΣ ΒΡΟΧΟΣ n ΕΠΑΝΑΛΗΨΕΩΝ ετικέτα MOV AL, 00 INC AL CMP AL, n JNE ετικέτα ; Αρχικοποίηση μετρητή επαναλήψεων Εντολές προς επανάληψη ; AL=AL+1, αύξηση μετρητή επαναλήψεων ; Έλεγχος για τέλος επαναλήψεων ; Άλλη μια επανάληψη INC καταχωρητής καταχωρητής=καταχωρητής+1 DEC καταχωρητής καταχωρητής=καταχωρητής-1

ΕΡΓΑΣΤΗΡΙΟ 4 Γράψτε ένα πρόγραμμα που θα γράφει αυτόματα στη μνήμη και στις θέσεις από την 0200 και μετά τους αριθμούς 00, 01, 02, 03,... με χρήση ενός απλού βρόχου επανάληψης. Κάθε αριθμός καταλαμβάνει 1 byte. Αρχικά εκτελέστε την επανάληψη 8 φορές ΑΣΚΗΣΗ 4.2 Στη συνέχεια μετατρέψτε το πρόγραμμα ώστε να εκτελείται τόσες φορές όσο το περιεχόμενο του καταχωρητή CL Τέλος μετατρέψτε το πρόγραμμα ώστε να εκτελείται τόσες φορές όσο η τιμή της μεταβλητής που βρίσκεται στη θέση 0300 (1 byte) Πώς μπορούμε να μετατρέψουμε το πρόγραμμα ώστε να λειτουργεί για πίνακα μεταβλητής διεύθυνσης αρχής? 200 201 202 203 204 205 206 207 Θέση μνήμης 00 01 02 03 04 05 06 07 Περιεχόμενο

ΕΡΓΑΣΤΗΡΙΟ 5 ΔΗΜΙΟΥΡΓΙΑ ΒΡΟΧΩΝ ΣΤΗΝ ASSEMBLY ΒΡΟΧΟΙ Με εντολές συνθήκης και αλμάτων Με ειδικές εντολές (όταν υπάρχουν)

ΕΡΓΑΣΤΗΡΙΟ 5 ΕΝΤΟΛΗ LOOP H εντολή LOOP DEC CX LOOP διεύθυνση CMP CX,00 JNE διεύθυνση Μειώνει τον CX κατά 1 και κάνει άλμα στη διεύθυνση αν ο CX 0

ΕΡΓΑΣΤΗΡΙΟ 5 ΕΝΤΟΛΗ LOOP Βρόχος n επαναλήψεων με LOOP MOV CX, n διεύθυνση ; εντολές που ; επαναλαμβάνονται LOOP διεύθυνση

ΕΡΓΑΣΤΗΡΙΟ 5 ΕΝΤΟΛΗ LOOP H εντολή LOOPΖ LOOPZ διεύθυνση Μειώνει τον CX κατά 1 και κάνει άλμα στη διεύθυνση αν ο CX 0 ΚΑΙ Zero flag=1 H εντολή LOOPNΖ LOOPNZ διεύθυνση Μειώνει τον CX κατά 1 και κάνει άλμα στη διεύθυνση αν ο CX 0 ΚΑΙ Zero flag=0

ΕΡΓΑΣΤΗΡΙΟ 5 ΔΕΙΚΤΟΔΟΤΟΥΜΕΝΗ ΠΡΟΣΠΕΛΑΣΗ Διευθυνσιοδότηση [διεύθυνση] Διευθυνσιοδότηση [διεύθυνση + καταχ1] Διευθυνσιοδότηση [διεύθυνση + καταχ1 + καταχ2] Διευθυνσιοδότηση [καταχ] Διευθυνσιοδότηση [καταχ1 + καταχ2] π.χ. MOV [200], CX π.χ. MOV [200+DI], DX π.χ. MOV [200+DI+BX], AL π.χ. MOV [BX], AL π.χ. MOV [BX+SI], AL Πλεονεκτήματα: Εύκολη και ευέλικτη σάρωση πινάκων στη μνήμη με βρόχους Καταχωρητές μόνον SI, DI, BX, BP 24 διαφορετικοί τρόποι σύνταξης

ΕΡΓΑΣΤΗΡΙΟ 5 ΑΣΚΗΣΗ 5.1 Γράψτε το πρόγραμμα που βρίσκει τον μεγαλύτερο 8-bit μη προσημασμένο αριθμό από δέκα αριθμούς που βρίσκονται στις θέσεις μνήμης από 0201 έως και 020Α και βάλτε τον στη θέση μνήμης 0200. Ο πίνακας των αριθμών δίνεται παρακάτω. Θέση Μνήμης 0201 0202 0203 0204 0205 0206 0207 0208 0209 020Α Περιεχόμενα Α2 00 40 40 0Β 5A FA 55 06 4F

ΕΡΓΑΣΤΗΡΙΟ 5 ΑΣΚΗΣΗ 5.1 Θέση Μνήμης 0200 0201 0202 0203 0204 0205 0206 0207 0208 0209 020Α Περιεχόμενα FA? Α2 00 40 40 0Β 5A FA 55 06 4F

ΕΡΓΑΣΤΗΡΙΟ 5 ΑΣΚΗΣΗ 5.2 Να γραφεί πρόγραμμα που να προσθέτει, με χρήση βρόχου, τους αριθμούς 1+2+3+4+5 και να τοποθετεί το αποτέλεσμα στη διεύθυνση μνήμης 0200 ΑΣΚΗΣΗ 5.3 Να τροποποιήσετε το ανωτέρω πρόγραμμα ώστε να προσθέτει τους αριθμούς 1+2+ +Ν όπου το Ν να είναι μεταβλητή και να βρίσκεται στη θέση μνήμης 0200. Το αποτέλεσμα να τοποθετείται στην διεύθυνση μνήμης 0201-0202