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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Οδηγός Εκμάθησης στην Assembly 8086 1"

Transcript

1 Οδηγός Εκμάθησης στην Assembly Δρ. Μηνάς Δασυγένης Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών arch.icte.uowm.gr/mdasyg 1 Μετάφραση του κειμένου 8086 Assembler Tutorial for Beginners Σε συνεργασία με τους: Βεντούρη Αντώνιο & Μπάτσου Ελευθερία

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

3 Περιεχόμενα 1. Βοήθημα στην Assembler για αρχαρίους Τι είναι μια γλώσσα assembly; Εσωτερικό της CPU Καταχωρητές γενικού σκοπού Καταχωρητές τμήματος Καταχωρητές ειδικού σκοπού Πρόσβαση στην Μνήμη Μεταβλητές Πίνακες Διεύθυνση Μεταβλητής Σταθερές Διακοπές Βιβλιοθήκη κοινών συναρτήσεων emu8086.inc Αριθμητικές και Λογικές Εντολές Έλεγχος Ροής Προγράμματος Διαδικασίες Ο σωρός Μακροεντολές

4 1. Βοήθημα στην Assembler για αρχαρίους Το βοήθημα εκμάθησης αναφέρεται σε αυτούς που δεν γνωρίζουν καθόλου την assembly ή έχουν πολύ μικρή ιδέα για αυτήν. Φυσικά αν υπάρχει γνώση κάποιας άλλης γλώσσας προγραμματισμού (Basic, C/C++, Pascal,...) θα μπορούσε να βοηθήσει αρκετά. Αλλά ακόμα και αν κάποιος γνωρίζει την assembler είναι καλό να δει αυτό το έγγραφο, ώστε να μελετήσει την σύνταξη του emu8086. Θεωρείται ότι υπάρχει γνώση σχετικά με την αναπαράσταση των αριθμών (HEX/BIN), αν δεν υπάρχει προτείνεται ιδιαίτερα να μελετηθεί το Numbering Systems Tutorial πριν συνεχίσετε. 1.1 Τι είναι μια γλώσσα assembly; Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου. Θα χρειαστεί κάποια γνώση για την δομή του υπολογιστή ώστε να κατανοηθεί το οτιδήποτε. Ένα απλό μοντέλο υπολογιστή είναι αυτό: Ο Δίαυλος του συστήματος (φαίνεται με το κίτρινο χρώμα) συνδέεται με τα διάφορα μέρη του υπολογιστή. Η CPU είναι η καρδιά του υπολογιστή, οι περισσότεροι υπολογισμοί εκτελούνται μέσα σε αυτήν. Η RAM είναι το μέρος που φορτώνονται τα προγράμματα ώστε να εκτελεστούν. 4

5 1.2 Εσωτερικό της CPU Καταχωρητές γενικού σκοπού Στην 8086 CPU υπάρχουν 8 καταχωρητές γενικού σκοπού, κάθε καταχωρητής έχει το δικό του όνομα. AX καταχωρητής συσσώρευσης (χωρίζεται σε AH/AL). BX καταχωρητής βάσης (χωρίζεται σε BH/BL). CX καταχωρητής μέτρησης (χωρίζεται σε Ch/CL). DX καταχωρητής δεδομένων (χωρίζεται σε DH/DL). SI καταχωρητής δείκτης προέλευσης. DI καταχωρητής δείκτης προορισμού. BP δείκτης βάσης. SP δείκτης σωρού. Ανεξάρτητα από το όνομα ενός καταχωρητή, ο προγραμματιστής είναι αυτός που καθορίζει την χρήση κάθε γενικού σκοπού καταχωρητή. Ο κύριος σκοπός ενός καταχωρητή είναι να κρατήσει έναν αριθμό (μεταβλητή). Το μέγεθος των παραπάνω καταχωρητών είναι 16 bit, είναι κάτι σαν: b (σε δυαδική μορφή), ή σε δεκαδική (ανθρώπινη) μορφή. Οι 4 καταχωρητές γενικού σκοπού (AX, BX, CX, DX) είναι φτιαγμένοι από δύο ξεχωριστούς 8 bit καταχωρητές, για παράδειγμα αν AX = b, τότε είναι AH = b και AL = b. Συνεπώς αν τροποποιήσουμε κάποιον από τους 8 bit καταχωρητές αλλάζει και ο 16 bit καταχωρητής και το αντίθετο. Το ίδιο ισχύει και για τους άλλους 3 καταχωρητές, το "H" είναι για το high (υψηλό) και το "L" για το low (χαμηλό) μέρος. 5

6 Επειδή οι καταχωρητές βρίσκονται στο εσωτερικό της CPU, είναι πολύ γρηγορότεροι από τη μνήμη. Η πρόσβαση σε μία θέση μνήμης απαιτεί τη χρησιμοποίηση ενός διαύλου, οπότε και χρειάζεται παραπάνω χρόνο. Η πρόσβαση στα δεδομένα ενός καταχωρητή συνήθως δεν απαιτεί χρόνο. Γι αυτό πρέπει να γίνεται προσπάθεια να χρησιμοποιούνται οι καταχωρητές για την αποθήκευση των δεδομένων. Το σύνολο των καταχωρητών είναι πολύ μικρό και οι περισσότεροι έχουν μια ειδική λειτουργία, κάτι που περιορίζει την χρήση τους σαν μεταβλητές, αλλά εξακολουθούν να αποτελούν ένα κάλο μέρος για προσωρινή αποθήκευση των δεδομένων Καταχωρητές τμήματος CS δείχνει το τμήμα που περιέχει το τρέχων πρόγραμμα. DS γενικά δείχνει το τμήμα που ορίζονται οι μεταβλητές. ES καταχωρητής extra τμήματος, η χρήση του εξαρτάται από τον προγραμματιστή. SS δείχνει το τμήμα που περιέχεται η σωρός. Ακόμα και αν είναι δυνατή η αποθήκευση όλων των δεδομένων στους καταχωρητές τμήματος, αυτό δεν είναι ποτέ καλή ιδέα. Οι καταχωρητές τμήματος έχουν πολύ συγκεκριμένο σκοπό-να δείχνουν σε προσβάσιμα τμήματα της μνήμης. Οι καταχωρητές ειδικού σκοπού λειτουργούν μαζί με τους καταχωρητές γενικής χρήσης για να έχουν πρόσβαση σε οποιαδήποτε θέση μνήμης. Για παράδειγμα αν θέλουμε να έχουμε πρόσβαση στην μνήμη με φυσική διεύθυνση 12345h (δεκαεξαδικό), θα πρέπει να θέσουμε τον DS=1230h και τον SI=0045h. Αυτό είναι επιθυμητό, καθώς με αυτό τον τρόπο μπορούμε να έχουμε πρόσβαση σε πολύ περισσότερη μνήμη από ότι με έναν μόνο καταχωρητή που περιορίζεται σε τιμές 16 bit. Η CPU κάνει τον υπολογισμό της φυσικής διεύθυνσης πολλαπλασιάζοντας το τμήμα κώδικα με 10h και προσθέτοντας σε αυτό τον καταχωρητή γενικού σκοπού (1230h * 10h + 45h = 12345h): Η διεύθυνση που αποτελείται από 2 καταχωρητές ονομάζεται ενεργός διεύθυνση. Εξ ορισμού οι καταχωρητές BX, SI και DI ταιριάζουν με τον καταχωρητή τμήματος DS, οι καταχωρητές BP και SP ταιριάζουν με τον καταχωρητή τμήματος SS. Οι άλλοι καταχωρητές γενικού σκοπού δεν μπορούν να έχουν ενεργό διεύθυνση. Ακόμα και αν ο BX έχει ενεργό διεύθυνση, ο BH και BL δεν έχουν! 6

7 1.2.3 Καταχωρητές ειδικού σκοπού IP δείκτης εντολής. Flags Register καταχωρητής σημαιών. Ο καταχωρητής IP είναι πάντα με τον καταχωρητή κώδικα CS και δείχνει την τρέχουσα εντολή. Οι σημαίες των καταχωρητών τροποποιούνται αυτόματα από την CPU μετά από μαθηματικές πράξεις, αυτό επιτρέπει να καθοριστεί ο τύπος του αποτελέσματος και να καθοριστούν οι συνθήκες για να μεταφερθεί ο έλεγχος σε άλλα σημεία του προγράμματος. Γενικά δε μπορούμε να έχουμε άμεση πρόσβαση σε αυτούς τους καταχωρητές. 2. Πρόσβαση στην Μνήμη Για να έχουμε πρόσβαση στην μνήμη μπορούμε να χρησιμοποιήσουμε αυτούς τους 4 καταχωρητές: BX, SI, DI, BP. Συνδυάζοντας αυτούς τους καταχωρητές μέσα στις [ ] αγκύλες, μπορούμε να έχουμε διαφορετικές θέσεις μνήμης. Αυτοί οι συνδυασμοί είναι (διευθυνσιοδότηση): [BX + SI] [SI] [BX + SI] + d8 [BX + DI] [DI] [BX + DI] + d8 [BP + SI] d16 (ενεργός διεύθυνση) [BP + SI] + d8 [BP + DI] [BX] [BP + DI] + d8 [SI] + d8 [BX + SI] + d16 [SI] + d16 [DI] + d8 [BX + DI] + d16 [DI] + d16 [BP] + d8 [BP + SI] + d16 [BP] + d16 [BX] + d8 [BP + DI] + d16 [BX] + d16 d8 δηλώνει 8 bit μετατόπισης. d16 δηλώνει 16 bit μετατόπισης. Η μετατόπιση μπορεί να είναι μια σταθερά ή ενεργός διεύθυνση ή και τα δύο. Ο υπολογισμός μιας άμεσης τιμής γίνεται μέσω του compiler. Η μετατόπιση μπορεί να είναι εσωτερικά ή εξωτερικά του συμβόλου [ ], ο compiler δημιουργεί τον ίδιο κώδικα μηχανής και για τις δύο περιπτώσεις. Η μετατόπιση είναι μια προσημασμένη τιμή, οπότε μπορεί να είναι είτε θετική είτε αρνητική. Γενικά ο compiler αναγνωρίζει την διαφορά μεταξύ του d8 και του d16 και δημιουργεί τον κατάλληλο κώδικα μηχανής. 7

8 Για παράδειγμα, ας υποθέσουμε ότι DS=100, BX=30, SI=70. Η παρακάτω διευθυνσιοδότηση [BX + SI] + 25 είναι υπολογισμένη με επεξεργασία της φυσικής διεύθυνσης: 100 * = Εξ ορισμού ο καταχωρητής τμήματος DS χρησιμοποιείται για όλες τις λειτουργίες, αλλά δεν συνδυάζεται με τον καταχωρητή BP, γι αυτόν χρησιμοποιείται ο καταχωρητής τμήματος SS. Υπάρχει ένας εύκολος τρόπος να θυμάστε όλους τους πιθανούς συνδυασμούς, χρησιμοποιώντας το παρακάτω διάγραμμα: Μπορείτε να σχηματίσετε όλους τους έγκυρους συνδυασμούς με την λήψη μόνο ενός στοιχείου από κάθε στήλη ή παρακάμπτοντας την στήλη χωρίς να παίρνετε κάτι από αυτή. Όπως είναι φανερό ο BX και ο BP δεν χρησιμοποιούνται ποτέ μαζί. Το ίδιο ισχύει και για το SI και το PI. Εδώ είναι ένα παράδειγμα έγκυρης διευθυνσιοδότησης: [BX+5]. Η τιμή του καταχωρητή τμήματος (CS, DS, SS, ES) ονομάζεται τμήμα (segment), και η τιμή του καταχωρητή δείκτη ονομάζεται ενεργός διεύθυνση (offset). Όταν ο DS περιέχει την τιμή 1234h και ο SI την τιμή 7890h μπορεί να καταγραφεί σαν 1234:7890. Η φυσική διεύθυνση θα είναι 1234h * 10h h = 19BD0h. Για να μπορέσει ο compiler να αναγνωρίσει τον τύπο δεδομένων πρέπει να χρησιμοποιηθούν τα παρακάτω προθέματα: BYTE PTR για byte. WORD PTR για λέξη (δύο bytes). Για παράδειγμα: ή BYTE PTR [BX] WORD PTR [BX] ;πρόσβαση σε byte. ;πρόσβαση σε λέξη. Επίσης υποστηρίζονται από το M i c r o A s m μικρότερα προθέματα: b. για BYTE PTR w. για WORD PTR Μερικές φορές ο compiler υπολογίζει τον τύπο δεδομένων αυτόματα, ωστόσο δεν θα πρέπει να βασίζεστε σε αυτό ειδικά όταν ένας από τους τελεστές έχει άμεση τιμή. 8

9 Εντολή MOV Αντιγράφει τον δεύτερο τελεστή (πηγή) στον πρώτο τελεστή (προορισμό). Ο τελεστής της πηγής μπορεί να είναι μία άμεση τιμή, καταχωρητής γενικού σκοπού ή μια θέση μνήμης. Ο καταχωρητής προορισμού μπορεί να είναι καταχωρητής γενικού σκοπού ή θέση μνήμης. Και οι δύο τελεστές πρέπει να έχουν το ίδιο μέγεθος, που μπορεί να είναι ένα byte ή μία λέξη. Επιτρέπονται οι εξής μετακινήσεις: MOV ΚΑΤΑΧΩΡΗΤΗΣ, θέση μνήμης MOV θέση μνήμης, ΚΑΤΑΧΩΡΗΤΗΣ MOV ΚΑΤΑΧΩΡΗΤΗΣ, ΚΑΤΑΧΩΡΗΤΗΣ MOV θέση μνήμης, άμεση τιμή MOV ΚΑΤΑΧΩΡΗΤΗΣ, άμεση τιμή ΚΑΤΑΧΩΡΗΤΕΣ: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. Θέση μνήμης: [BX], [BX+SI+7], μεταβλητή, κτλ... Άμεση τιμή: 5, -24, 3Fh, b,κτλ... Οι καταχωρητές τμήματος υποστηρίζουν μόνο τρείς τύπους MOV : MOV ΚΑΤ. ΤΜΗΜΑΤΟΣ, θέση μνήμης MOV θέση μνήμης, ΚΑΤ. ΤΜΗΜΑΤΟΣ MOV ΚΑΤΑΧΩΡΗΤΗΣ, ΚΑΤ. ΤΜΗΜΑΤΟΣ MOV ΚΑΤ. ΤΜΗΜΑΤΟΣ, ΚΑΤΑΧΩΡΗΤΗΣ ΚΑΤ. ΤΜΗΜΑΤΟΣ: DS, ES, SS, και μόνο σαν δεύτερη παράμετρος: CS. ΚΑΤΑΧΩΡΗΤΕΣ: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. Θέση μνήμης: [BX], [BX+SI+7], μεταβλητή, κτλ... Η εντολή MOV δεν μπορεί να χρησιμοποιηθεί για να αλλάξει την τιμή του καταχωρητή CS και IP. 9

10 Εδώ είναι ένα μικρό πρόγραμμα που δείχνει την χρήση της εντολής MOV: #MAKE_COM# ; o compiler κάνει το COM file. ORG 100h ; άμεση τιμή για το πρόγραμμα COM. MOV AX, 0B800h ; θέτει στον AX την ; δεκαεξαδική τιμή B800h. MOV DS, AX ; μεταφορά τιμή από AX στο DS. MOV CL, 'A';θέτει στο CL την ASCII τιμή ;του 'A', που είναι41h. MOV CH, b ; θέτει στο CH σε ;δυαδική μορφή. MOV BX, 15Eh ; θέτει στο BX το 15Eh. MOV [BX], CX ; μεταφορά του περιεχομένου του CX ; στην θέση μνήμης B800:015E RET ;επιστροφή στο λειτουργικό σύστημα. Μπορείτε να αντιγράψετε και να επικολλήσετε το παραπάνω πρόγραμμα στην επεξεργασία κώδικα M i c r o A s m, και να πιέσετε το πλήκτρο [Compile] (ή να πιέσετε F5 από το πληκτρολόγιο σας). Πώς να κάνετε αντιγραφή & επικόλληση : 1. Επιλέξτε το παραπάνω κείμενο χρησιμοποιώντας το ποντίκι, κάντε κλικ στην αρχή του κειμένου και τραβήξτε το προς τα κάτω μέχρι να είναι όλα επιλεγμένα. 2. Πιέστε τον συνδυασμό πλήκτρων Ctrl + C για να αντιγραφούν. 3. Πηγαίνετε στο πρόγραμμα επεξεργασίας κώδικα M i c r o A s m και πατήστε τον συνδυασμό πλήκτρων Ctrl + V για να επικολληθεί. Όπως είναι φανερό, το ; χρησιμοποιείται για σχόλια, οτιδήποτε μετά το σύμβολο ; αγνοείται από τον compiler. Όταν τελειώσει το πρόγραμμα πρέπει να δείτε κάτι τέτοιο: (Έτσι φαίνεται στο emu8086 microprosessor emulator). Η βασική λειτουργία αυτού του προγράμματος είναι η εγγραφή απευθείας στην μνήμη, όποτε πιθανό να καταλαβαίνετε ότι η MOV είναι μια πολύ ισχυρή εντολή. 10

11 3. Μεταβλητές Η μεταβλητή είναι μία θέση μνήμης. Για έναν προγραμματιστή είναι πολύ πιο εύκολο να έχει μια τιμή αποθηκευμένη σε μια μεταβλητή με το όνομα var1 στην διεύθυνση 5A73:235B, ειδικά όταν έχει 10 ή παραπάνω μεταβλητές. Ο compiler υποστηρίζει δύο τύπους μεταβλητών: BYTE και WORD. Σύνταξη για δήλωση μιας μεταβλητής: Όνομα DB τιμή Όνομα DW τιμή DB προέρχεται από το Define Byte. DW προέρχεται από το Define Word. όνομα- μπορεί να είναι οποιοδήποτε γράμμα ή συνδυασμός ψηφίων, ωστόσο πρέπει να ξεκινάει από γράμμα. Μπορείτε να δηλώσετε μεταβλητή χωρίς συγκεκριμένο όνομα (αυτή η μεταβλητή θα έχει διεύθυνση αλλά όχι όνομα). τιμή μπορεί να είναι οποιαδήποτε αριθμητική τιμή (δεκαεξαδική, δυαδική, δεκαδική), ή το σύμβολο "?" για μεταβλητές που δε έχουν αρχικοποιηθεί. Όπως γνωρίζουμε από το 2ο μέρος αυτού του προγράμματος εκμάθησης, η εντολή MOV χρησιμοποιείται για να μεταφέρει τις τιμές από την πηγή στον προορισμό. #MAKE_COM# Ας δούμε ένα ακόμα παράδειγμα με την εντολή MOV: ORG 100 MOV AL, var1 MOV BX, var2 RET ;σταματάει το πρόγραμμα. VAR1 DB 7 var2 DW 1234h 11

12 Αντιγράψτε το παραπάνω πρόγραμμα στο M i c r o A s m source editor, και πιέστε F5 για να γίνει compile. Στην συνέχεια ανοίξτε το εκτελέσιμο σε οποιαδήποτε πρόγραμμα assembly (emu8086 ή κάποιο άλλο). Ο compiler δεν είναι ιδιαίτερα ευαίσθητος, δηλαδή η "VAR1" αναφέρονται στην ίδια τιμή. και η "var1" Η ενεργός διεύθυνση της VAR1 είναι 0108h. Η ενεργός διεύθυνση της VAR2 είναι 0109h, αυτή η μεταβλητή είναι WORD οπότε και καταλαμβάνει χώρο 2 BYTES. Θεωρείται δεδομένο ότι το low byte τοποθετείται στην χαμηλότερη διεύθυνση, οπότε το 34h τοποθετείται πριν το 12h. Μπορείτε να δείτε ότι υπάρχουν κάποιες εντολές πριν την οδηγία RET, αυτό συμβαίνει διότι η assembly δεν γνωρίζει που αρχίζουν τα δεδομένα, επεξεργάζεται μόνο τις τιμές στην μνήμη και τις καταλαβαίνει σαν έγκυρες εντολές της 8086 (θα τις μάθουμε αργότερα). Μπορείτε να γράψετε ένα πρόγραμμα χρησιμοποιώντας απευθείας μόνο οδηγίες DB: #MAKE_COM# ORG 100 DB 0A0h DB 08h DB 01h DB 8Bh DB 1Eh DB 09h DB 01h DB 0C3h DB 7 DB 34h DB 12h Αντιγράψτε το παραπάνω πρόγραμμα στην επεξεργασία κώδικα M i c r o A s m, και πιέστε F5 για να γίνει compile, στην συνέχεια φορτώστε το στον προσομοιωτή (emulator). Θα πρέπει να εμφανιστεί ο ίδιος κώδικας συμβολομεταφρασμένος και με την ίδια λειτουργικότητα. Όπως μπορεί να μαντεύετε, ο compiler μόλις μετέτρεψε τον πηγαίο κώδικα σε ένα σύνολο από bytes, αυτό το σύνολο ονομάζεται κώδικας μηχανής, ο επεξεργαστής κατανοεί τον κώδικα μηχανής και τον εκτελεί. 12

13 Το ORG 100h είναι μια οδηγία προς τον compiler (λέει στον compiler πώς να χειρίζεται τον πηγαίο κώδικα). Αυτή η οδηγία είναι πολύ σημαντική όταν χρησιμοποιούνται μεταβλητές. Γνωστοποιεί στον compiler ότι το εκτελέσιμο αρχείο θα φορτωθεί στην ενεργό διεύθυνση 100h (256 bytes), οπότε ο compiler πρέπει να υπολογίσει την άμεση διεύθυνση για όλες τις μεταβλητές όταν αντικαθιστά τα ονόματα των μεταβλητών με τις ενεργές διευθύνσεις τους. Οι οδηγίες δεν μετατρέπονται ποτέ σε αληθινό κώδικα μηχανής. Γιατί το εκτελέσιμο αρχείο φορτώνεται στην ενεργό διεύθυνση 100h; Το λειτουργικό σύστημα κρατάει κάποια δεδομένα για το πρόγραμμα στα πρώτα 256 bytes του CS (κώδικας τμήματος), όπως τις παραμέτρους της γραμμής εντολών κτλ. Ενώ αυτό ισχύει μόνο για τα αρχεία COM, τα αρχεία EXE φορτώνονται στην διεύθυνση 0000, και γενικά χρησιμοποιούν το ειδικό τμήμα για τις μεταβλητές. Μπορεί να μιλήσουμε για EXE αρχεία αργότερα. 3.1 Πίνακες Οι πίνακες μπορούν να θεωρηθούν σαν αλυσίδες μεταβλητών. Μια συμβολοσειρά κειμένου είναι ένα παράδειγμα ενός byte πίνακα, κάθε χαρακτήρας έχει μια ASCII τιμή (0..255). Παραδείγματα αρχικοποίησης πινάκων: a DB 48h, 65h, 6Ch, 6Ch, 6Fh, 00h b DB Hello, 0 Το b είναι ακριβές αντίγραφο του α πίνακα, όταν ο compiler βλέπει σε εισαγωγικά μια συμβολοσειρά, αυτόματα την μετατρέπει σε ένα σύνολο από bytes. Το παρακάτω διάγραμμα δείχνει ένα μέρος της μνήμης που δηλώνονται οι πίνακες: Μπορείτε να έχετε πρόσβαση στην τιμή κάθε στοιχείου του πίνακα χρησιμοποιώντας αγκύλες, για παράδειγμα: MOV AL, a[3] Μπορείτε επίσης να χρησιμοποιήσετε οποιοδήποτε δείκτη καταχωρητών BX, SI, DI, BP, για παράδειγμα: MOV SI, 3 MOV AL, a[si] 13

14 Αν χρειάζεται να δηλώσετε έναν μεγάλο πίνακα μπορείτε να χρησιμοποιήσετε την οδηγία DUP. Η σύνταξη της DUP είναι: αριθμός DUP (τιμή/ες) Αριθμός - αριθμός που θα φτιαχτούν τα διπλότυπα (οποιαδήποτε σταθερά τιμή). Τιμή έκφραση που ο DUP θα κάνει διπλότυπα. Παράδειγμα: c DB 5 DUP(9) εναλλακτικός τρόπος δήλωσης: c DB 9, 9, 9, 9, 9 Ακόμα ένα παράδειγμα: d DB 5 DUP(1, 2) εναλλακτικός τρόπος δήλωσης: d DB 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 Φυσικά, μπορείτε να χρησιμοποιήσετε DW αντί για DB, αν χρειάζεστε τιμές μεγαλύτερες από 255, ή τιμές μικρότερες από Το DW δεν μπορεί να χρησιμοποιηθεί για δήλωση συμβολοσειρών. Η έκταση DUP δεν θα πρέπει να είναι πάνω από 1020 χαρακτήρες! (η έκταση του προηγούμενου παραδείγματος είναι 13 χαρακτήρες), αν χρειάζεται να δηλώσετε τεράστιους πίνακες χωρίστε την δήλωση σε δύο γραμμές (θα έχετε έναν τεράστιο πίνακα στην μνήμη). 3.2 Διεύθυνση Μεταβλητής Υπάρχει η οδηγία LEA (Load Effective Address) και εναλλακτικά η οδηγία OFFSET. Τόσο η OFFSET όσο και η LEA μπορούν να χρησιμοποιηθούν για την απόκτηση της ενεργής διεύθυνσης της μεταβλητής. Η LEA είναι πιο ισχυρή γιατί σας επιτρέπει να πάρετε την τιμή της διεύθυνσης του δείκτη της μεταβλητής. Η απόκτηση της διεύθυνσης μιας μεταβλητής μπορεί να είναι πολύ χρήσιμη σε κάποιες περιπτώσεις, για παράδειγμα όταν χρειάζεται να περάσετε παραμέτρους σε μια συνάρτηση. 14

15 Υπενθύμιση: Για να μπορέσει ο compiler να αναγνωρίσει τον τύπο δεδομένων πρέπει να χρησιμοποιηθούν τα παρακάτω προθέματα: BYTE PTR για byte. WORD PTR για λέξη (δύο bytes). Για παράδειγμα: BYTE PTR [BX] ; πρόσβαση σε byte. ή WORD PTR [BX] ; πρόσβαση σε λέξη. Επίσης υποστηρίζονται από το M i c r o A s m μικρότερα προθέματα: b. για BYTE PTR w. για WORD PTR Μερικές φορές ο compiler υπολογίζει τον τύπο δεδομένων αυτόματα, ωστόσο δεν θα πρέπει να βασίζεστε σε αυτό ειδικά όταν ένας από τους τελεστές έχει άμεση τιμή. Πρώτο παράδειγμα: ORG 100h MOV AL, VAR1 ; έλεγχος VAR1 μεταφέροντας την στο AL. LEA BX, VAR1 ; βάζει την διεύθυνση του VAR1 στο BX. MOV BYTE PTR [BX], 44h ; τροποποιεί το περιεχόμενο του VAR1. MOV AL, VAR1 ; έλεγχος VAR1 μεταφέροντας την στο AL. RET VAR1 DB 22h END 15

16 Ακόμα ένα παράδειγμα που χρησιμοποιείται η OFFSET αντί της LEA: ORG 100h MOV AL, VAR1 ; έλεγχος VAR1 μεταφέροντας την στο AL. MOV MOV BX, OFFSET VAR1 ;διεύθυνση της VAR1 στο BX. BYTE PTR [BX], 44h ;τροποποιεί το περιεχόμενο VAR1. MOV AL, VAR1 ; έλεγχος VAR1 μεταφέροντας την στο AL. RET VAR1 DB 22h END Και τα δύο παραδείγματα έχουν την ίδια λειτουργικότητα. Αυτές οι σειρές: LEA BX, VAR1 MOV BX, OFFSET VAR1 Έχουν στο compiler τον ίδιο κώδικα μηχανής: MOV BX, num Ο num έχει τιμή 16 bit της μεταβλητής offset. Παρακαλώ προσέξτε ότι μόνο οι καταχωρητές μπορούν να χρησιμοποιηθούν μέσα σε αγκύλες (σαν δείκτες μνήμης): BX, SI, DI, BP! (δείτε προηγούμενα μέρη της διαδικασίας εκμάθησης). 3.3 Σταθερές Οι σταθερές είναι σαν τις μεταβλητές, αλλά δημιουργούνται μονάχα μέχρι το πρόγραμμα να κάνει compile (assembled). Μετά τον ορισμό μιας σταθεράς η τιμή της δεν μπορεί να αλλάξει. Για να ορίσουμε την σταθερά οδηγία EQU χρησιμοποιείται: Παράδειγμα: k EQU 5 MOV AX, k Όνομα EQU < έκφραση > MOV AX, 5 Διαβάστε την παρακάτω ενότητα μόνο αν χρησιμοποιείτε τον επεξεργαστή προσομοίωσης emu8086: 16

17 Μπορείτε να δείτε τις μεταβλητές ενώ το πρόγραμμα εκτελείται επιλέγοντας "Variables" από το "View" στο μενού του emulator. Για να δείτε τους πίνακες πρέπει νε κάνετε κλικ σε μια μεταβλητή και να θέσετε στο elements τον κατάλληλο αριθμό δεδομένων στον πίνακα. Στην γλώσσα Assembly δεν υπάρχουν άμεσοι τύποι δεδομένων, οπότε κάθε μεταβλητή μπορεί να αναπαρασταθεί σαν πίνακας. Η μεταβλητή μπορεί να είναι σε οποιοδήποτε αριθμητικό σύστημα. HEX δεκαεξαδικό (βάση το 16). BIN δυαδικό (βάση το 2). OCT οκταδικό (βάση το 8). SIGNED προσημασμένος δεκαδικός (βάση το 10). UNSIGNED μη προσημασμένος δεκαδικός (βάση το 10). CHAR ASCII χαρακτήρας (υπάρχουν 256 σύμβολα, κάποια σύμβολα είναι αόρατα). Μπορείτε να επεξεργαστείτε την τιμή μιας μεταβλητής όταν ακόμα το πρόγραμμα σας τρέχει, απλώς πατήστε διπλό κλικ, ή επιλέξτε την και στην συνέχεια πατήστε το πλήκτρο Edit. Μπορείτε να εισάγετε αριθμούς σε οποιοδήποτε αριθμητικό σύστημα, οι δεκαεξαδικοί αριθμοί πρέπει να έχουν κατάληξη "h", οι δυαδικοί "b" και οι οκταδικοί "o", ενώ οι δεκαδικοί δεν χρειάζονται κάποια κατάληξη. Οι συμβολοσειρές μπορούν να εισαχθούν κατά τον παρακάτω τρόπο: 'hello world', 0 (η συμβολοσειρά αυτή είναι μηδενικού τερματισμού). 17

18 Οι πίνακες μπορούν να εισαχθούν κατά τον παρακάτω τρόπο: 1, 2, 3, 4, 5 (ο πίνακας μπορεί να αποτελείται από byte ή words, εξαρτάται από το αν είναι επιλεγμένο το BYTE ή το WORD). Οι εκφράσεις μετατρέπονται αυτόματα, για παράδειγμα: όταν εισαχθεί η παρακάτω πρόταση: θα μετατραπεί σε 7 κτλ Διακοπές Οι διακοπές (interrupts) μπορούν να θεωρηθούν σαν μια σειρά λειτουργιών που διευκολύνουν τον προγραμματισμό. Έτσι αντί για τη συγγραφή κώδικα για την εμφάνιση ενός χαρακτήρα, να καλείται η διακοπή και αυτή να τα κάνει όλα. Υπάρχουν επίσης κάποιες λειτουργίες διακοπών που σχετίζονται με τη μονάδα δίσκου (disc drive) και άλλο υλικό (hardware). Αυτές οι λειτουργίες διακοπών ονομάζονται διακοπές λογισμικού. Οι διακοπές προκαλούνται από διαφορετικό hardware, αυτές ονομάζονται διακοπές hardware. Αυτή τη στιγμή ενδιαφερόμαστε μόνο για τις διακοπές λογισμικού. Για να υπάρξει μια διακοπή λογισμικού χρειάζεται μια οδηγία INT, η σύνταξη της είναι απλή: ΙΝΤ τιμή Όπου τιμή μπορεί να είναι οποιοσδήποτε αριθμός μεταξύ του 0 ως 255 (ή 0 ως 0FFh), γενικά χρησιμοποιούνται δεκαεξαδικοί αριθμοί. Μπορεί να νομίζετε ότι υπάρχουν μονάχα 256 λειτουργίες, αλλά αυτό δεν αληθεύει. Κάθε διακοπή μπορεί να έχει επίσης υπο-λειτουργίες. Για να ορίσουμε μία υπο-λειτουργία πρέπει πρώτα να τεθεί ο καταχωρητής AH σε μία τιμή πριν κληθεί η διακοπή. Κάθε διακοπή μπορεί να έχει πάνω από 256 υπολειτουργίες (οπότε προκύπτουν 256 * 256 = λειτουργίες). Γενικά ο καταχωρητής ΑΗ χρησιμοποιείται, αλλά μερικές φορές μπορεί άλλοι καταχωρητές να μπουν επίσης σε χρήση. Γενικά οι άλλοι καταχωρητές χρησιμοποιούνται για πέρασμα παραμέτρων και δεδομένων στις υπολειτουργίες. Το επόμενο παράδειγμα χρησιμοποιεί το INT 10h με υπολειτουργία το 0Εh για εμφάνιση μηνύματος "Hello!". Αυτή η λειτουργία εμφανίζει ένα χαρακτήρα στην οθόνη και μετακινεί τον κέρσορα και την οθόνη όπου είναι αναγκαίο. 18

19 #MAKE_COM# ; εντολή σε compiler για δημιουργία COM file. ORG 100h Η υπο-λειτουργία που χρησιμοποιείται δεν τροποποιεί στην επιστροφή τον καταχωρητή ΑΗ, μπορεί να τεθεί μόνο μία φορά. MOV AH, 0Eh ;επιλογή υπολειτουργίας. INT 10h/0Eh το υποπρόγραμμα λαμβάνει τον ASCII χαρακτήρα που θα εμφανιστεί στον καταχωρητή AL. MOV AL, 'H' ; ASCII κώδικας: 72 INT 10h ;εμφάνισε το! MOV AL, 'e' ; ASCII κώδικας:101 ;εμφάνισε το! INT 10h MOV AL, 'l' ; ASCII κώδικας: 108 INT 10h ; εμφάνισε το! MOV AL, 'l' ; ASCII κώδικας: 108 INT 10h ; εμφάνισε το! MOV AL, 'o' ; ASCII κώδικας: 111 INT 10h ; εμφάνισε το! MOV AL, '!' ; ASCII κώδικας: 33 INT 10h ; εμφάνισε το! RET ;επιστροφή στο λειτουργικό σύστημα. Επιλέξτε αντιγραφή & επικόλληση του παραπάνω προγράμματος στον επεξεργαστή πηγαίου κώδικα, κα επιλέξτε compile. Τρέξτε το! Δείτε το list of basic interrupts για πληροφορίες σχετικά με τις διακοπές. 19

20 5. Βιβλιοθήκη κοινών συναρτήσεων emu8086.inc Για να γίνει ευκολότερος ο προγραμματισμός υπάρχουν κάποιες κοινές συναρτήσεις που μπορούν να συμπεριληφθούν σε ένα πρόγραμμα. Για να κάνετε το πρόγραμμα σας να χρησιμοποιεί συναρτήσεις που είναι ορισμένες σε ένα άλλο αρχείο πρέπει να χρησιμοποιήσετε την οδηγία INCLUDE ακολουθούμενη από το όνομα του αρχείου. Ο compiler ψάχνει αυτόματα για το αρχείο στον ίδιο φάκελο που είναι αποθηκευμένο το πηγαίο αρχείο, και αν δεν μπορεί να βρεθεί εκεί ψάχνει και στο φάκελο Inc. Μέχρι στιγμής μπορεί να μην είστε σε θέση να αντιληφθείτε πλήρως το περιεχόμενο του emu8086.inc (βρίσκεται στο φάκελο Inc), αλλά δεν πειράζει, αφού το μόνο που χρειάζεται είναι να καταλάβετε τι μπορεί να κάνει. Για να χρησιμοποιείται οποιαδήποτε συνάρτηση στο emu8086.inc θα πρέπει στην αρχή του πηγαίου αρχείου σας να έχετε την επόμενη γραμμή: include 'emu8086.inc' Το emu8086.inc ορίζεται με τις παρακάτω μακροεντολές (macros): PUTC char μακροεντολή με 1 παράμετρο, τυπώνει έναν ASCII χαρακτήρα στην θέση που βρίσκεται ο κέρσορας. GOTOXY col, row μακροεντολή με 2 παραμέτρους, θέτει την θέση του κέρσορα. PRINT string μακροεντολή με 1 παράμετρο, εμφανίζει μια συμβολοσειρά. PRINTN string μακροεντολή με 1 παράμετρο, εμφανίζει μια συμβολοσειρά. Είναι το ίδιο με την PRINT αλλά προσθέτει αυτόματα στο τέλος της συμβολοσειράς φορτίο επιστροφής. CURSOROFF απενεργοποιεί τον κέρσορα κειμένου. CURSORON ενεργοποιεί τον κέρσορα κειμένου. Για να χρησιμοποιήσετε οποιαδήποτε από τις παραπάνω μακροεντολές απλός πληκτρολογήστε το όνομα κάπου στον κώδικα σας και αν χρειάζεται θέστε τις παραμέτρους: include emu8086.inc ORG 100h PRINT 'Hello World!' GOTOXY 10, 5 PUTC 65 PUTC 'B' RET END ; 65 -είναι ASCII κώδικας για το 'A' ;επιστροφή στο λειτουργικό σύστημα. ;οδηγία να σταματήσει ο compiler. 20

21 Όταν ο compiler επεξεργάζεται τον πηγαίο κώδικα ψάχνει στο φάκελο emu8086.inc δηλώσεις μακροεντολών και αλλάζει τα ονόματα τους με αληθινό κώδικα. Γενικά, οι μακροεντολές είναι σχετικά μικρά κομμάτια κώδικα, η συχνή όμως χρήση τους μπορεί να κάνει το εκτελέσιμο αρχείο πολύ μεγάλο (οι διαδικασίες είναι καλύτερες για την βελτιστοποίηση του ελέγχου). Το emu8086.inc ορίζει τις παρακάτω διαδικασίες: PRINT_STRING διαδικασία εμφάνισης μιας συμβολοσειράς που τερματίζει σε μηδέν στην θέση που βρίσκεται ο κέρσορας, λαμβάνει την διεύθυνση της συμβολοσειράς στον καταχωρητή DS:SI. Για να το χρησιμοποιήσετε δηλώστε: DEFINE_PRINT_STRING πριν την οδηγία END. PTHIS - διαδικασία εμφάνισης μιας συμβολοσειράς που τερματίζει σε μηδέν στην θέση που βρίσκεται ο κέρσορας, (σαν το PRINT_STRING), αλλά λαμβάνει την διεύθυνση της συμβολοσειράς από την στοίβα. Η συμβολοσειρά μηδενικού τερματισμού θα πρέπει να ορίζεται αμέσως μετά την οδηγία CALL. Για παράδειγμα: CALL PTHIS db 'Hello World!', 0 Για να το χρησιμοποιήσετε δηλώστε: DEFINE_PTHIS πριν την οδηγία END. GET_STRING - διαδικασία για να ληφθεί μιας συμβολοσειρά μηδενικού τερματισμού από ένα χρήστη. Η συμβολοσειρά που λαμβάνεται γράφεται στην προσωρινή μνήμη στο DS:DI, το μέγεθος της προσωρινής μνήμης πρέπει να είναι στο DX. Η διαδικασία σταματάει μόλις πατηθεί το 'Enter'. Για να τη χρησιμοποιήσετε δηλώστε: DEFINE_GET_STRING πριν την οδηγία END. CLEAR_SCREEN διαδικασία καθαρισμού οθόνης, (γίνεται με μετακίνηση ολόκληρου του παραθύρου οθόνης), και θέτοντας τον κέρσορα στην κορυφή της. Για να την χρησιμοποιήσετε δηλώστε: DEFINE_CLEAR_SCREEN πριν την οδηγία END. SCAN_NUM διαδικασία που δέχεται από το πληκτρολόγιο πολλά ψηφία ΠΡΟΣΗΜΑΣΜΕΝΩΝ αριθμών και αποθηκεύει τα αποτελέσματα στον καταχωρητή CX. Για να την χρησιμοποιήσετε δηλώστε: DEFINE_SCAN_NUM πριν την οδηγία END. PRINT_NUM διαδικασία εμφάνισης προσημασμένου αριθμού στον καταχωρητή AX. Για να την χρησιμοποιήσετε δηλώστε: DEFINE_PRINT_NUM και DEFINE_PRINT_NUM_UNS πριν την οδηγία END. 21

22 PRINT_NUM_UNS διαδικασία εμφάνισης μη προσημασμένου αριθμού στον καταχωρητή AX. Για να την χρησιμοποιήσετε δηλώστε: DEFINE_PRINT_NUM_UNS πριν την οδηγία END. Για να χρησιμοποιήσετε οποιαδήποτε από τις παραπάνω διαδικασίες πρέπει πρώτα να το δηλώσετε στο τέλος του αρχείου (αλλά πριν το END), και μετά να χρησιμοποιήστε την οδηγία CALL ακολουθούμενη από το όνομα της διαδικασίας. Παράδειγμα: include 'emu8086.inc' ORG 100h LEA SI, msg1 ;ζητάμε αριθμό CALL print_string CALL scan_num ;τοποθετούμε στο CX. MOV AX, CX ;μεταφέρουμε τον ;αριθμό στο AX. ; τυπώνουμε την ακόλουθη συμβολοσειρά string: CALL pthis DB 13, 10, 'You have entered: ', 0 CALL print_num ;εμφανίζουμε τον αριθμό από το AX. RET ;επιστροφή στο λειτουρικό σύστημα. msg1 DB 'Enter the number: ', 0 DEFINE_SCAN_NUM DEFINE_PRINT_STRING DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS ;δήλωση για print_num. DEFINE_PTHIS END ;οδηγία για να σταματήσει ο compiler. Ο compiler πρώτα επεξεργάζεται τις δηλώσεις (αυτές είναι οι συνήθεις μακροεντολές που έχουν επεκταθεί στις διαδικασίες). Όταν ο compiler παίρνει την οδηγία CALL αντικαθιστά το όνομα της διαδικασίας με την διεύθυνση του κώδικα που δηλώνεται η διαδικασία. Όταν εκτελείται η CALL ο έλεγχος μεταφέρεται στην διαδικασία. Αυτό είναι αρκετά χρήσιμο, γιατί ακόμα και αν κληθεί η ίδια διαδικασία 100 φορές μέσα στον κώδικα, θα είναι και πάλι σχετικά μικρό το μέγεθος του εκτελέσιμου αρχείου. Δείχνει κάπως περίπλοκο, σωστά; Ωστόσο, δεν υπάρχει πρόβλημα καθώς με το πέρασμα του χρόνου θα μάθετε περισσότερα, επί του παρόντος χρειάζεται να καταλαβαίνεται τις βασικές αρχές. 22

23 6. Αριθμητικές και Λογικές Εντολές Οι περισσότερες αριθμητικές και λογικές εντολές επηρεάζουν την κατάσταση καταχωρητών (ή σημαιών) του επεξεργαστή. των Όπως βλέπετε υπάρχουν 16bit σε αυτόν τον καταχωρητή. Το κάθε bit ονομάζεται σημαία και μπορεί να πάρει τις τιμές 0 ή 1. Σημαία Κρατουμένου (CF) - αυτή η σημαία παίρνει την τιμή 1, όταν υπάρχει απροσήμαστη υπερχείλιση. Για παράδειγμα, όταν προσθέτουμε τα bytes (το αποτέλεσμα δεν είναι μεταξύ της εμβέλειας ). Όταν δεν υπάρχει υπερχείλιση η σημαία αυτή παίρνει την τιμή 0. Σημαία Μηδενικού (ZF) - παίρνει την τιμή 1 όταν το αποτέλεσμα είναι 0. Για κανένα μηδενικό αποτέλεσμα αυτή η σημαία παίρνει την τιμή 0. Σημαία Προσήμου (SF) - παίρνει την τιμή 1 όταν το αποτέλεσμα είναι αρνητικό. Όταν το αποτέλεσμα είναι θετικό, τότε παίρνει την τιμή 0. Στην πραγματικότητα, αυτή η σημαία παίρνει την τιμή του πιο σημαντικού ψηφίου (MSB). Σημαία Υπερχείλισης (OF) - παίρνει την τιμή 1 όταν υπάρχει προσημασμένο αποτέλεσμα. Για παράδειγμα, όταν προσθέτουμε τα bytes (η εμβέλεια του αποτελέσματος δεν είναι μεταξύ του ) Σημαία Κρατουμένου (PF) - αυτή η σημαία παίρνει την τιμή 1 όταν υπάρχει άρτια ισοτιμία στο αποτέλεσμα και 0 όταν υπάρχει περιττή ισοτιμία. Ακόμα και όταν το αποτέλεσμα είναι λέξη, μόνο τα 8 πιο σημαντικά bit αναλύονται. Σημαία Βοηθητική (AF) - παίρνει την τιμή 1 όταν υπάρχει απροσήμαστο αποτέλεσμα μικρού μεγέθους (4 bits). Σημαία Ενεργοποίησης Διακοπών (IF) - όταν αυτή η σημαία έχει την τιμή 1 τότε ο επεξεργαστής ανταποκρίνεται σε διακοπές από εξωτερικές συσκευές. Σημαία Διαδρομής (DF) - αυτή η σημαία χρησιμοποιείται από μερικές εντολές για τη διεργασία δεδομένων αλυσίδας. Όταν η σημαία έχει την τιμή 0 - η διεργασία έχει γίνει προς τα εμπρός, όταν η σημαία έχει την τιμή 1 η διεργασία έχει γίνει προς τα πίσω. 23

24 Υπάρχουν 3 ομάδες από εντολές. Πρώτη Ομάδα: ADD, SUB,CMP, AND, TEST, OR, XOR Υποστηρίζονται οι παρακάτω τύποι τελεστέων: REG (καταχωρητής), memory (θέση μνήμης) memory, REG REG, REG memory, immediate (σταθερή τιμή) REG, immediate REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], μεταβλητή, και άλλα immediate: 5, -24, 3Fh, b, και άλλα... Μετά τον χειρισμό των τελεστέων, το αποτέλεσμα αποθηκεύεται πάντα στον πρώτο τελεστέο. Οι εντολές CMP και TEST επηρεάζουν μόνο σημαίες και δεν αποθηκεύουν κάποιο αποτέλεσμα. Αυτές οι εντολές επηρεάζουν μόνο τις εξής σημαίες: CF, ZF, SF, OF, PF, AF. ADD - πρόσθεσε τον δεύτερο τελεστέο στον πρώτο. SUB - αφαίρεσε τον δεύτερο τελεστέο από τον πρώτο. CMP - αφαίρεσε τον δεύτερο τελεστέο από τον πρώτο (μόνο για σημαίες). AND - λογικό ΚΑΙ μεταξύ όλων των ψηφίων των 2 τελεστέων. Εφαρμόζονται οι παρακάτω κανόνες : 1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0 Όπως βλέπετε παίρνουμε το 1, όταν και τα 2 bit είναι 1. TEST - το ίδιο με την AND μόνο που είναι για σημαίες. 24

25 OR - λογικό Ή μεταξύ όλων των ψηφίων των 2 τελεστέων. Εφαρμόζονται οι παρακάτω κανόνες : 1 OR 1 = 1 1 OR 0 = 1 0 OR 1 = 1 0 OR 0 = 0 Όπως βλέπετε παίρνουμε το 1, κάθε φορά που υπάρχει τουλάχιστον ένας 1 (άσσος) σε κάποιο από τα bit XOR - λογικό XOR (αποκλειστικό ή) μεταξύ όλων των ψηφίων των 2 τελεστέων. Εφαρμόζονται οι παρακάτω κανόνες : 1 XOR 1 = 0 1 XOR 0 = 1 0 XOR 1 = 1 0 XOR 0 = 0 Όπως βλέπετε παίρνουμε το 1 κάθε φορά που τα bit είναι διαφορετικά μεταξύ τους. Δεύτερη Ομάδα: MUL, IMUL, DIV, IDIV Υποστηρίζονται οι παρακάτω τύποι τελεστέων: REG memory REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], μεταβλητή, και άλλα... Οι εντολές MUL και IMUL επηρεάζουν μόνο τις παρακάτω σημαίες: CF, OF Όταν το αποτέλεσμα είναι μεγαλύτερο από το μέγεθος του τελεστέου αυτές οι σημαίες παίρνουν την τιμή 1. Όταν το αποτέλεσμα είναι μικρότερο ή ίσο, τότε οι σημαίες παίρνουν την τιμή 0. 25

26 Για τις εντολές DIV και IDIV δεν έχουν προσδιοριστεί σημαίες. MUL - απροσήμαστος πολλαπλασιασμός: όταν ο τελεστέος είναι ένα byte: AX = AL * τελεστέος. όταν ο τελεστέος είναι word (λέξη): (DX AX) = AX * τελεστέος. IMUL - προσημασμένος πολλαπλασιασμός: όταν ο τελεστέος είναι ένα byte: AX = AL * τελεστέος. όταν ο τελεστέος είναι word: (DX AX) = AX * τελεστέος. DIV - απροσήμαστη διαίρεση: όταν ο τελεστέος είναι ένα byte: AL = AX / τελεστέος AH = υπόλοιπο. όταν ο τελεστέος είναι word: AX = (DX AX) / τελεστέος DX = υπόλοιπο. IDIV - προσημασμένη διαίρεση: όταν ο τελεστέος είναι ένα byte: AL = AX / τελεστέος AH = υπόλοιπο. όταν ο τελεστέος είναι word: AX = (DX AX) / τελεστέος DX = υπόλοιπο. 26

27 Τρίτη Ομάδα: INC, DEC, NOT, NEG Υποστηρίζονται οι παρακάτω τύποι τελεστέων: REG memory REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], μεταβλητή, και άλλα... Οι εντολές INC, DEC επηρεάζουν μόνο τις παρακάτω σημαίες: ZF, SF, OF, PF, AF. Η εντολή NOT δεν επηρεάζει καμία σημαία! Η εντολή NEG επηρεάζει μόνο τις παρακάτω σημαίες: CF, ZF, SF, OF, PF, AF. NOT - αντιστροφή κάθε bit του τελεστέου. NEG - μετατροπή τελεστέου σε αρνητικό (συμπλήρωμα ως προς 2). Στην πραγματικότητα αντιστρέφει το κάθε bit του τελεστέου και στη συνέχεια του προσθέτει το 1 σε κάθε ένα από αυτά. Για παράδειγμα, το 5 θα γίνει -5 και το -2 θα γίνει 2. 27

28 7. Έλεγχος Ροής Προγράμματος Ο έλεγχος ροής προγράμματος είναι πολύ σημαντικός. Είναι το σημείο που το πρόγραμμά σας, μπορεί να πάρει αποφάσεις σύμφωνα με συγκεκριμένες καταστάσεις Διακλαδώσεις χωρίς συνθήκη. Η βασική εντολή που μεταφέρει τον έλεγχο σε ένα άλλο σημείο του προγράμματος είναι η JMP. Η βασική σύνταξη της JMP είναι: JMP ετικέτα Για να δηλώσουμε μια ετικέτα στο πρόγραμμα, απλά γράφουμε το όνομά της και προσθέτουμε στο τέλος τον χαρακτήρα ":". Η ετικέτα μπορεί να είναι οποιοσδήποτε συνδυασμός χαρακτήρων, αλλά δεν μπορεί να ξεκινάει με αριθμό. Για παράδειγμα, δείτε 3 αποδεκτούς τρόπους δήλωσης ετικέτας: label1: label2: a: Η ετικέτα δεν μπορεί να δηλωθεί σε διαφορετική γραμμή ή πριν από κάποια άλλη εντολή. Για παράδειγμα : x1: MOV AX, 1 x2: MOV AX, 2 Ορίστε ένα παράδειγμα με την εντολή JMP: ORG 100h MOV AX, 5 ;βάλε στον AX το 5. MOV BX, 2 ; βάλε στον BX το 2. JMP calc ; πήγαινε στην ετικέτα 'calc'. back: JMP stop ; πήγαινε στην ετικέτα 'stop'. calc: ADD AX, BX JMP back stop: ; πρόσθεσε το BX στον AX. ; πήγαινε στην ετικέτα 'back'. RET ; επιστροφή στο λειτουργικό σύστημα. END ; οδηγία προς τον compiler να σταματήσει. Φυσικά, υπάρχει πιο εύκολος τρόπος να υπολογίσουμε το άθροισμα 2 αριθμών, αλλά είναι ένα καλό παράδειγμα της εντολής JMP. Όπως βλέπετε από το παράδειγμα, η JMP μπορεί να μεταφέρει τον έλεγχο τόσο προς τα εμπρός, όσο και προς τα πίσω. Μπορεί να μεταπηδήσει οπουδήποτε μέσα στο τρέχων τμήμα κώδικα (65, 535 bytes). 28

29 Διακλαδώσεις με συνθήκη. Σε αντίθεση με την εντολή JMP που κάνει διακλαδώσεις χωρίς συνθήκη, υπάρχουν εντολές που κάνουν διακλαδώσεις με συνθήκη (μεταπήδηση μόνο όταν ισχύει μια συνθήκη, κατάσταση). Αυτές οι εντολές χωρίζονται σε 3 ομάδες. Η πρώτη ομάδα εξετάζει μόνο τις απλές σημαίες. Η δεύτερη ομάδα, συγκρίνει προσημασμένους αριθμούς και η τρίτη ομάδα, συγκρίνει απροσήμαστους αριθμούς. Οδηγίες Μεταπήδησης που Εξετάζουν μόνο Απλές Σημαίες. Εντολή Περιγραφή Κατάσταση Αντίθετη εντολή JE, JZ Διακλάδωση αν είναι ίσο. ZF = 1 JNZ, JNE JC, JB, JNAE Διακλάδωση αν είναι μικρότερο μη προσημασμένο. CF = 1 JNC, JNB, JAE JS Διακλάδωση εάν αρνητικό αποτέλεσμα. SF = 1 JNS JO Διακλάδωση εάν υπάρχει υπέρβαση κρατουμένου. OF = 1 JNO JPE, JP Διακλάδωση εάν υπάρχει ισοτιμία. PF = 1 JPO JNZ, JNE Διακλάδωση εάν είναι άνισα. ΖF = 0 JZ, JE Διακλάδωση εάν δεν είναι JNC, JNB, μικρότερο μη JAE Προσημασμένο. CF=0 JC, JB, JNAE JNS Διακλάδωση εάν θετικό αποτέλεσμα. SF = 0 JS JNO Διακλάδωση εάν δεν υπάρχει υπέρβαση κρατουμένου. OF = 0 JO JPO, JNP Διακλάδωση εάν δεν υπάρχει ισοτιμία. PF = 0 JPE, JP Όπως βλέπετε υπάρχουν εντολές που κάνουν το ίδιο πράγμα, που είναι σωστό, που έχουν ακριβώς τον ίδιο κώδικα μηχανής, οπότε είναι καλό να θυμάστε πως όταν μεταγλωττίζετε την εντολή JE - θα την πάρετε μεταφρασμένη ως: JZ. Διαφορετικά ονόματα χρησιμοποιούνται ώστε τα προγράμματα να είναι πιο εύκολα, τόσο στην κατανόηση, όσο και στον κώδικα. 29

30 Εντολές μεταπήδησης για Προσημασμένους Αριθμούς. JE, JZ Εντολή Περιγραφή Κατάσταση Αντίθετη εντολή JNZ, JNE JG, JNLE JL, JNGE JGE, JNL JLE, JNG Διακλάδωση αν είναι ίσο (=) Διακλάδωση αν είναι 0. Διακλάδωση αν είναι άνισα (<>) Διακλάδωση αν δεν είναι 0. Διακλάδωση αν είναι μεγαλύτερο προσημασμένο. Διακλάδωση αν είναι μικρότερο προσημασμένο. Διακλάδωση αν δεν είναι μικρότερο προσημασμένο. Διακλάδωση αν δεν είναι μεγαλύτερο προσημασμένο. ZF = 1 ZF = 0 ZF = 0 and SF = OF SF<>OF SF=OF ZF = 1 and SF <> OF JNZ, JNE JE, JZ JNG, JLE JNL, JGE JNGE, JL JNLE, JG <> - σημαίνει όχι ίσα (άνισα). Εντολές μεταπήδησης για Απροσήμαστους Αριθμούς. Εντολή Περιγραφή Κατάσταση Αντίθετη εντολή JE, JZ Διακλάδωση αν είναι ίσο (=) Διακλάδωση αν είναι 0. ZF = 1 JNE, JNZ JNE, JNZ Διακλάδωση αν είναι άνισα (<>) Διακλάδωση αν δεν είναι 0. ZF = 0 JE, JZ JΑ, JNΒE Διακλάδωση αν είναι μεγαλύτερο CF = 0 προσημασμένο. and Διακλάδωση αν είναι μικρότερο ZF = 0 προσημασμένο. JNG, JLE JB, JNAE, JC Διακλάδωση αν έχει κρατούμενο. CF = 1 JNL, JGE JAE, JNB, Διακλάδωση αν δεν είναι JNC μικρότερο προσημασμένο. CF = 0 JNGE, JL JBE, JNA Διακλάδωση αν δεν είναι μεγαλύτερο προσημασμένο. CF = 1 or ZF = 1 JNLE, JG Γενικά, όταν απαιτείται σύγκριση μεταξύ αριθμών χρησιμοποιείται η εντολή CMP (κάνει ακριβώς το ίδιο πράγμα με την εντολή SUB αφαίρεση αλλά δεν κρατάει το αποτέλεσμα, απλά επηρεάζει τις σημαίες). Η λογική είναι πολύ απλή. Για παράδειγμα: Απαιτείται η σύγκριση μεταξύ των 5 και 2, 5-2=3. Το αποτέλεσμα δεν είναι μηδέν (η σημαία μηδενικού παίρνει την τιμή 0). 30

31 Ένα άλλο παράδειγμα: Απαιτείται η σύγκριση μεταξύ των 7 και72, 7-7=0. Το αποτέλεσμα είναι μηδέν! (η σημαία μηδενικού παίρνει την τιμή 1 και οι εντολές JZ ή JE δεν θα κάνουν την μεταπήδηση). Ένα παράδειγμα με εντολές CMP και διακλαδώσεις με συνθήκη: include emu8086.inc ORG 100h MOV AL, 25 ; βάλε στον AL το 25. MOV BL, 10 ; βάλε στον BL το 10. CMP AL, BL ; σύγκρινε τους AL - BL. JE equal ; διακλάδωση αν AL = BL (ZF = 1). PUTC 'N' ; αν έρθει εδώ, τότε AL <> BL, JMP stop ; τύπωσε το 'Ν' και πήγαινε στην ετικέτα stop. equal: PUTC 'Y' ; αν έρθει εδώ, ; τότε AL = BL, οπότε τύπωσε το 'Y'. stop: RET ; θα φτάσει εδώ, ότι και αν συμβεί. END Δοκιμάστε το παραπάνω παράδειγμα με διαφορετικούς αριθμούς για τους καταχωρητές AL και BL, δείτε τις σημαίες, κάνοντας click στο πλήκτρο [FLAGS]. Χρησιμοποιείστε το [Single Step] και δείτε τι συμβαίνει. Μην ξεχάσετε να ξαναμεταγλωττίσετε, να επαναφορτώσετε μετά από κάθε αλλαγή (χρησιμοποιείστε την συντόμευση F5). Όλες οι διακλαδώσεις με συνθήκη έχουν ένα μεγάλο περιορισμό. Σε αντίθεση με την εντολή CMP μπορούν να μεταπηδήσουν 127 bytes προς τα εμπρός και 128 bytes προς τα πίσω (σημειώστε ότι οι περισσότερες εντολές συμβολομεταφράζονται σε 3 ή περισσότερα bytes). Μπορούμε εύκολα αποφύγουμε αυτούς τους περιορισμούς με ένα έξυπνο κόλπο: Πάρτε μια αντίθετη εντολή διακλάδωσης με συνθήκη από τον παραπάνω πίνακα και κάντε μεταπήδηση στην ετικέτα_x. Χρησιμοποιείστε την εντολή JMP για να μεταπηδήσετε σε συγκεκριμένη τοποθεσία. Ορίστε την ετικέτα_x: αμέσως μετά την εντολή JMP. ετικέτα_x: - μπορεί να έχει οποιοδήποτε έγκυρο όνομα. 31

32 Ορίστε ένα παράδειγμα: include emu8086.inc ORG 100h MOV AL, 25 ; βάλε στον AL το 25. MOV BL, 10 ; βάλε στον BL το 10. CMP AL, BL ; σύγκρινε AL - BL. JNE not_equal ; μεταπήδηση if AL <> BL (ZF = 0). JMP equal not_equal: ; ας υποθέσουμε ότι εδώ έχουμε ; ένα κομμάτι κώδικα που συμβολομεταφράζεται ; σε περισσότερα από 127 bytes... PUTC 'N' ; αν έρθει εδώ, τότε AL <> BL, JMP stop ; οπότε τύπωσε το 'N', και πήγαινε στην ετικέτα stop. equal: ; αν έρθει εδώ, PUTC 'Y' ; τότε AL = BL, οπότε τύπωσε το 'Y'. stop: RET ; θα φτάσει εδώ, ότι και αν συμβεί. END Μια άλλη, ακόμα πιο σπάνια χρησιμοποιούμενη περίπτωση, προσφέρει σταθερή τιμή αντί μιας ετικέτας. Όταν η σταθερή τιμή ξεκινάει με τον χαρακτήρα "$", πραγματοποιείται όμοια μεταπήδηση, διαφορετικά ο μεταγλωττιστής μετράει τις εντολές που πραγματοποιούν απευθείας μεταπήδηση στην ενεργό διεύθυνση. Για παράδειγμα: ORG 100h ;διακλάδωση χωρίς συνθήκη προς τα εμπρός: ; προσπερνάμε για τα επόμενα 2 byte, JMP $2 a DB 3 ; 1 byte. b DB 4 ; 1 byte. ; JCC διακλάδωση προς τα πίσω κατά 7 bytes: ; (JMP παίρνει 2 byte από μόνο του) MOV BL,9 DEC BL ; 2 bytes. CMP BL, ; 3 bytes. JNE $-7 RET END 32

33 8. Διαδικασίες Η διαδικασία είναι μέρος του κώδικα που μπορεί να καλεστεί από το πρόγραμμά σας, ώστε να πραγματοποιήσει ένα συγκεκριμένο έργο. Οι διαδικασίες καθιστούν το πρόγραμμα πιο δομημένο και πιο εύκολο στην κατανόηση. Γενικά, η διαδικασία επιστρέφει στο ίδιο σημείο από το οποίο καλέστηκε. Η σύνταξη για τη δήλωση διαδικασίας είναι: όνομα PROC ; εδώ μπαίνει ο κώδικας ; της διαδικασίας... RET όνομα ENDP όνομα - είναι το όνομα της διαδικασίας. Το ίδιο όνομα πρέπει να είναι τόσο στην κορυφή, όσο και στο βάθος. Αυτό χρησιμοποιείται για τον έλεγχο σωστού κλεισίματος διαδικασιών. Πιθανόν, ήδη να ξέρετε ότι η εντολή RET χρησιμοποιείται για την επιστροφή στο λειτουργικό σύστημα. Η ίδια εντολή χρησιμοποιείται για την επιστροφή από την διαδικασία. (Στην πραγματικότητα, τα λειτουργικά συστήματα βλέπουν τα προγράμματα σαν διαφορετικές διαδικασίες). Οι εντολές PROC και ENDP είναι οδηγίες προς τον μεταγλωττιστή, ώστε να μην συμβολομεταφραστούν σε οποιοδήποτε πραγματικό κώδικα μηχανής. Ο μεταγλωττιστής απλά θυμάται τη διεύθυνση της διαδικασίας. Η εντολή CALL χρησιμοποιείται για να καλέσουμε την διαδικασία. Ορίστε ένα παράδειγμα: ORG 100h CALL m1 MOV AX, 2 RET ; επιστροφή στο λειτουργικό σύστημα. m1 PROC MOV BX, 5 RET ; επιστροφή στο σημείο από το οποίο καλέστηκε. m1 ENDP END Το παραπάνω παράδειγμα καλεί την διαδικασία m1, εκτελεί την εντολή MOV BX, 5 και επιστρέφει στην επόμενη εντολή μετά την CALL την MOV AX, 2. Αυτοί είναι οι διάφοροι τρόποι να περάσουμε παραμέτρους στις διαδικασίες. Ο πιο εύκολος τρόπος, είναι μέσω καταχωρητών. Ορίστε και ένα παράδειγμα μιας διαδικασίας που δέχεται 2 παραμέτρους στους καταχωρητές AL και BL αντίστοιχα, τις πολλαπλασιάζει και επιστρέφει το αποτέλεσμα στον καταχωρητή AX: 33

34 ORG 100h MOV AL, 1 MOV BL, 2 CALL CALL CALL CALL m2 m2 m2 m2 RET ; επιστροφή στο λειτουργικό σύστημα. m2 PROC MUL BL ; AX = AL * BL. RET ; επιστροφή στο σημείο από το οποίο καλέστηκε. m2 ENDP END Στο παραπάνω παράδειγμα η τιμή του καταχωρητή AL ενημερώνεται κάθε φορά που η διαδικασία καλείται. Ο BL καταχωρητής παραμένει ίδιος. Αυτός ο αλγόριθμος υπολογίζει το 2 σε δύναμη του 4, οπότε το τελικό αποτέλεσμα στον καταχωρητή AX είναι το 16 (ή 10h). Ορίστε και ένα άλλο παράδειγμα, που χρησιμοποιεί μια διαδικασία για να εμφανίσει το μήνυμα "Hello World!": ORG 100h LEA SI, msg ; ο SI παίρνει την διεύθυνση της μεταβλητής msg. CALL print_me RET ; επιστροφή στο λειτουργικό σύστημα. ; ========================================================== ; η διαδικασία αυτή εκτυπώνει ένα αλφαριθμητικό που έπρεπε να είναι κενό. ; έπρεπε να έχει στο τέλος 0, ; η διεύθυνση του αλφαριθμητικού έπρεπε να είναι στον καταχωρητή SI: print_me PROC next_char: CMP b.[si], 0 ; έλεγχος μέχρι να βρει 0. JE stop MOV AL, [SI] ; πάρε τον επόμενο ASCII χαρακτήρα. MOV AH, 0Eh ; τηλέτυπο αριθμού λειτουργίας. INT 10h ; χρήση διακοπής για να εκτυπώσει το ; περιεχόμενο του AL. ADD SI, 1 ; αυξάνουμε κατά ένα ώστε να πάμε στο ; επόμενο στοιχείο του αλφαριθμητικού JMP next_char ; πήγαινε πίσω και τύπωσε τον επόμενο ; χαρακτήρα. stop: RET ; επιστροφή στο σημείο από το οποίο καλέστηκε. print_me ENDP ; ========================================================== Msg DB 'Hello World!', 0 ;τερματικός χαρακτήρας αλφ/κού. END 34

35 "b." - το πρόθεμα αυτό πριν το [SI] σημαίνει ότι χρειάζεται να συγκρίνουμε 2bytes και όχι λέξεις. Όταν αντίθετα χρειάζεται να συγκρίνετε λέξεις προσθέτετε το πρόθεμα "w.". Όταν ένας από τους δύο τελεστέους είναι καταχωρητής, δεν χρειάζεται να βάλετε πρόθεμα γιατί ο μεταγλωττιστής γνωρίζει το μέγεθος του κάθε καταχωρητή. 9. Ο σωρός Ο σωρός είναι μια περιοχή στη μνήμη που κρατάει προσωρινά τα δεδομένα. Ο σωρός χρησιμοποιείται από την εντολή CALL για να κρατήσει τη διεύθυνση επιστροφής για τη διαδικασία. Η εντολή RET παίρνει τη τιμή από το σωρό και επιστρέφει στην ενεργό διεύθυνση. Σχεδόν το ίδιο συμβαίνει όταν η εντολή INT καλεί μια διακοπή. Αποθηκεύει στο σωρό σε σημαία καταχωρητή το τμήμα κώδικα και την ενεργό διεύθυνση. Η εντολή IRET χρησιμοποιείται για να επιστρέψουμε από κλήση διακοπής. Επίσης μπορούμε να χρησιμοποιήσουμε το σωρό για να κρατήσουμε οποιοδήποτε άλλο δεδομένο. Υπάρχουν δύο εντολές που δουλεύουν με τον σωρό: PUSH - αποθηκεύει στο σωρό τιμές 16byte. POP - παίρνει τιμές από το σωρό 16byte. Σύνταξη για την εντολή PUSH: PUSH REG PUSH SREG PUSH memory PUSH immediate REG: AX, BX, CX, DX, DI, SI, BP, SP. SREG: DS, ES, SS, CS. memory: [BX], [BX+SI+7], 16 bit μεταβλητή, και άλλα... immediate: 5, -24, 3Fh, b, και άλλα... Σύνταξη για την εντολή POP: POP REG POP SREG POP memory REG: AX, BX, CX, DX, DI, SI, BP, SP. SREG: DS, ES, SS, (εκτός από τον CS). memory: [BX], [BX+SI+7], 16 bit μεταβλητή, και άλλα... 35

36 Ο σωρός χρησιμοποιεί αλγόριθμο LIFO (Ο τελευταίος βγαίνει πρώτος). Αυτό σημαίνει πως όταν κάνουμε PUSH τιμές μία προς μία στο σωρό: 1, 2, 3, 4, 5 Η πρώτη τιμή που θα εξαχθεί θα είναι το 5, μετά το 4, 3, 2, και τελευταία η 1. Είναι πολύ σημαντικό όσα PUSH γίνονται να έχουμε αντίστοιχα και τόσα POP, διαφορετικά ο σωρός μπορεί να φθαρεί και θα είναι απίθανο να επιστρέψει στο λειτουργικό σύστημα, ώστε όταν ξεκινάει το πρόγραμμα να υπάρχει η διεύθυνση επιστροφής στο σωρό (γενικά είναι η 0000h). Οι εντολές PUSH και POP είναι ιδιαίτερα χρήσιμες επειδή δεν έχουμε τόσους πολλούς καταχωρητές να χρησιμοποιήσουμε. Οπότε να ένα κόλπο: Αποθήκευση της αρχικής τιμής του καταχωρητή στο σωρό (χρησιμοποιώντας PUSH). Χρήση του καταχωρητή για οποιοδήποτε λόγο. Επαναφορά της αρχικής τιμής του καταχωρητή από το σωρό (χρησιμοποιώντας POP). Ορίστε ένα παράδειγμα: ORG 100h MOV AX, 1234h PUSH AX ; αποθήκευση του AX στο σωρό. MOV AX, 5678h ; τροποποίηση του AX. POP AX ; επιστροφή αρχικής τιμής του AX στον AX. RET END 36

37 Μια άλλη χρήση του σωρού είναι για ανταλλαγή τιμών. Ορίστε ένα παράδειγμα: ORG 100h MOV AX, 1212h ; αποθήκευση της τιμής 1212h στον AX. MOV BX, 3434h ; αποθήκευση της τιμής 3434h στον BX. PUSH AX ; αποθήκευση του AX στο σωρό. PUSH BX ; αποθήκευση του BX στο σωρό. POP AX ; επιστροφή αρχικής τιμής στον AX. POP BX ; επιστροφή αρχικής τιμής στον BX. RET END Η ανταλλαγή συμβαίνει επειδή ο σωρός χρησιμοποιεί αλγόριθμο LIFO, οπότε όταν κάνουμε PUSH την τιμή 1212h και μετά την 3434h, στο POP θα πάρουμε πρώτα την τιμή 3434h και μετά την τιμή 1212h. Η περιοχή μνήμης του σωρού ορίζεται από τους καταχωρητές SS (τμήμα σωρού) και SP (δείκτης σωρού). Γενικά το λειτουργικό σύστημα θέτει τιμές σε αυτούς τους καταχωρητές με την εκκίνηση του προγράμματος. Η "PUSH πηγή" εντολή κάνει τα εξής: Αφαιρεί το 2 από τον καταχωρητή SP. Γράφει την τιμή της πηγής στη διεύθυνση SS:SP. Η "POP διαδρομή" εντολή κάνει τα εξής: Γράφει την τιμή από τη διεύθυνση SS:SP στην διαδρομή. Προσθέτει το 2 στον καταχωρητή SP. Η τωρινή διέυθυνση που δείχνετε από το SS:SP καλείται κορυφή του σωρού. Για COM αρχεία το τμήμα σωρού, είναι γενικά το τμήμα κώδικα και ο δείκτης σωρού παίρνει τη τιμή 0FFFEh. Στη διεύθυνση SS:0FFFEh έχει αποθηκευτεί η διεύθυνση επιστροφής από την εντολή RET που εκτελείται στο τέλος του προγράμματος. Στον emu8086 μπορείτε να οπτικά να δείτε τη λειτουργία του σωρού κάνοντας click στο πλήκτρο [Stack] στο παράθυρο του εξομοιωτή. Η κορυφή του σωρού συμβολίζεται με το χαρακτήρα "<". 37

38 10. Μακροεντολές Οι μακροεντολές είναι σαν τις διαδικασίες, αλλά όχι πραγματικά. Οι μακροεντολές μοιάζουν με διαδικασίες, αλλά υπάρχουν μόνο μέχρι τη μεταγλωττιστεί ο κώδικας. Μετά τη μεταγλώττιση όλες οι μακροεντολές αντικαθίστανται με πραγματικές εντολές. Αν έχετε δηλώσει μια μακροεντολή και δεν την έχετε χρησιμοποιήσει πότε στο κώδικα, ο μεταγλωττιστής απλά θα την αγνοήσει. Emu8086.inc είναι ένα πολύ καλό παράδειγμα του πως χρησιμοποιούνται οι μακροεντολές. Αυτό το αρχείο περιλαμβάνει μακροεντολές που κάνουν τον προγραμματισμό πιο εύκολο. Ορισμός μακροεντολής: όνομα MACRO [παράμετροι,...] <εντολές> ENDM Αντίθετα με τις διαδικασίες, οι μακροεντολές πρέπει να οριστούν πάνω από το κώδικα που τις χρησιμοποιεί. Για παράδειγμα: MyMacro MACRO p1, p2, p3 MOV AX, p1 MOV BX, p2 MOV CX, p3 ENDM ORG 100h MyMacro 1, 2, 3 MyMacro 4, 5, DX RET Ο πιο πάνω κώδικας αναλύεται σε: MOV AX, 00001h MOV BX, 00002h MOV CX, 00003h MOV AX, 00004h MOV BX, 00005h MOV CX, DX 38

39 Μερικά σημαντικά στοιχεία για τις μακροεντολές και τις διαδικασίες: Όταν θέλετε να χρησιμοποιήσετε μια διαδικασία πρέπει να χρησιμοποιήσετε την εντολή CALL. Για παράδειγμα: CALL MyProc Όταν θέλετε να χρησιμοποιήσετε μια μακροεντολή απλά γράφετε το όνομά της. Για παράδειγμα: MyMacro Η διαδικασία βρίσκεται σε συγκεκριμένη διεύθυνση της μνήμης και αν θέλετε να χρησιμοποιήσετε την ίδια διαδικασία 100 φορές, ο επεξεργαστής πρέπει να μεταφέρει τον έλεγχο σε αυτό το μέρος της μνήμης. Ο έλεγχος θα επιστραφεί πίσω στο πρόγραμμα από την εντολή RET. Ο σωρός χρησιμοποιείται για να κρατάμε αυτή τη διεύθυνση. Η εντολή CALL παίρνει 3byte, οπότε το μέγεθος του εκτελέσιμο αρχείου μεγαλώνει, χωρίς να μας νοιάζει πόσες φορές χρησιμοποιείται η διαδικασία. Η μακροεντολή αναλύεται άμεσα στο κώδικα του προγράμματος. Οπότε αν χρησιμοποιήσουμε την ίδια μακροεντολή 100 φορές, ο μεταγλωττιστής αναλύει 100 φορές τη μακροεντολή, κάνοντας το εκτελέσιμο αρχείο όλο και μεγαλύτερο, κάθε φορά που εισάγονται όλες οι εντολές της μακροεντολής. Θα πρέπει να χρησιμοποιείται σωρό ή οποιοδήποτε καταχωρητή γενικού σκοπού για να περνάτε παραμέτρους στις διαδικασίες. Για να περάσετε παραμέτρους σε μακροεντολές, απλά τις γράφετε μετά το όνομα της μακροεντολής. Για παράδειγμα: MyMacro 1, 2, 3 Για να δηλώσετε το τέλος μια μακροεντολής η εντολή ENDM είναι αρκετή. Για να δηλώσετε το τέλος μια διαδικασίας, πρέπει να γράψετε το όνομα της διαδικασίας πριν την εντολή ENDP. Οι μακροεντολές αναλύονται αμέσως στον κώδικα, ως εκ τούτου αν υπάρχουν ετικέτες μέσα στη δήλωση της μακροεντολής μπορεί να πάρετε σφάλμα "δήλωσης εις διπλούν" όταν η μακροεντολή χρησιμοποιείται περισσότερες από 2 φορές. Για να αποφύγετε αυτό το πρόβλημα, χρησιμοποιείστε την εντολή LOCAL ακολουθούμενη από τα ονόματα των μεταβλητών, ετικετών ή ονόματα διαδικασιών. 39

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No 05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο Αρχιτεκτονική Υπολογιστών Εργαστήριο Ενότητα: ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΣΦΑΛΜΑΤΩΣΗΣ Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: Λειτουργίες Αρχείων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

ΧΡΗΣΗ ΠΛΗΚΤΡΟΛΟΓΙΟΥ, ΟΘΟΝΗΣ ΚΑΙ INTERRUPTS ΣΤΟΝ EMULATOR

ΧΡΗΣΗ ΠΛΗΚΤΡΟΛΟΓΙΟΥ, ΟΘΟΝΗΣ ΚΑΙ INTERRUPTS ΣΤΟΝ EMULATOR ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΑΘΗΜΑ : ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ 4 ο ΕΞΑΜΗΝΟ Μαδεµλής Ιωάννης ΧΡΗΣΗ ΠΛΗΚΤΡΟΛΟΓΙΟΥ, ΟΘΟΝΗΣ ΚΑΙ INTERRUPTS ΣΤΟΝ EMULATOR 1. ΧΡΗΣΗ

Διαβάστε περισσότερα

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

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό. Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του

Διαβάστε περισσότερα

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Περιεχόµενα. I Βασικές Γνώσεις 1

Περιεχόµενα. I Βασικές Γνώσεις 1 Περιεχόµενα I Βασικές Γνώσεις 1 1 Μοντελοποίηση Προγραµµάτων 3 1.1 Ψευδογλώσσα....................... 6 1.2 Διαγράµµατα Ροής..................... 6 1.3 Παραδείγµατα σε Ψευδογλώσσα και Διαγράµµατα Ροής.

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

Διαβάστε περισσότερα

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

Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεµατική Ενότητα ΠΛΗ 2: Ψηφιακά Συστήµατα Ακαδηµαϊκό Έτος 24 25 Ηµεροµηνία Εξέτασης 29.6.25 Χρόνος Εξέτασης

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 12 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86 ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86 Αρης Ευθυμίου Το σημερινό μάθημα! Λυση του lab02! Αρχιτεκτονική ARM σε τι μοιάζει και σε τι διαφέρει από τον MIPS! Αρχιτεκτονική x86 μια γρήγορη ματιά στη

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

Διαβάστε περισσότερα

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

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ ΙΑΚΟΠΕΣ (INTERRUPTS) ΟΙ ΙΑΚΟΠΕΣ ΕΙΝΑΙ «ΣΥΜΒΑΝΤΑ», ΕΣΩΤΕΡΙΚΑ

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Projects στο Εργαστήριο Αρχιτεκτονικής Υπολογιστών Version 2 Ισχύει από Φεβρουάριο 2009

Projects στο Εργαστήριο Αρχιτεκτονικής Υπολογιστών Version 2 Ισχύει από Φεβρουάριο 2009 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΑΘΗΜΑ : ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ 4 ο ΕΞΑΜΗΝΟ Projects στο Εργαστήριο Αρχιτεκτονικής Υπολογιστών Version 2 Ισχύει από Φεβρουάριο

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΑΚΑ ΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture-ISA) 1 Ένας υπολογιστής

Διαβάστε περισσότερα

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αρχιτεκτονική υπολογιστών Ενότητα 12 : Δομή και Λειτουργία της CPU 2/2 Φώτης Βαρζιώτης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΜΑΘΗΜΑ : Η/Υ I (ενότητα WINDOWS) ΥΠΕΥΘΥΝΟΣ : ΑΝΑΣΤΑΣΙΟΣ ΟΙΚΟΝΟΜΙΔΗΣ, Καθηγητής ΕΡΓΑΣΤΗΡΙΑ : ΘΕΑΝΩ ΧΑΤΖΙΔΑΚΗ, Εργαστηριακό

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τύποι, Σταθερές και Μεταβλητές

Τύποι, Σταθερές και Μεταβλητές ΚΕΦΑΛΑΙΟ 3 Τύποι, Σταθερές και Μεταβλητές Η έννοια της μεταβλητής Γενικά μπορούμε να πούμε ότι η έννοια της μεταβλητής στον προγραμματισμό είναι άμεσα συνδεδεμένη με την έννοια που αυτή έχει σε μαθηματικό

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να Κεεφάάλλααι ιοο:: 3Β ο Τίττλλοοςς Κεεφααλλααί ίοουυ: : Αρχιτεκτονική Ηλ/κου Τµήµατος των Υπολ. Συστηµάτων (Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να αναφέρετε τις τιµές των

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεµατική Ενότητα ΠΛΗ 21: Ψηφιακά Συστήµατα Ακαδηµαϊκό Έτος 2009 2010 Γραπτή Εργασία #3 Παράδοση: 28 Μαρτίου 2010 Άσκηση 1 (15 µονάδες) Ένας επεξεργαστής υποστηρίζει τόσο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού ΚΕΦΑΛΑΙΟ 1 ο Περί Προγραμματισμού και Γλωσσών Προγραμματισμού Προγράμματα και Λειτουργικά Συστήματα Οι ηλεκτρονικοί υπολογιστές είναι ηλεκτρονικές συσκευές (όπως είναι και ένα ραδιόφωνο) που επιτρέπουν

Διαβάστε περισσότερα

SPSS Statistical Package for the Social Sciences

SPSS Statistical Package for the Social Sciences SPSS Statistical Package for the Social Sciences Ξεκινώντας την εφαρμογή Εισαγωγή εδομένων Ορισμός Μεταβλητών Εισαγωγή περίπτωσης και μεταβλητής ιαγραφή περιπτώσεων ή και μεταβλητών ΣΤΑΤΙΣΤΙΚΗ Αθανάσιος

Διαβάστε περισσότερα

Ανακαλύπτω. Ο υπολογιστής στην πράξη!

Ανακαλύπτω. Ο υπολογιστής στην πράξη! ΔΗΜΟΣΙΑ ΚΕΝΤΡΙΚΗ ΒΙΒΛΙΟΘΗΚΗ ΛΕΒΑΔΕΙΑΣ ΣΥΛΛΟΓΟΣ «ΦΙΛΟΙ ΒΙΒΛΙΟΘΗΚΗΣ ΛΙΒΑΔΕΙΑΣ» Κατερίνα Κεράστα 2014 Α Μαθαίνω τον υπολογιστή μου Ανακαλύπτω Ο υπολογιστής στην πράξη! Ο υπολογιστής στην πράξη! Επιφάνεια

Διαβάστε περισσότερα

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5) ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ Τοποθετώ μια δισκέτα στον οδηγό τη δισκέτας του υπολογιστή. Τοποθετώ τη δισκέτα που έχει το αρχείο μου στον οδηγό τη δισκέτας του υπολογιστή.

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εφαρμογή Εκτύπωσης Ταξιθετικών Ετικετών 2000-2005

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εφαρμογή Εκτύπωσης Ταξιθετικών Ετικετών 2000-2005 Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Υπολογιστικό Κέντρο Βιβλιοθηκών Εφαρμογή Εκτύπωσης Ταξιθετικών Ετικετών 2000-2005 Σύντομο εγχειρίδιο χρήσης και λειτουργιών Εισαγωγή Το παρόν κείμενο στόχο

Διαβάστε περισσότερα

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω.

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω. Τι είναι το debug μαμα? Με απλά λόγια, debug (αποσφαλμάτωση αλλά που να κάθεσαι να το πεις), είναι η διαδικασία εντοπισμού και διόρθωσης σφαλμάτων που υπάρχουν σε κώδικα (ασχέτως γλώσσας προγραμματισμού).

Διαβάστε περισσότερα

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7 Σύντομη περιγραφή 5 Για να ξεκινήσετε 6 Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7 Οι οθόνες του προγράμματος 8 Αρχική οθόνη 8 Στοιχεία ασθενή 9 Εργασίες - Ραντεβού 10 Εικόνες 11 Ημερολόγιο

Διαβάστε περισσότερα

Αρχιτεκτονική-ΙΙ Μέρος 2 ο

Αρχιτεκτονική-ΙΙ Μέρος 2 ο Αρχιτεκτονική-ΙΙ Μέρος 2 ο Μικροεπεξεργαστής 8086 (Υλικό) Ι. Ν. ΕΛΛΗΝΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗ-ΙΙ 2 8086 Επεξεργαστής των 16 bits/2 bytes (Ρ1) Εμφάνιση το 1978. Χαρακτηριστικά 8086 DIP-40 pins Τροφοδοσία 5V. Ρολόϊ

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

Διαβάστε περισσότερα

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132

Διαβάστε περισσότερα

YourSMS User s Manual

YourSMS User s Manual YourSMS User s Manual Contents Πίνακας περιεχομένων Κεντρική οθόνη... 2 Αποστολές... 3 Αποστολή μοναδικού μηνύματος... 3 Αποστολή μαζικού μηνύματος σε ομάδα παραληπτών... 4 Αποστολή μαζικού προγραμματισμένου

Διαβάστε περισσότερα

Αναπαράσταση Μη Αριθμητικών Δεδομένων

Αναπαράσταση Μη Αριθμητικών Δεδομένων Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Αναπαράσταση Μη Αριθμητικών Δεδομένων (κείμενο, ήχος και εικόνα στον υπολογιστή) http://di.ionio.gr/~mistral/tp/csintro/

Διαβάστε περισσότερα

Σενάριο 18: Ραβδογράμματα Πληθυσμού

Σενάριο 18: Ραβδογράμματα Πληθυσμού Σενάριο 18: Ραβδογράμματα Πληθυσμού Φύλλο Εργασίας Τίτλος: Ραβδογράμματα Πληθυσμού Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές

Διαβάστε περισσότερα

Έκδοση: 1.0. με το. Ασημίνα

Έκδοση: 1.0. με το. Ασημίνα Έκδοση: 1.0 Σύντομες οδηγίες για τη δημιουργία προσβάσιμων εγγράφων με το MS-Word 20100 Ασημίνα Σπανίδου και Γεώργιος Κουρουπέτρογλου aspanidou@di.uoa.gr koupe@di.uoa.gr Έργο «Κεντρικό Μητρώο Ελληνικών

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο Με τι ασχολείται ο προγραμματισμός; Ο προγραμματισμός ασχολείται με την διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον Η/Υ, δηλ. τη δημιουργία του προγράμματος, του συνόλου των εντολών που πρέπει

Διαβάστε περισσότερα

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

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 (Α) Σημειώστε δίπλα σε κάθε πρόταση «Σ» ή «Λ» εφόσον είναι σωστή ή λανθασμένη αντίστοιχα. 1. Τα συντακτικά λάθη ενός προγράμματος

Διαβάστε περισσότερα

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

Σενάριο 17: Παιχνίδι μνήμης με εικόνες Σενάριο 17: Παιχνίδι μνήμης με εικόνες Φύλλο Εργασίας Τίτλος: Παιχνίδι μνήμης με εικόνες Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΓΙΑ ΤΑ ΝΕΑ ΑΝΑΛΥΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ ΓΥΜΝΑΣΙΟΥ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΓΙΑ ΤΑ ΝΕΑ ΑΝΑΛΥΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ ΓΥΜΝΑΣΙΟΥ Νέα Αναλυτικά Προγράμματα Πληροφορικής και Επιστήμης Ηλεκτρονικών Υπολογιστών Πηγή: Οδηγός

Διαβάστε περισσότερα

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 3 Αριθµητική για υπολογιστές Ασκήσεις Η αρίθµηση των ασκήσεων είναι από την 4 η έκδοση του «Οργάνωση και Σχεδίαση

Διαβάστε περισσότερα

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

ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΕΙ ΣΕΡΡΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Εκπαιδευτικό Σύστηµα BGC-8088 ρ. Σπύρος Α. Καζαρλής Επίκουρος Καθηγητής Σέρρες, Σεπτέµβριος 2004 1 Κεφάλαιο

Διαβάστε περισσότερα

Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής

Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής Εγχειρίδιο Εγκατάστασης και Χρήσης Πίνακας Περιεχομένων. Πριν την εγκατάσταση... 3. Ελάχιστες απαιτήσεις σε εξοπλισμό... 3 2. Εγκατάσταση... 4

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C Ιανουάριος 2013 Τι είναι ένα πρόγραμμα; Πρόγραμμα είναι μία σειρά από οδηγίες που δίνουμε στον υπολογιστή προκειμένου αυτός να κάνει κάποια συγκεκριμένη εργασία Πώς

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

Διαβάστε περισσότερα

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 3 Κεντρική Μονάδα Επεξεργασίας Κεντρική Μονάδα Επεξεργασίας Μονάδα επεξεργασίας δεδομένων Μονάδα ελέγχου Μονάδα επεξεργασίας δεδομένων Δομή Αριθμητικής Λογικής Μονάδας

Διαβάστε περισσότερα

Δημιουργία η-μαθήματος με τη. 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας

Δημιουργία η-μαθήματος με τη. 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας Δημιουργία η-μαθήματος με τη χρήση του Moodle 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας Δημιουργία η-μαθήματος με τη χρήση του Moodle 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας

Διαβάστε περισσότερα

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

Stellarium Εγχειρίδιο Οδηγιών

Stellarium Εγχειρίδιο Οδηγιών Προϋποθέσεις συστήματος: Windows (XP, Vista, 7) με DirectX 9.x και τελευταίες ServicePack ή MacOS X 10.3.x (ή υψηλότερη), κάρτα γραφικών 3D με υποστήριξη OpenGL, ελάχ. 512 MB RAM, 1 GB διαθέσιμος χώρος

Διαβάστε περισσότερα

Computing and Information Systems Service. ιαχείριση Αρχείων

Computing and Information Systems Service. ιαχείριση Αρχείων ιαχείριση Αρχείων Η διαχείριση αρχείων είναι πολύ σηµαντική για την οργάνωση των αρχείων σας σε φακέλους και την αποθήκευση των αρχείων που συσχετίζονται µεταξύ τους στον ίδιο φάκελο. Αν έχετε πολλά αρχεία,

Διαβάστε περισσότερα

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑΔΑ A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑΔΑ Β ) ΠΑΡΑΣΚΕΥΗ 5 ΙΟΥΝΙΟΥ 2015 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 24-5 Πράξεις με δυαδικούς αριθμούς (λογικές πράξεις) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης ; Ποιες κατηγορίες

Διαβάστε περισσότερα

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία Ενότητα 3: Ο Υπολογιστής Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΛΕΙΤΟΥΡΓΙΑ Η/Υ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε., ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ, ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΛΕΙΤΟΥΡΓΙΑ Η/Υ Οικογένεια Μικροεπεξεργαστών Intel 8086, Εργαστηριακές Ασκήσεις Δρ. Τοπάλης Ευάγγελος

Διαβάστε περισσότερα

Μορφοποίηση εικόνων. Εισαγωγή. Στόχος κεφαλαίου

Μορφοποίηση εικόνων. Εισαγωγή. Στόχος κεφαλαίου Περιεχόμενα Κεφάλαιο 1: Προετοιμασία παρουσίασης...1 Κεφάλαιο 2: Διαχείριση διαφανειών...18 Κεφάλαιο 3: Διαχείριση γραφικών...31 Κεφάλαιο 4: Επεξεργασία εικόνων με το Adobe Photoshop...56 Κεφάλαιο 5: Μορφοποίηση

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού» [1]. Αυτόματος Μετά την έναρξη της λειτουργίας του εργάζεται μόνος του εκτελώντας

Διαβάστε περισσότερα

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux 1 Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux Το Linux είναι ένα λειτουργικό σύστημα όμοιο με το Unix που αναπτύχθηκε από έναν πυρήνα (kernel, Εικ.1) τον οποίο δημιούργησε το 1991 ο Linus Torvalds όντας

Διαβάστε περισσότερα

και Μεγάλους Επιμέλεια: Κωλέτσου Ευτυχία email: efi.unipi@gmail.com Web: http://www.ekoletsou.gr

και Μεγάλους Επιμέλεια: Κωλέτσου Ευτυχία email: efi.unipi@gmail.com Web: http://www.ekoletsou.gr Υπολογιστές για Μικρούς και Μεγάλους Επιμέλεια: Κωλέτσου Ευτυχία email: efi.unipi@gmail.com Web: http://www.ekoletsou.gr MICROSOFT WINDOWS XP Ξεκινώντας με τα WINDOWS Επιφάνεια Εργασίας Επιμέλεια: ΚΩΛΕΤΣΟΥ

Διαβάστε περισσότερα

Εγκατάσταση προγράμματος 2. Διάβασμα προκήρυξης.7. Γενικές πληροφορίες.. 9. Προσφορά 10. Εισαγωγή εναλλακτικού είδους. 15.

Εγκατάσταση προγράμματος 2. Διάβασμα προκήρυξης.7. Γενικές πληροφορίες.. 9. Προσφορά 10. Εισαγωγή εναλλακτικού είδους. 15. ΠΕΡΙΕΧΟΜΕΝΑ Σελ. Εγκατάσταση προγράμματος 2 Διάβασμα προκήρυξης.7 Γενικές πληροφορίες.. 9 Προσφορά 10 Εισαγωγή εναλλακτικού είδους. 15 Εξαρτήματα 16 Συμμετέχοντες 17 Δικαιολογητικά ανά προμηθευτή. 18 Αρχείο

Διαβάστε περισσότερα

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Ευ ομή Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Περιεχόμενα 1. Χειρισμός του περιβάλλοντος LT125-dp Εγκατάσταση & Τρέξιμο Χειρισμός της ψηφιακής εφαρμογής Πλοήγηση στο περιεχόμενο Αλλαγή του μεγέθους

Διαβάστε περισσότερα

ΓΕΩΠΟΝΙΚΗ ΣΧΟΛΗ ΑΠΘ Εργαστήριο Πληροφορικής στη Γεωργία

ΓΕΩΠΟΝΙΚΗ ΣΧΟΛΗ ΑΠΘ Εργαστήριο Πληροφορικής στη Γεωργία ΓΕΩΠΟΝΙΚΗ ΣΧΟΛΗ ΑΠΘ Εργαστήριο Πληροφορικής στη Γεωργία Το 1944 με την κατασκευή του υπολογιστή Mark I από τον Howard Aiken και την εταιρεία κατασκευής ηλεκτρονικών υπολογιστών IBM και από το 1950 μπήκανε

Διαβάστε περισσότερα