Υποπρογράμματα (Subroutines)

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

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

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

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

Κεφάλαιο 10 ο Υποπρογράµµατα

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

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

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

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

Δομημένος Προγραμματισμός

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

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

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

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

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

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

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

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν:

MIPS functions and procedures

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

{ int a = 5; { int b = 7; a = b + 3;

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Ε-85: Ειδικά Θέµατα Λογισµικού

δήλωσης δεδοµένων και σε παραβίαση των συντακτικών κανόνων της γλωσσάς.

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

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

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

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

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

Προγραµµατιστικές Τεχνικές

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

Συναρτήσεις. Υποπρόγραμμα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Παράλληλη Επεξεργασία

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ

Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Ημερομηνία: Πέμπτη 12 Απριλίου 2018 Διάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

A) Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-10 και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 3 Task Switching in PM

ΠΡΟΣΟΜΟΙΩΣΗ ΑΠΟΛΥΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΥΡΙΑΚΗ 22 ΑΠΡΙΛΙΟΥ 2012 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΚΑΤΕΥΘΥΝΣΗΣ

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

1. Λογικά λάθη ονομάζονται αυτά που οφείλονται σε σφάλματα κατά την υλοποίηση του αλγόριθμου.

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

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

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

Επεξεργασία Αρχείων Κειµένου

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

Κλάσεις και Αντικείµενα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

Transcript:

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

Υποπρογράμματα (Subroutines) Ένα υποπρόγραµµα µπορεί να κληθεί από διάφορα σηµεία του προγράµµατος, µε διαφορετικέςαν χρειάζεται πραγµατικές παραµέτρους. Μπορεί επίσης για λόγους αυτονοµίας να χρησιµοποιεί τοπικές µεταβλητές οι οποίες υπάρχουν µόνο όσο χρόνο εκτελείται το υποπρόγραµµα αυτό. Το πρόγραµµα αποτελείται από το κύριο τµήµα το οποίο καλεί διάφορα υποπρογράµµατα τα όποια µε την σειρά τους πιθανόν να καλούν και αλλά υποπρογράµµατα. Κάθε υποπρόγραµµα έχει συγκεκριµένο όνοµα, η αρχή του δηλώνεται µε την οδηγία PROC και το πέρας του µε την οδηγία ENDP. Το όνοµα του υποπρογράµµατος είναι ετικέτα που αντιπροσωπεύει την λογική δ/νση της αρχής του κώδικα του υποπρογράµµατος.

Υποπρογράμματα (Subroutines) Κάθε υποπρόγραµµα καλείται µε την εντολή CALL και το όνοµα τουπ.χ CALL emfanish char Κάθε υποπρόγραµµα επιστέφει στο κυρίως πρόγραµµα ή στο υποπρόγραµµα που το κάλεσε µε την εντολή RET. Και η επιστροφή στο λειτουργικό γίνεται µε την εντολή RET. Η ύπαρξη σωρού απαραίτητη για την λειτουργία των υποπρογραµµάτων. Κάθε υποπρόγραµµα δηλώνεταιnear ή FAR. Κάθε υποπρόγραµµα έχει τουλάχιστον µια εντολή RET.

ΕΝΤΟΛΕΣ CALL ΚΑΙ RET Η θεµελιώδης λειτουργία των υποπρογραµµάτων επιτυγχάνεται µε τον συνδυασµό των εντολών CALL και RET και µε την βοήθεια του σωρού, κατά τον εξής τρόπο: Η εντολή CALL αποθηκεύει την δ/νση της εντολής µετά την CALL στο σωρό, και µεταφερεί µε άλµα τον έλεγχο του προγράµµατος στην δ/νση του υποπρογράµµατος της CALL. Μόλις το υποπρόγραµµα τελειώσει εκτελεί µια εντολή RET, η οποία ανακαλεί από τον σωρό την δ/νση επιστροφής και την φορτώνει στον µετρητή προγράµµατος για να συνεχιστεί η εκτέλεση του προγράµµατος στην εντολή µετά την CALL που κάλεσε το υποπρόγραµµα.

ΣΩΡΟΣ (STACK) Καταχωρητής τµήµατος σωρού SS(Stack Segment) Ο καταχωρητής SS περιέχει την δ/νση από όπου αρχίζει το τµήµα µνήµης της σωρού (STACK). Δείκτης βάσης BP (Base Pointer) Χρησιµοποιείται για προσπέλαση δεδοµένων στο σωρό (τοπικές µεταβλητές, παράµετροι υποπρογραµµάτων). Δείκτης σωρού SP (Stack Pointer) είχνει την πρώτη ελεύθερη θέση στο σωρό. Δηλαδή το σημείο μέχρι το οποίο έχει γεμίσει ο σωρός Π.χ. αν SS = 1ABCh και SP = 100h, τότε η φυσική δ/νση της κορυφής του σωρού είναι: SS * 10h + SP = 1ABCh * 10h + 100h = 1ABC0h + 100h = 1ACC0h

Εντολή CALL Υπάρχουν δυο µορφές κλήσεων µε τηνεντολήcall, η ενδοτµηµατική και η εξωτµηµατική. Υπάρχουν δυο µορφές της εντολής επιστροφής RET. Όταν το υποπρόγραµµα που βρίσκεται η CALL είναι NEAR πρόκειται για ενδοτµηµατική CALL (near ptr call), αλλιώς αν είναι FAR τότε η CALL είναι εξωτµηµατική (far ptr call) σε άλλο code segment. Στην ενδοτµηµατική κλήση µεταφέρεται στην κορυφή του σωρού το περιεχόµενο του IP και µειώνεται ο δείκτης σωρού SP κατά 2. Ακολούθως συνεχίζεται η εκτέλεση του προγράµµατος στην δ/νση του υποπρογράµµατος η οποία όµως πρέπει να βρίσκεται στο ίδιο τµήµα κώδικα.

Εντολή CALL Στην εξωτµηµατική κλήση µεταφέρεται πρώτα στην κορυφή του σωρού το περιεχόµενο του καταχωρητή τµήµατος κώδικα CS και µειώνεται ο δείκτης σωρού SP κατά 2 και ακολούθως µεταφέρεται στην κορυφή του σωρού το περιεχόµενο του IP µειώνεται πάλι ο δείκτης σωρού SP. Η εκτέλεση του προγράµµατος συνεχίζεται στην δ/νση του υποπρογράµµατος η οποία µπορεί να βρίσκεται σε διαφορετικό τµήµα κώδικα από το τµήµα εντολής CALL. Στην περίπτωση αυτή πριν από το όνοµα του υποπρογράµµατος πρέπει να µπεί η έκφραση FAR PTR ανδενυπάρχουνοιδηλώσειςnear ή FAR π.χ. CALL FAR PTR emfanish char

Εντολή RET Υπάρχουν δυο µορφέςτηςεντολήςεπιστροφήςret. Όταν το υποπρόγραµµα που βρίσκεται η RET είναι NEAR πρόκειται για ενδοτµηµατική RET (RETN), αλλιώς αν είναι FAR τότε η RET είναι εξωτµηµατική (RETF). Στην ενδοτµηµατική RET µεταφέρεται από την κορυφή του σωρού το περιεχόµενο στον IP και αυξάνεται ο δείκτης σωρού SP κατά 2. Ακολούθως συνεχίζεται η εκτέλεση του προγράµµατος στην µετά την CALL εντολή.

Εντολή RET Στην εξωτµηµατική RET µεταφέρεται από την κορυφή του σωρού το περιεχόµενο του IP αυξάνεται ο δείκτης σωρού SP κατά 2 και ακολούθως µεταφέρεται από νέα κορυφή σωρού το περιεχόµενο στον CS αυξάνεται πάλι ο δείκτης σωρού SP κατά 2 και συνεχίζεται η εκτέλεση του προγράµµατος. Όπως φαίνεται από τα παραπάνω πρέπει ο συνδυασµός των εντολών CALL και RET να γίνεται µε προσοχή ούτως ώστε και οι δυο να είναι του ίδιου τύπου δηλαδή ή ενδοτµηµατικές ή εξωτµηµατικές.

TITLE ASKISI KODIKAS SEGMENT PUBLIC ASSUME CS:KODIKAS, DS:DEDOMENA, SS:SOROS MAIN PROC NEAR MOV AX,DEDOMENA ; Apokatastash tou DS MOV DS,AX ; Apokatastash tou DS... CALL DISPLAY-HEX ; Kaloume tin Display_hex MOV AH,4CH ; Eksodos sto leitoyrgiko systhma INT 21H MAIN ENDP DISPLAY-HEX PROC NEAR... CALL ONE-DIGIT ; Kaloume tin One_digit... RET ; Epistrefo stin thesi apo opou klithike h yporoutina DISPLAY-HEX ENDP ONE-DIGIT PROC NEAR... TELOS: RET ; Epistrefo stin thesi apo opou klithike h yporoutina ONE-DIGIT ENDP KODIKAS ENDS DEDOMENA SEGMENT... DEDOMENA ENDS SOROS SEGMENT STACK DB 256 DUP(0) SOROS ENDS END MAIN