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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τέτοιες λειτουργίες γίνονται διαμέσου του

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τελικός Κώδικας. Παραγωγή. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. Παραγωγή. Τελικού Κώδικα. Ενδιάµεσος.

Homework 3 Solutions

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

Instruction Execution Times

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

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Παραγωγή Τελικού Κώδικα. Γιώργος Μανής

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

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

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

Διάλεξη 12 Καθυστερήσεις (Stalls)

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

ΠΑΡΑ ΕΙΓΜΑ 8 ΓΕΝΝΗΤΡΙΑ ΨΕΥ ΟΤΥΧΑΙΩΝ ΑΡΙΘΜΩΝ (PSEUDORANDOM GENERATOR) 8.0 ΓΕΝΙΚΑ

Αρχιτεκτονικη υπολογιστων

Math 6 SL Probability Distributions Practice Test Mark Scheme

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

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

Συναρτήσεις-Διαδικασίες

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Απλός επεξεργαστής (Επανάληψη)

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

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

Matrices and Determinants

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

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

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

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

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

Θέµατα Φεβρουαρίου

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

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Παραδείγματα Assembly (Μέρος

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

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

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Example Sheet 3 Solutions

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Προαιρετική Εργασία στο μάθημα Σχεδίαση Γλωσσών και Μεταγλωττιστών

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

ΘΕΜΑΤΑ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ-ΙΙ

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2.

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Transcript:

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

CMP REG, memory memory, REG REG, REG memory, immediate REG, immediate Compare. operand1 - operand2 result is not stored anywhere, flags are set (OF, SF, ZF, AF, PF, CF) according to result. Example: MOV AL, 5 MOV BL, 5 CMP AL, BL ; AL = 5, ZF = 1 (so equal!)

JMP label 4-byte address or 2-byte address Unconditional Jump. Transfers control to another part of the program. 4-byte address may be entered in this form: 1234h:5678h, first value is a segment second value is an offset. If the jump refers to some address in the current segment, only the 2-byte address offset is needed (the segment number can be omitted) always jump Example: Cs:0100 mov al,0 Cs:0102 mov ah,08 Cs: 0104 inc bx Cs: 0105 jmp 0100

JA label Short Jump if first operand is Above second operand (as set by CMP instruction). Unsigned. if (CF = 0) and (ZF = 0) then jump JBE label Short Jump if first operand is Below or Equal to second operand (as set by CMP instruction). Unsigned. if CF = 1 or ZF = 1 then jump

JC (JB) label Short Jump if Carry flag is set to 1. if CF = 1 then jump JNC(JNB) label Short Jump if Carry flag is set to 0. if CF = 0 then jump

JZ (JE) label l Short Jump if Zero (equal). Set by CMP, SUB, ADD, TEST, AND, OR, XOR instructions. if ZF = 1 then jump JNZ (JNE) label Short Jump if Not Zero (not equal). Set by CMP, SUB, ADD, TEST, AND, OR, XOR instructions. if ZF = 0 then jump

Να προσδιοριστεί ο μεγαλύτερος από 2 αριθμούς οι οποίοι είναι αποθηκευμένοι στις θέσεις μνήμης 00 και 01 και να τοποθετηθεί στη θέση μνήμης 02 Start: Mov ah,[0] Mov bh, [1] Cmp ah,bh JΒΕ label1 Mov [2], bh Jmp End Label1: Mov [2],ah End: Νop ; Τέλος προγράμματος ;σύγκρινε τους 2 αριθμούς ;αν ο πρώτος είναι μεγαλύτερος αποθήκευσέ τον ;ειδάλλως αποθήκευσε τον δεύτερο ;Πήγαινε στο τέλος προγράμματος Νop Jmp Start ; Π.χ. για επανάληψη: Πήγαινε στην αρχή

Να προσδιοριστεί ο μεγαλύτερος από 2 αριθμούς οι οποίοι είναι αποθηκευμένοι στις θέσεις μνήμης 00 και 01 και να τοποθετηθεί στη θέση μνήμης 02 Start: Mov ah,[0] Mov bh, [1] Cmp ah,bh ;σύγκρινε τους 2 αριθμούς JΒΕ label1 ;αν ο πρώτος είναι <= αποθήκευσέ τον 2o Mov [2], ah ;ειδάλλως αποθήκευσε τον δεύτερο Jmp End ;Πήγαινε στο τέλος προγράμματος Label1:Mov [2],bh End: Νop ; Τέλος προγράμματος

Να προσδιοριστεί ο μεγαλύτερος από ένα σύνολο αριθμών των 8bits. Το πλήθος των αριθμών βρίσκεται στη θέση 1 και οι αριθμοί αρχίζουν από τη θέση 2. Το αποτέλεσμα να αποθηκεύεται στη θέση 0. Mov ch, [1] ; Αποθήκευσε το πλήθος των αριθμών στον ch Mov cl,0 στον cl ; Κράτα το πλήθος των μέχρι τώρα επαναλήψεων (αριθμών που έχουν ελεγχθεί) Mov bx, 2 ; Χρησιμοποίησε τον bx ως δείκτη για διάβασμα της μνήμης, αρχικοποίησε σε 2 Mov ah,0 ; Χρησιμοποίησε τον ΑΗ για να αποθηκεύεις τον μεγαλύτερο αριθμό μετά από κάθε σύγκριση Label1: inc cl ; Αύξησε τον αριθμό των επαναλήψεων κατά 1 Mov al, ds:[bx] ; Διάβασε αριθμό από θέση μνήμης. Ο ΑL κρατά πάντα τον τρέχοντα αριθμό Cmp ah,al ; Σύγκρινε με τον μέχρι στιγμής μεγαλύτερο (αποθηκευμένος στον AH) Ja Label2 επανάληψη ; Αν ο ΑΗ παραμένει μεγαλύτερος τότε πήγαινε label2 & ξεκίνα καινούργια Mov ah, al ; Ειδάλλως, αν ο τρέχον αριθμός είναι μεγαλύτερος ανανέωσε τον ΑΗ Label 2: Inc bx ; Ετοιμάσου να διαβάσεις από επόμενη διεύθυνση Cmp ch,cl ; Σύγκρινε αν έχουμε διαβάσει και ελέγξει όλους τους αριθμούς Jnz Label1 ; Αν δεν έχουν διαβαστεί όλοι οι αριθμοί επανάλαβε τον βρόγχο mov [0], ah ; Αν τελειώσαμε, αποθήκευσε το αποτέλεσμα στην θέση μνήμης 0 Άσκηση για το σπίτι: Να προσαρμοστεί το παραπάνω πρόγραμμα έτσι ώστε αντί να κρατάτε το πλήθος των αριθμών που έχουν ελεγχθεί (δηλ. πλήθος επαναλήψεων στον καταχωρητή CL), να κρατάτε το πλήθος των αριθμών που δεν έχουν ακόμα ελεγχθεί (υπόδειξη: να χρησιμοποιήσετε διαδοχικές μειώσεις κατά 1 του CH)

Να ταξινομηθούν κατά αύξουσα σειρά οι 8 αριθμοί του ενός byte που βρίσκονται στις θέσεις μνήμης 0 7. Παρακάτω η λύση με τη μέθοδο των φυσαλίδων (Bubble sort), δηλ. διαδοχικά περάσματα της ακολουθίας των αριθμών και εναλλαγή αυτών που δεν είναι σε αύξουσα σειρά. Η διαδικασία επαναλαμβάνεται έως ότου να μην υπάρχει εναλλαγή σε κάποιο πέρασμα. Mov dl,0 ;χρησιμοποίησε τον dl ως δείκτη εναλλαγής, θέσε τον σε 0 Start: Mov bx,0 ;Θέσε τον δείκτη για πρόσβαση στις θέσεις μνήμης Mov ah,[bx] ;διάβασε τον πρώτο αριθμό Mov al,7 ;θέσε τον al στον αριθμό των συγκρίσεων (7 για 8 αριθμούς) Tag1: Inc bx ;προετοίμασε τον δείκτη για πρόσβαση στην επόμενη θέση μνήμης Mov ch,[bx] ;διάβασε τον επόμενο αριθμό Cmp ah,ch ;σύγκρινέ τον με τον ah ο οποίος κρατά τον μεγαλύτερο αριθμό μέχρι και την προηγούμενη σύγκριση Jc Tag2 ;αν ο ah είναι μικρότερος πήγαινε στο Tag2 Xchg [bx-1],ch ;ειδάλλως, κάνε εναλλαγή των περιεχομένων των θέσεων μνήμης Mov [bx], ch ; [bx-1] και [bx]. Ο ch τώρα κρατάει τον μεγαλύτερο αριθμό μέχρι στιγμής Mov dl,1 ;θέσε τον δείκτη εναλλαγής σε 1 Tag2: Mov ah,ch ;μετάφερε στον ah τον μεγαλύτερο μέχρι στιγμής αριθμό Dec al ;έλεγξε αν έχουν γίνει όλες οι συγκρίσεις σε αυτό το πέρασμα Jnz Tag1 ;αν όχι πήγαινε στο Tag1 και συνέχισε τις συγκρίσεις για αυτό το πέρασμα Dec dl ;αν οι συγκρίσεις για αυτό το πέρασμα ολοκληρώθηκαν, έλεγξε τον δείκτη εναλλαγής Jz Start ;αν υπήρξε κάποια εναλλαγή στο προηγούμενο πέρασμα ξεκίνα καινούργιο πέρασμα End: Nop ;αν όχι, τέλος προγράμματος οι αριθμοί έχουν ταξινομηθεί σε αύξουσα σειρά