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

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

Ο Εκπαιδευτικός Υπολογιστής TRN+

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

Συμβολική Γλώσσα στον ΑΒΑΚΑ

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

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

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

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

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

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

Εντολές γλώσσας μηχανής

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

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

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

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

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

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

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

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

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

Εντολές PIC16F rrf <όνομα καταχωρητή>,a a=f ή a=w H εντολή πραγματοποιεί ολίσθηση προς τα δεξιά του καταχωρητή που ακολουθεί μέσω κρατουμένου

Εισαγωγή στην Επιστήµη των Υπολογιστών Εξάµηνο 4ο-ΣΗΜΜΥ

Υπολογιστικά Συστήματα Λογική Σχεδίαση Αρχιτεκτονική Η/Υ Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

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

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Δομές Δεδομένων (Data Structures)

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

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

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

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

Διαδικασιακός Προγραμματισμός

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

ΠΡΟΓΡΑΜΜΑ synartisi_se_diadikasia ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S, B, maxmax ΑΡΧΗ

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

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

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

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

Chapter 3 Αριθμητική Υπολογιστών

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον Προγραμματισμό

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων.

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

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

ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. 1 ΣΩΣΤΟ 2 ΛΑΘΟΣ 3 ΛΑΘΟΣ 4 ΛΑΘΟΣ 5 ΣΩΣΤΟ

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

MIPS functions and procedures

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

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

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

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

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 3

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

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

Transcript:

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

Παραδείγματα Προγραμματισμού Αναζήτηση του μεγίστου σε ένα πίνακα αριθμών χωρίς πρόσημο που βρίσκεται τοποθετημένος στη μνήμη από τη θέση TAB και μετά, και το πλήθος των στοιχείων είναι το περιεχόμενο της θέσης μνήμης SIZE NAME MAXELM ORG 100 TAB: RES 10 ORG 0 SIZE: CON 10 MAX: RES 1

Παραδείγματα Προγραμματισμού LDI SIZE JIG START (Έλεγχος αν SIZE = 0 ) JMP EXIT START: DCI (Ο κατ. Ι δείχνει στο τελευταίο στοιχείο) LDA,I TAB STA MAX (Αρχικά, max = TABLE[size-1] ) LOOP: DCI LDA,I TAB SUB MAX JPN SAME (Το max παραμένει το ίδιο αν Α[i] < max ) LDA,I TAB STA MAX (αν Α[i] >= max, τότε max = A[i] ) SAME: JIG LOOP (Έλεγχος αν τελείωσε ο βρόχος) EXIT: HLT

Πολλαπλασιασμός Πολλαπλασιασμός μεταξύ θετικών αριθμών, από τις εισόδους 0 και 1. Απλή προσέγγιση: Πρόσθεσε στον πολλαπλασιαστέο τον εαυτό του, τόσες φορές όσες είναι ο πολλαπλασιαστής. MULT: STOP: NAM MUL ORG 0 INP 0 STA NUM1 INP 1 STA NUM2 ENA 0 LDI NUM2 JIG MULT JMP STOP DCI ADA NUM1 NUM1: RES 1 NUM2: RES 1 RESULT: RES 1 JIG MULT STA RESULT HLT

Πολλαπλασιασμός ΙΙ Πολλαπλασιασμός μεταξύ δύο μη αρνητικών δυαδικών αριθμών. Παράδειγμα: Shift-Add Αποτέλεσμα = 0. Αν το τελευταίο bit του πολλαπλασιαστή είναι 1 τότε πρόσθεσε τον πολλαπλασιαστέο στο αποτέλεσμα. Αν είναι 0, τότε μην κάνεις τίποτε. Ολίσθηση αριστερά πολλαπλασιαστέος. Ολίσθηση δεξιά πολλαπλασιαστής (για να πάρω το επόμενο τελευταίο bit). 00101 * 01010 00000 001010 0000000 00101000 000000000 000110010

Πολλαπλασιασμός NAM MULTI ORG 0 ENA 0 STA RESULT INP 0 STA NUM1 INP 1 STA NUM2 MUL: LDA NUM2 AND MASK JPZ BIT0 BIT1: LDA RESULT ADA NUM1 STA RESULT BIT0: STOP: LDA NUM2 SHA -1 ORA MASK0 JPZ STOP STA NUM2 LDA NUM1 SHA 1 STA NUM1 JMP MUL MASK0: CON 0 MASK: CON 1 NUM1: RES 1 NUM2: RES 1 RESULT: RES 1 BIT: RES 1 LDA RESULT OUT 9 HLT

Διαίρεση-Κλασσική Μέθοδος Διαδοχικές αφαιρέσεις DIV: NAM DIV ORG 0 LDX ZERO INP 1 STA NUM2 ORA ZERO JPZ STOP INP 0 STA NUM1 SUB NUM2 JPN DIV INX JMP DIV DIV: ADA NUM2 STA YPOL STX PHL STOP: HLT ZERO: CON 0 NUM1: RES 1 NUM2: RES 1 YPOL: RES 1 PHL: RES 1

Υλοποίηση Στοίβας Λειτουργίες Στοίβας: PUSH SP: Βάλε το περιεχόμενο του συσσωρευτή Α στην στοίβα SP, POP SP: Πάρε το πρώτο στοιχείο της στοίβας SP, και τοποθέτησε το στο συσσωρευτή Α. Προϋπόθεση:Να μην αλλάξει τίποτε στους υπόλοιπους καταχω-ρητές. NAM TESTST EXT PUSH,POP ORG 0 ENA 10 JSR PUSH ENA 20 JSR PUSH ENA 30 JSR PUSH JSR POP HLT

Υλοποίηση Στοίβας NAM STACK ENT SP,PUSH,POP ORG 100 PUSH: RES 1 STX STR LDX SP INX STX SP LDX STR STA (SP) JMP (PUSH) POP: RES 1 LDA (SP) STI STR LDI SP DCI STI SP LDI STR JMP (POP) STR: RES 1 SP: CON 119 ORG 120 RES 40

Πέρασμα Παραμέτρων (1/2) Να γραφεί πρόγραμμα το οποίο υλοποιεί την πράξη RESULT = (INP 0) * (INP 1) καλώντας μια συνάρτηση με δύο ορίσματα. Τα 0 και 1 είναι οι θύρες εισόδου. Το αποτέλεσμα θα επιστρέφεται στον συσσωρευτή, και θα δίνεται σαν έξοδος στη θύρα 8 (OUT 8). Τα δύο ορίσματα περνούν στην συνάρτηση κατά αξία.

Συνάρτηση με Πέρασμα Παραμέτρων NAM CALL EXT MULFUN,NUM1,NUM2 ORG 0 INP 0 STA NUM1 INP 1 STA NUM2 JSR MULFUN OUT 8 HLT NAM MULL ENT MULFUN,NUM1,NUM2 ORG 40 MULFUN: RES 1 ENA 0 LDI NUM2 JIG MULT JMP STOP MULT: DCI ADA NUM1 JIG MULT STOP: JMP (MULFUN) NUM1: RES 1 NUM2: RES 1

Πέρασμα Παραμέτρων 2/2 Να γραφεί πρόγραμμα το οποίο υλοποιεί την πράξη RESULT = (INP 0) * (INP 1) καλώντας μια συνάρτηση με δύο ορίσματα. Τα 0 και 1 είναι οι θύρες εισόδου. Το αποτέλεσμα θα επιστρέφεται στη θέση μνήμης RESULT. Τα δύο ορίσματα περνούν στην συνάρτηση κατά αξία. Η θέση RESULT πρέπει να περάσει κατά αναφορά.

Συνάρτηση με Πέρασμα Παραμέτρων NAM CALL EXT MULFUN,NUM1,NUM2,MRES ORG 0 INP 0 STA NUM1 INP 1 STA NUM2 ENA 30 STA MRES JSR MULFUN LDA RESULT OUT 8 HLT ORG 30 RESULT: RES 1 NAM MULL ENT MULFUN,NUM1,NUM2,MRES ORG 100 MULFUN: RES 1 ENA 0 LDI NUM2 JIG MULT JMP STOP MULT: DCI ADA NUM1 STOP: NUM1: RES 1 NUM2: RES 1 MRES: RES 1 JIG MULT STA (MRES) JMP (MULFUN)

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

Κυρίως Πρόγραμμα ; Passing Parameters through the stack. NAM CALL EXT MULFUN,SP,POP,PUSH ORG 0 INP 0 Αποθήκευση 1ου ορίσματος στο σωρό. JSR PUSH INP 1 Αποθήκευση 2ου ορίσματος στο σωρό. JSR PUSH ENA 30 JSR PUSH JSR MULFUN LDA RESULT OUT 8 HLT ORG 30 RESULT: RES 1 ; PASS THE ADDRESS OF RESULT Αποθήκευση διεύθυνσης επιστροφής αποτελέσματος.

Συνάρτηση Multiply NAM MULL ENT MULFUN EXT SP,POP,PUSH ORG 100 MULFUN: RES 1 JSR POP STA MRES JSR POP STA NUM2 JSR POP STA NUM1 ENA 0 LDI NUM2 JIG MULT JMP STOP MULT: DCI ADA NUM1 JIG MULT STOP: STA (MRES) ; JMP (MULFUN) NUM1: RES 1 NUM2: RES 1 MRES: RES 1 Ανάκτηση ορισμάτων από το σωρό.

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

Κυρίως Πρόγραμμα LOOP: NAM ADDING EXT SP,PUSH,POP,ADD ORG 0 LDI SIZE DCI LDA,I TAB JSR PUSH JIG LOOP LDA SIZE JSR PUSH JSR ADD OUT 8 HLT Αποθήκευση ορισμάτων στο σωρό. SIZE: CON 10 TAB: CON 10,20,30,40,50,60,70,80,90,100 Αποθήκευση μεγέθους πίνακα στο σωρό.

Συνάρτηση πρόσθεσης NAM ADDFUN ENT ADD EXT SP,PUSH,POP ORG 100 ADD: RES 1 JSR POP STA TEMP LDI TEMP ENA 0 STA TEMP ALOOP: JSR POP ADA TEMP STA TEMP DCI JIG ALOOP JMP (ADD) TEMP: RES 1 Ανάκτηση μεγέθους πίνακα από το σωρό. Ανάκτηση ορισμάτων από το σωρό και πρόσθεση.

Παραδείγματα Προγραμματισμού Ταξινόμηση bubblesort (H πρώτη διεύθυνση του πίνακα είναι η ΤΑΒ, το μέγεθος του στη θέση SIZE) i=n-1; while(i>0) { j=0; while(j<i) { if (A[i] < A[j]) swap (A[i], A[j] ); j = j+1; } i = i-1; }

Παραδείγματα Προγραμματισμού NAM BUBBLE ORG 100 TAB: RES 5 ORG 0 SIZE: CON 5 (Μέγεθος του πίνακα) INDXI: RES 1 INDXJ: RES 1 AI: RES 1 AJ: RES 1

Παραδείγματα Προγραμματισμού LOOPI: LOOPJ: LDA SIZE DCA STA INDXI ( i = n-1; ) JPZ P ENA 0 STA INDXJ ( j = 0; ) LDA INDXI SUB INDXJ ( A = i j ) JPN LOO ( i-j < 0 => i < j ) JPZ LOO ( i-j = 0 => i = j ) LDI INDXI LDA,I TAB ( A <- A[i] STA AI

Παραδείγματα Προγραμματισμού SWAP: NOSWAP: LDI INDXJ LDA,I TAB ( A <- A[j] ) STA AJ SUB AI ( A <- A[j] A[i] ) JPN NOSWAP ( if A<0 => A[i] > A[j] ) LDA AI STA,I TAB (A[j] <- A[i]) LDI INDXI LDA AJ STA,I TAB (A[i] <- A[j] ) LDA INDXJ INA ( j = j + 1) STA INDXJ JMP LOOPJ

Παραδείγματα Προγραμματισμού LOO: P: LDA INDXI DCA ( i = i 1; ) STA INDXI JMP LOOPI HLT

Χρήση Έμμεσης Προσπέλασης Εκτέλεση μιας διαδικασίας σε ένα σύνολο στοιχείων τα οποία είναι αποθηκευμένα σε διαδοχικές θέσεις μνήμης PTR: δείκτης του πίνακα με αρχική τιμή τη διεύθυνση του πρώτου στοιχείου του πίνακα CTR: αριθμός στοιχείων του πίνακα SUM: άθροισμα των στοιχείων του πίνακα ΝΑΜ ΤΕST ORG 0 LOOP: LDX PTR INX CTR: CON 5 STX PTR PTR: CON 20 ADA (PTR) SUM: RES 1 DCI LDI CTR DCI LDA (PTR) JIG LOOP STA SUM HLT

Χρήση Δεικτοδοτημένης Έμμεσης Χρησιμοποιείται κατά την επεξεργασία πινάκων οι οποίοι περιέχουν διευθύνσεις αντί για δεδομένα Ένα σύστημα ανάκτησης μετρήσεων συλλέγει δεδομένα από Ν διαφορετικά κανάλια (κάθε κανάλι έχει 10 θέσεις), τα προσθέτει και βάζει το αποτέλεσμα σε ένα πίνακα. 300 310 F 300 310 320 320 330 390 Κανάλι 0 Κανάλι 1 Κανάλι 2

Χρήση Δεικτοδοτημένης Έμμεσης LDX COUNT BACK:... LOOP: ADA,I (F)... I -- if(i>0) goto LOOP STA,I (F) LDA B INA STA B LDA B+1 INA STA B+1... COUNT++ if(count<10) goto BACK

Χρήση Δεικτοδοτημένης Έμμεσης Β 300 310 300 310 320 320 330 390 Κανάλι 0 Κανάλι 1 Κανάλι 2

Χρήση Δεικτοδοτημένης Έμμεσης Β 301 300 310 320 311 321 331 391 Κανάλι 0 Κανάλι 1 Κανάλι 2

Το πρόγραμμα (1/2) NAM ADDTABLES ORG 0 LDX ZERO STR: ENA 0 LDI TABS DCI ADL: ADA,I (F) DCI JIG ADL STA,I (F) Πρόσθεση όλων των στοιχείων και αποθήκευση στον πρώτο πίνακα LDI TABS ADD1: DCI LDA,I F INA STA,I F JIG ADD1 INX STX COUNT LDA SIZE SUB COUNT JAG STR HLT Αύξηση των διευθύνσεων κατά 1. Αύξηση του counter και έλεγχος

Το πρόγραμμα (1/2) COUNT: CON 0 ZERO: CON 0 TABS: CON 4 SIZE: CON 6 F: CON 300, 310, 320, 330 ORG 300 RES 10 ORG 310 CON 2,3,1,2,1,3 ORG 320 CON 3,5,4,3,2,3 ORG 330 CON 2,3,4,5,3,2

Παραδείγματα σε Assembly Απλά προγράμματα Πέρασμα Παραμέτρων Δεικτοδοτούμενη και Έμμεση Αναφορά.