Οδηγός Εκμάθησης στην 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 Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 4: Πολλαπλασιασμός (MUL,IMUL). Διαίρεση (DIV,IDIV). Εμφάνιση αλφαριθμητικού. Εμφάνιση χαρακτήρα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: inc, dec, loop, jcxz, dup, displacement Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΥΠΟΡΟΥΤΙΝΕΣ ΕΡΓΑΣΤΗΡΙΟ 6 Οι υπορουτίνες αποτελούν αυτόνομα τμήματα κώδικα που διεκπεραιώνουν μία συγκεκριμένη εργασία και μπορούμε να τα καλούμε

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

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα

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

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

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

Αρχιτεκτονική Υπολογιστών Ι Αρχιτεκτονική Υπολογιστών Ι Επιλεγμένες εντολές και συναρτήσεις assembly Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

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

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

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

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή Εισαγωγή Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ Σκοπός του εργαστηρίου είναι να γνωρίσουµε την εσωτερική δοµή και αρχιτεκτονική της κεντρικής µονάδας επεξεργασίας, να κατανοήσουµε τον τρόπο µε τον οποίο λειτουργεί

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

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

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

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

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1 Συστήματα αρίθμησης Δεκαδικό σύστημα αρίθμησης 1402 = 1000 + 400 +2 =1*10 3 + 4*10 2 + 0*10 1 + 2*10 0 Γενικά σε ένα σύστημα αρίθμησης με βάση το b N, ένας ακέραιος αριθμός με n ψηφία παριστάνεται ως:

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

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

Αρχιτεκτονική Υπολογιστών Ι Αρχιτεκτονική Υπολογιστών Ι ΥΠΟΔΕΙΞΕΙΣ ΓΙΑ ΤΗ ΛΥΣΗ ΤΩΝ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης

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

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

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

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

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

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

Ενσωματωμένα Συστήματα

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Αναπαράσταση αριθμών στο δυαδικό σύστημα Δρ. Γκόγκος Χρήστος Δεκαδικό σύστημα αρίθμησης Ελληνικό - Ρωμαϊκό Σύστημα αρίθμησης

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

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

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

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

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

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

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

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

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

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

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 10 η Αλφαριθμητικά Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

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

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι: ΚΕΦΑΛΑΙΟ 1 Ο ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΗΣ 8086 Με την ανάπτυξη του µικροεπεξεργαστή 8086 της Intel, έχουµε (από το 1978) την εµφάνιση της γενιάς των υπολογιστών των 16-bit. Στις επόµενες παραγράφους θα εξεταστεί

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014 ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014 ΘΕΜΑ 1 α) Τι διαφέρει μία ROM από μία PAL; Οι ROM έχουν σταθερό αποκωδικοποιητή ο οποίος σχηματίζει όλα τα

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

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

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Ενότητα 3: Άλγεβρα Βοole και Λογικές Πράξεις Δρ. Φραγκούλης Γεώργιος Τμήμα Ηλεκτρολογίας Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ 1 Πράξεις με μπιτ 2 ΑριθμητικέςΠράξειςσεΑκέραιους Πρόσθεση, Αφαίρεση, Πολλαπλασιασμός, Διαίρεση Ο πολλαπλασιασμός

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

ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf)

ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf) ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf) Για να λύνετε εύκολα ασκήσεις στα συστήματα αρίθμησης θα πρέπει να απομνημονεύσετε τα πρώτα 17 βάρη του δυαδικού συστήματος από 2 0 μέχρι 2

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

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

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

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

Κοινή χρήση πόρων με τα Windows XP

Κοινή χρήση πόρων με τα Windows XP Κοινή χρήση πόρων με τα Windows XP Α. Κοινή χρήση αρχείων και φακέλων Θα μάθετε: Να θέτετε σε κοινή χρήση ένα αρχείο ή ένα φάκελο του υπολογιστή με τα Windows XP. Να θέτετε σε κοινή χρήση στο δίκτυο μουσική,

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

Εφαρμογές μικροελεγκτών

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

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

Λειτουργικά Συστήματα

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 3 Λειτουργίες σε Bits, Αριθμητικά Συστήματα Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Φύση υπολογιστών Η

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ Οι λογικές πράξεις που υποστηρίζει η Assembly του 8088 είναι : Πράξη AND Πράξη OR Πράξη NOT Πράξη XOR Με τις λογικές πράξεις μπορούμε

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 Τμήμα θεωρίας: Α.Μ. 8, 9 Κάθε Πέμπτη, 11πμ-2μμ, ΑΜΦ23. Διδάσκων: Ντίνος Φερεντίνος Γραφείο 118 email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό

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

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

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

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

Λειτουργικά Συστήματα

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

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

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά MANAGER SIDE BAR Η Manager side bar είναι μία εφαρμογή σχεδιασμένη να προσφέρει μια σειρά από λειτουργίες και ευκολίες σε κάθε χρήστη Η/Υ προχωρημένο ή αρχάριο. Βασική λειτουργία της εφαρμογής είναι ότι

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

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

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

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