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

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

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

Transcript

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

2 Εργαστήριο Μικροϋπολογιστικών Συστημάτων 3

3 ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ & ΛΕΙΤΟΥΡΓΙΑΣ Η/Υ Διδάσκων: Ευάγγελος Τοπάλης Δρ. Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών ΑΣΚΗΣΗ 1 Εισαγωγικό για το εργαστήριο: MASM MASM Είναι ο µακροσυµβολοµεταφραστής της Microsoft για τους επεξεργαστές της οικογένειας 80x86 της Intel. Ο MASM συναρµολογεί προγράµµατα σε συµβολική γλώσσα και δηµιουργεί µεταθέσιµα αντικειµενικά αρχεία που µπορούν να συνδεθούν και να εκτελεστούν κάτω από το λειτουργικό σύστηµα MS-DOS. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 4

4 Κατάληξη αρχείων asm Φάκελος αποθήκευσης c:/masm/bin/ Project/Compile Project/Build (συγχρόνως κάνει και compile) Run/Execute Run/Debug Στην επιλογή Windows εµφανίζω ή αποκρύβω παράθυρα πληροφοριών (registers, memory, watch ) Με F8 (trace) µπαίνω και µέσα στις συναρτήσεις Με F10 (step by step) εντολή εντολή Με F9(Breakpoint)βάζω breakpoints, µε το ίδιο βγαίνει Run / Restart Watch-Data/add watch Breakpoint Data/add breakpoint/edit breakpoint Εικόνα 1 Περιβάλλον Masm Εργαστήριο Μικροϋπολογιστικών Συστημάτων 5

5 Εικόνα 2 Περιβάλλον Masm Εικόνα 3 Περιβάλλον Masm Εργαστήριο Μικροϋπολογιστικών Συστημάτων 6

6 Εικόνα 4 Περιβάλλον Masm Εικόνα 5 Περιβάλλον Masm Εργαστήριο Μικροϋπολογιστικών Συστημάτων 7

7 Εικόνα 6 Περιβάλλον Masm Εργαστήριο Μικροϋπολογιστικών Συστημάτων 8

8 ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ & ΛΕΙΤΟΥΡΓΙΑΣ Η/Υ Διδάσκων: Ευάγγελος Τοπάλης Δρ. Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών ΑΣΚΗΣΗ 2 ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ, ΤΟΠΟΘΕΤΗΣΗΣ ΔΕΔΟΜΕΝΩΝ, ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ ΠΑΡΑ ΕΙΓΜΑ 1 Παράδειγµα προγράµµατος μεταφοράς δεδομένων. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 9

9 ;**************************************************************** ; παράδειγμα προγράμματος μεταφοράς δεδομένων ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για STACK_SEG segment para STACK ;ορισμός τµήµατος στοίβας µε όνοµα stack_seg db 256 dup (0) ;ορισµός χώρου στοίβας (256 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) STACK_SEG ends ;τέλος του τµήµατος της στοίβας µε όνοµα stack_seg code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS: code ;ορίζει ποιοι καταχωρητές σχετίζονται µε ποια τµήµατα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV BH, 09h ;φόρτωσε τη σταθερά 09h στο high byte (BH) του καταχωρητή BX MOV BL, 0FFh ;φόρτωσε τη σταθερά 0FFh στο low byte (BL) του καταχωρητή BX MOV CX, BX ;φόρτωσε τα περιεχόµενα του καταχωρητή BX στο καταχωρητή CX MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός code ENDS ;τέλος του τµήµατος κώδικα με όνομα code END start ;τέλος του assembly προγράµµατος Σηµείωση1.1: Ο συµβολοµεταφραστής (assembler) δέχεται µόνο 8086/8088 εντολές. Η ντιρεκτίβα.386 (για real mode) και.386p (για protected mode) ενηµερώνει τον assembler να χρησιµοποιήσει το σύνολο των εντολών για επεξεργαστή (80386 instruction set). Σηµείωση1.2: Για τους μέχρι και τους Pentium υπάρχει ακόμα η ντιρεκτίβα USE16 ή USE32 που µπορεί να χρησιµοποιηθεί µε το τµήµα του κώδικα, η οποία ενηµερώνει τον assembler να χρησιµοποιήσει αντίστοιχα 16-bit ή 32-bit τύπους εντολών (instruction modes) για τον επεξεργαστή. Σηµείωση1.3 : Για να χρησιμοποιήσετε κλήσεις συναρτήσεων του DOS, θα πρέπει να τοποθετήσετε τον αριθμό κλήσης της συνάρτησης στον καταχωρητή AH και να τοποθετήσετε όλες τις σχετικές πληροφορίες ως δεδομένα εισόδου σε καταχωρητές όπως αυτό περιγράφεται στον πίνακα. Όταν επιτευχθεί αυτό, καλέστε το INT 21H για να εκτελέσετε την συνάρτηση του DOS. Η εντολή INT 21H είναι ένα παράθυρο επικοινωνίας µε το DOS, και όταν τελειώσει η υπορουτίνα που καλέσαµε ο έλεγχος του συστήµατος επιστρέφει κανονικά στην εντολή που ακολουθεί µετά την INT 21H. Αυτή η γενική ρουτίνα που καλούµε µε την INT 21H σε πρώτη φάση ελέγχει τον καταχωρητή AH για να δει ποιον κωδικό έχουµε τοποθετήσει προ του καλέσµατος. Αυτός ο κωδικός θα µας οδηγήσει στην κατάλληλη I/O ρουτίνα (π.χ. 02H display character routine). Μπορούµε λοιπόν για διάφορες διεργασίες I/O να καλούµε µια έτοιµη ρουτίνα του συστήµατος µε την εντολή INT n. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 10

10 4CH Entry Exit Notes TERMINATE A PROCESS AH = 4CH AL = error code Returns control to DOS This function returns control to DOS with the error code saved so it can be obtained using DOS ERROR LEVEL batch processing system. We normally use this function with an error code of 00H to return to DOS. ΠΑΡΑ ΕΙΓΜΑ 2 Παράδειγµα προγράµµατος που εµφανίζει το χαρακτήρα Α στην οθόνη. ;**************************************************************** ; Παράδειγµα προγράµµατος που εµφανίζει το χαρακτήρα Α στην οθόνη ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για STACK_SEG segment para STACK ;ορισμός τµήµατος στοίβας µε όνοµα stack_seg db 256 dup (0) ;ορισµός χώρου στοίβας (256 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) STACK_SEG ends code SEGMENT 'CODE' ASSUME CS: code ;τέλος του τµήµατος της στοίβας µε όνοµα stack_seg ;έναρξη του τµήµατος κώδικα µε όνοµα code ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV DL, 41h ;βάζει τον ASCII κωδικό του Α (που είναι το 41h) στον DL καταχωρητή MOV AH, 02h ;προετοιµάζει τον AH µε περιεχόµενο τον κωδικό της ρουτίνας εµφάνισης χαρακτήρα (02h: display character) INT 21h ;η εντολή που καλεί τη ρουτίνα του MS-DOS, και προβάλει το χαρακτήρα Α στην οθόνη MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός code ENDS ;τέλος του τµήµατος κώδικα με όνομα code END start ;τέλος του assembly προγράµµατος Σηµείωση2.1: Δεδομένα κωδικοποιημένα σε ASCII (American Standard Code for Information Interchange: Αμερικανικός Πρότυπος Κώδικας Ανταλλαγής Εργαστήριο Μικροϋπολογιστικών Συστημάτων 11

11 Πληροφοριών) αντιπροσωπεύουν αλφαριθμητικούς χαρακτήρες στη μνήμη ενός συστήματος υπολογιστή. ASCII Δεδομένα Σηµείωση2.2: Για να χρησιμοποιήσετε κλήσεις συναρτήσεων του DOS, θα πρέπει να τοποθετήσετε τον αριθμό κλήσης της συνάρτησης στον καταχωρητή AH και να τοποθετήσετε όλες τις σχετικές πληροφορίες ως δεδομένα εισόδου σε καταχωρητές όπως αυτό περιγράφεται στον πίνακα. Όταν επιτευχθεί αυτό, καλέστε το INT 21H για να εκτελέσετε την συνάρτηση του DOS. Η εντολή INT 21H είναι ένα παράθυρο επικοινωνίας µε το DOS, και όταν τελειώσει η υπορουτίνα που καλέσαµε ο έλεγχος του συστήµατος επιστρέφει κανονικά στην εντολή που ακολουθεί µετά την INT 21H. Αυτή η γενική ρουτίνα που καλούµε µε την INT 21H σε πρώτη φάση ελέγχει τον καταχωρητή AH για να δει ποιον κωδικό έχουµε τοποθετήσει προ του καλέσµατος. Αυτός ο κωδικός θα µας οδηγήσει στην κατάλληλη I/O ρουτίνα (π.χ. 02H display character routine). Μπορούµε λοιπόν για διάφορες διεργασίες I/O να καλούµε µια έτοιµη ρουτίνα του συστήµατος µε την εντολή INT n. 02H WRITE TO STANDARD OUTPUT DEVICE Entry Notes AH = 02H DL = ASCII character to be displayed This function call normally displays data on the video display. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 12

12 4CH Entry Exit Notes TERMINATE A PROCESS AH = 4CH AL = error code Returns control to DOS This function returns control to DOS with the error code saved so it can be obtained using DOS ERROR LEVEL batch processing system. We normally use this function with an error code of 00H to return to DOS. ΠΑΡΑ ΕΙΓΜΑ 3 Παράδειγµα προγράµµατος που εµφανίζει το µήνυµα Hello World στην οθόνη. ;**************************************************************** ; Παράδειγµα προγράµµατος που εµφανίζει το µήνυµα Hello World στην οθόνη ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:code,DS:data,SS:stack ;ορίζει ποιοι καταχωρητές σχετίζονται µε ποια τµήµατα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV AX, data ;φόρτωσε τη διεύθυνση του τµήµατος δεδοµένων MOV DS, AX ;στον καταχωρητή τµήµατος δεδοµένων DS (Data Segment Register) MOV DX, OFFSET string ;φόρτωσε τη διεύθυνση (απόσταση) της µεταβλητής string στον DX, τυπώνει από τη θέση του DX μέχρι να βρει $ MOV AH, 09h ;φόρτωσε τη σταθερά 09h (display string) στον AH INT 21h ;για να την εµφανίσει MOV AH, 4Ch ;φόρτωσε τον κωδικό τερµατισµού διεργασίας (4Ch) στον AH INT 21h code ENDS ;για τον τερµατισµό του προγράµµατος data SEGMENT para public ;τέλος του τµήµατος του κώδικα µε όνοµα code string DB "Hello World", 13, 10, "$" LF (10) ;τµήµα δεδοµένων µε όνοµα data data ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα data stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack ;συµβολοσειρά που τελειώνει µε CR (13) ; και DW 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS END start ;τέλος του τµήµατος της στοίβας µε όνοµα stack ;τέλος συµβολικού προγράµµατος Εργαστήριο Μικροϋπολογιστικών Συστημάτων 13

13 Σηµείωση3.1: Για να χρησιμοποιήσετε κλήσεις συναρτήσεων του DOS, θα πρέπει να τοποθετήσετε τον αριθμό κλήσης της συνάρτησης στον καταχωρητή AH και να τοποθετήσετε όλες τις σχετικές πληροφορίες ως δεδομένα εισόδου σε καταχωρητές όπως αυτό περιγράφεται στον πίνακα. Όταν επιτευχθεί αυτό, καλέστε το INT 21H για να εκτελέσετε την συνάρτηση του DOS. Η εντολή INT 21H είναι ένα παράθυρο επικοινωνίας µε το DOS, και όταν τελειώσει η υπορουτίνα που καλέσαµε ο έλεγχος του συστήµατος επιστρέφει κανονικά στην εντολή που ακολουθεί µετά την INT 21H. Αυτή η γενική ρουτίνα που καλούµε µε την INT 21H σε πρώτη φάση ελέγχει τον καταχωρητή AH για να δει ποιον κωδικό έχουµε τοποθετήσει προ του καλέσµατος. Αυτός ο κωδικός θα µας οδηγήσει στην κατάλληλη I/O ρουτίνα (π.χ. 02H display character routine). Μπορούµε λοιπόν για διάφορες διεργασίες I/O να καλούµε µια έτοιµη ρουτίνα του συστήµατος µε την εντολή INT n. 09H Entry Notes DISPLAY A CHARACTER STRING AH = 09H DS:DX = address of the character string The character string must end with an ASCII $ (24H). The character string can be of any length and may contains control characters such as carriage return (0DH) and line feed (0AH). 4CH Entry Exit Notes TERMINATE A PROCESS AH = 4CH AL = error code Returns control to DOS This function returns control to DOS with the error code saved so it can be obtained using DOS ERROR LEVEL batch processing system. We normally use this function with an error code of 00H to return to DOS. ΠΑΡΑ ΕΙΓΜΑ 4 Παράδειγµα προγράµµατος που υπολογίζει το άθροισμα δύο αριθμών ;**************************************************************** ; Παράδειγµα προγράµµατος που υπολογίζει το άθροισμα δύο αριθμών ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για mycode SEGMENT USE16 PARA PUBLIC CODE ;έναρξη του τµήµατος κώδικα µε όνοµα mycode ASSUME CS:mycode, DS:mydata ;ορίζει ποιοι καταχωρητές σχετίζονται µε ποια τµήµατα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος Εργαστήριο Μικροϋπολογιστικών Συστημάτων 14

14 MOV AX, mydata MOV DS, AX SUB DX, DX MOV AX, NUM1 MOV BX, NUM2 ;φόρτωσε τη διεύθυνση του τµήµατος δεδοµένων ;στον καταχωρητή τµήµατος δεδοµένων DS ;µηδένισε τον καταχωρητή υπερχείλισης DX ;τοποθέτησε ένα αριθµό στον καταχωρητή AX ;τοποθέτησε ένα αριθµό στον καταχωρητή BX ADD AX, BX ;πρόσθεσε στον ΑΧ τον ΒΧ και το αποτέλεσμα βάλτο στον ΑΧ MOV ANS, AX ;τοποθέτησε το αποτέλεσµα στο ANS MOV AH, 4Ch ;φόρτωσε τον κωδικό τερµατισµού διεργασίας INT 21h ;για τον τερµατισµό της mycode ENDS ;τέλος του τµήµατος του κώδικα µε όνοµα mycode mydata SEGMENT PARA PUBLIC DATA ;έναρξη του τµήµατος δεδομένων µε όνοµα mydata NUM1 DW 1234h ;καθορισµός δεκαεξαδικού δεδοµένου (Define Word) NUM2 DW 0001h ANS DW? ;δεσµεύει µια λέξη (word) στη µνήµη χωρίς κάποιο συγκεκριµένο περιεχόµενο, όπου θα τοποθετηθεί το αποτέλεσµα το οποίο θα προκύψει mydata ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα mydata stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DW 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END start τέλος συµβολικού προγράµµατος ΠΑΡΑ ΕΙΓΜΑ 5 Παράδειγµα προγράµµατος που υπολογίζει το γινόμενο δύο αριθμών ;**************************************************************** ; Παράδειγµα προγράµµατος που υπολογίζει το γινόμενο δύο αριθμών ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για mycode SEGMENT USE16 PARA PUBLIC CODE ;έναρξη του τµήµατος κώδικα µε όνοµα mycode ASSUME CS:mycode, DS:mydata ;ορίζει ποιοι καταχωρητές σχετίζονται µε ποια τµήµατα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV AX, mydata ;φόρτωσε τη διεύθυνση του τµήµατος δεδοµένων στον ΑΧ MOV DS, AX SUB DX, DX MOV AX, NUM1 MUL NUM2 ;φόρτωσε τον ΑΧ στον καταχωρητή τµήµατος δεδοµένων DS ;µηδένισε τον καταχωρητή υπερχείλισης DX ;τοποθέτησε ένα αριθµό στον καταχωρητή AX ;πολλαπλασίασέ τον µε τον δεύτερο αριθµό NUM2 Εργαστήριο Μικροϋπολογιστικών Συστημάτων 15

15 MOV ANS, AX ;τοποθέτησε το αποτέλεσµα στο ANS MOV AH, 4Ch ;φόρτωσε τον κωδικό τερµατισµού διεργασίας INT 21h ;για τον τερµατισµό της mycode ENDS ;τέλος του τµήµατος του κώδικα µε όνοµα mycode mydata SEGMENT PARA PUBLIC DATA ;έναρξη του τµήµατος δεδομένων µε όνοµα mydata NUM1 DW 1234h ;καθορισµός δεκαεξαδικού δεδοµένου (Define Word) NUM2 DW 00CDh ANS DW? ;δεσµεύει µια λέξη (word) στη µνήµη χωρίς κάποιο συγκεκριµένο περιεχόµενο, όπου θα το αποτέλεσµα το οποίο θα προκύψει (E93A4) mydata ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα mydata stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DW 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END start τέλος συµβολικού προγράµµατος Σηµείωση5.1: Στο πρόγραµµα αυτό το αποτέλεσµα που προκύπτει από το γινόµενο των δύο 16-bit δεκαεξαδικών αριθµών είναι αρκετά µεγάλο για να χωρέσει στον καταχωρητή AX (στον οποίο καταχωρείτε µόνο το 93A4) και έτσι έχουµε υπερχείλιση, µε συνέπεια το τελικό αποτέλεσµα (E93A4) να δίνεται από το συνδυασµό του καταχωρητή υπερχείλισης DX (όπου έχει καταχωρηθεί το 000E) και του καταχωρητή AX (όπου έχει καταχωρηθεί το 93A4). Εργαστήριο Μικροϋπολογιστικών Συστημάτων 16

16 ΠΡΟΒΛΗΜΑΤΑ ΑΣΚΗΣΗΣ 2 ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ, ΤΟΠΟΘΕΤΗΣΗΣ ΔΕΔΟΜΕΝΩΝ, ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ ΠΡΟΒΛΗΜΑ 1 Να γραφεί πρόγραµµα σε assembly των επεξεργαστών της Intel το οποίο να εµφανίζει το χαρακτήρα «Ζ» στην οθόνη. ΠΡΟΒΛΗΜΑ 2 Να γραφεί πρόγραµµα σε assembly των επεξεργαστών της Intel το οποίο να εµφανίζει το ονοµατεπώνυµό σας (στην αγγλική γλώσσα) στην οθόνη. ΠΡΟΒΛΗΜΑ 3 Να γραφεί πρόγραµµα σε assembly της Intel το οποίο να υπολογίζει το αποτέλεσμα της αφαίρεσης δύο αριθμών (15 µε το 5). ΠΡΟΒΛΗΜΑ 4 Να γραφεί πρόγραµµα σε assembly της Intel το οποίο να υπολογίζει το αποτέλεσμα της διαίρεσης δύο αριθμών (15 µε το 5). Εργαστήριο Μικροϋπολογιστικών Συστημάτων 17

17 ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ & ΛΕΙΤΟΥΡΓΙΑΣ Η/Υ Διδάσκων: Ευάγγελος Τοπάλης Δρ. Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών ΑΣΚΗΣΗ 3 ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ, ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ, ΕΝΤΟΛΕΣ ΣΥΓΚΡΙΣΗΣ, ΕΝΤΟΛΕΣ ΔΙΑΚΛΑΔΩΣΗΣ, ΑΜΕΣΗ ΠΡΟΣΒΑΣΗ ΣΤΗ VGA, ΔΟΜΗΣΗ ΥΠΟΡΟΥΤΙΝΑΣ ΠΑΡΑ ΕΙΓΜΑ 1 Παράδειγµα προγράµµατος λογικών πράξεων Εργαστήριο Μικροϋπολογιστικών Συστημάτων 18

18 ;**************************************************************** ; Παράδειγµα προγράµµατος λογικών πράξεων ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:code,DS:data,SS:stack ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος PUSH DS ;αποθήκευση της θέσης του καταχωρητή DS SUB AX, AX ;µηδένισε τον καταχωρητή AX PUSH AX ;τοποθέτηση του AX στη στοίβα MOV AX, data ;τοποθέτησε στον AX τη θέση των δεδοµένων MOV DS, AX ;τοποθέτησέ την διεύθυνση αυτή στον καταχωρητή του τµήµατος των δεδοµένων DS MOV AL, IN1 ;φόρτωσε την πρώτη είσοδο στον καταχωρητή AL NOT AL ;αντιστροφή των bits στον AL (πράξη NOT) MOV AH, IN2 ;φόρτωσε την δεύτερη είσοδο στο καταχωρητή AH AND AL, AH ;εφάρµοσε τη λογική πράξη AND σε αυτές τις δύο MOV BL, IN3 ;φόρτωσε την τρίτη είσοδο στον καταχωρητή BL NOT BL ;αντιστροφή των bits στον ΒL (πράξη NOT) OR BL, IN4 ;εφάρµοσε τη λογική πράξη OR σε αυτές τις δύο XOR AL, BL ;εφάρµοσε τη λογική πράξη XOR στις εξόδους MOV ANS, AL ;αποθήκευσε το αποτέλεσµα (που προέκυψε στον AL) στο ANS MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός CODE ENDS ;τέλος του τµήµατος κώδικα data SEGMENT para public ;καθορισµός του τµήµατος δεδοµένων IN1 DB B ;καθορισµός δεδοµένων ενός byte µε δεδοµένη τιµή, τα οποία δίνονται σε δυαδική (Binary) µορφή IN2 DB B IN3 DB B IN4 DB B Εργαστήριο Μικροϋπολογιστικών Συστημάτων 19

19 ANS DB? ;δεσµεύει ένα byte στη µνήµη χωρίς κάποιο συγκεκριµένο περιεχόµενο, όπου θα αποθηκευτεί το αποτέλεσµα το οποίο θα προκύψει από τις λογικές πράξεις data ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα data stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DB 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END START ;τέλος του assembly προγράµµατος ΠΑΡΑ ΕΙΓΜΑ 2 Παράδειγµα προγράµµατος που εµφανίζει στην οθόνη όλους τους χαρακτήρες και σύµβολα της µηχανής. ;**************************************************************** ; Παράδειγµα προγράµµατος που εµφανίζει στην οθόνη όλους τους χαρακτήρες ; και σύµβολα της µηχανής. ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:code,DS:data,SS:stack ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV CX, 256 ;αρχική τιµή του πλήθους των επαναλήψεων MOV DL, 01h ;ο πρώτος κωδικός του αλφάβητου NEXT: MOV AH, 02h ;η ρουτίνα εµφάνισης χαρακτήρα που βρίσκεται στον DL INT 21h ;εµφάνιση στην οθόνη του χαρακτήρα INC DL ;προετοιµασία του καταχωρητή για τον επόµενο κωδικό LOOP NEXT ;µειώνει το µετρητή CX κατά 1 και όσο δεν είναι 0 MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός code ENDS ;τέλος του τµήµατος κώδικα data SEGMENT para public ;καθορισµός του τµήµατος δεδοµένων data ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα data stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DB 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END START ;τέλος του assembly προγράµµατος Σηµείωση 3.1: Εργαστήριο Μικροϋπολογιστικών Συστημάτων 20

20 02H Entry Notes WRITE TO STANDARD OUTPUT DEVICE AH = 02H DL = ASCII character to be displayed This function call normally displays data on the video display. Σηµείωση 3.2: LOOP/LOOPD Loop until CX = 0 or ECX = disp LOOP label LOOP NEXT /5 LOOPD label LOOP BACK /5 LOOPD LOOPS / /6 Pentium 5/6 LOOPE/LOOPED Loop while equal disp LOOPE label LOOPE AGAIN /6 LOOPED label LOOPED UNTIL /6 LOOPZ label LOOPZ ZORRO /4 LOOPE label LOOPE AGAIN /6 Pentium 7/8 LOOPNE/LOOPNED Loop while not equal disp Εργαστήριο Μικροϋπολογιστικών Συστημάτων 21

21 LOOPNE label LOOPNE FORWARD /5 LOOPNED label LOOPNED UPS /5 LOOPNZ label LOOPNZ TRY_AGAIN /4 LOOPNZD label LOOPNZD WOO /6 Pentium 7/8 ΠΑΡΑ ΕΙΓΜΑ 3 Παράδειγµα προγράµµατος το οποίο διαβάζει ένα πλήκτρο (key) και εµφανίζει το χαρακτήρα του πλήκτρου (ενώ µε το πλήκτρο % το πρόγραµµα τερµατίζει). ;**************************************************************** ; Παράδειγµα προγράµµατος το οποίο διαβάζει ένα πλήκτρο (key) και εµφανίζει το ; χαρακτήρα του πλήκτρου (ενώ µε το πλήκτρο % το πρόγραµµα τερµατίζει). ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:code,DS:data,SS:stack ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MAIN: MOV AH, 06h ;ρουτίνα ανάγνωσης πλήκτρου (06h: direct console I/O) MOV DL, 0FFh ;ρουτίνα ανάγνωσης πλήκτρου, εάν DL=0FFh τότε διαβάζουμε από την κονσόλα INT 21h ;διακοπή για ανάγνωση πλήκτρου από το πληκτρολόγιο JE MAIN ;εάν δεν πατηθεί κάποιο πλήκτρο (key) διάβασε ξανά CMP AL, '%' ;εάν είναι ο χαρακτήρας % τότε τερµατίζει JE MAIN1 ;εάν είναι ο χαρακτήρας % τότε τερµατίζει MOV AH, 06h ;η ρουτίνα εµφάνισης χαρακτήρα που βρίσκεται στον DL ή και με την 02h MOV DL, AL ;τοποθετεί τον χαρακτήρα στον καταχωρητή DL INT 21h ;εµφάνιση στην οθόνη του χαρακτήρα JMP MAIN ;επανάληψη όλης της διαδικασίας Εργαστήριο Μικροϋπολογιστικών Συστημάτων 22

22 MAIN1: MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός code ENDS ;τέλος του τµήµατος κώδικα data SEGMENT para public ;καθορισµός του τµήµατος δεδοµένων data ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα data stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DB 64 DUP (0) ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END START ;τέλος του assembly προγράµµατος Σηµείωση 3.3: 06H Entry Exit Notes DIRECT CONSOLE READ/WRITE AH = 06H DL = 0FFH or DL = ASCII character AL = ASCII character If DL = 0FFH on entry, then this function reads the console. If DL = ASCII character, then this function displays the ASCII character on the console (CON) video screen. If a character is read from the console keyboard, the zero flag (ZF) indicates whether a character was typed. A zero condition indicates no key was typed, and a not-zero condition indicates that AL contains the ASCII code of the key or a 00H. If AL = 00H, the function must again be invoked to read an extended ASCII character from the keyboard. Note that the key does not echo to the video screen. Σηµείωση 3.4: 02H Entry Notes WRITE TO STANDARD OUTPUT DEVICE AH = 02H DL = ASCII character to be displayed This function call normally displays data on the video display. Σηµείωση 3.5: Εργαστήριο Μικροϋπολογιστικών Συστημάτων 23

23 Jcondition Conditional jump 0111cccc disp Jcnd label JA ABOVE /4 (8-bit disp) JB BELOW /4 JG GREATER /3 JE EQUAL /3 JZ ZERO /1 Pentium cccc disp Jcnd label JNE NOT_MORE 8086 (16-bit disp) JLE LESS_OR_SO / /1 Pentium 1 Condition Codes Mnemonic Flag Description 0000 JO O = 1 Jump if overflow 0001 JNO O = 0 Jump if no overflow 0010 JB/NAE C = 1 Jump if below 0011 JAE/JNB C = 0 Jump if above or equal 0100 JE/JZ Z = 1 Jump if equal/zero 0101 JNE/JNZ Z = 0 Jump if not equal/zero 0110 JBE/JNA C = 1 + Z = 1 Jump if below or equal 0111 JA/JNBE C = 0 Z = 0 Jump if above 1000 JS S = 1 Jump if sign 1001 JNS S = 0 Jump if no sign 1010 JP/JPE P = 1 Jump if parity Εργαστήριο Μικροϋπολογιστικών Συστημάτων 24

24 1011 JNP/JPO P = 0 Jump if no parity 1100 JL/JNGE S O Jump if less than 1101 JGE/JNL S = 0 Jump if greater than or equal 1110 JLE/JNG Z = 1 + S O Jump if less than or equal 1111 JG/JNLE Z = 0 + S = O Jump if greater than ΠΑΡΑ ΕΙΓΜΑ 4 Παράδειγµα προγράµµατος το οποίο υπολογίζει το μέγιστο μεταξύ δύο αριθμών και τον αποθηκεύει σε μία μεταβλητή. ;**************************************************************** ; Παράδειγµα προγράµµατος το οποίο υπολογίζει το μέγιστο μεταξύ δύο αριθμών ; και τον αποθηκεύει σε μία μεταβλητή. ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για mycode SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:mycode,DS:mydata,SS:stack ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV AX, mydata ;τοποθέτησε στον AX τη διεύθυνση των δεδοµένων MOV DS, AX ;τοποθέτησε αυτή τη διεύθυνση στον καταχωρητή του τµήµατος δεδοµένων DS MOV AL, NUM1 ;τοποθέτησε τον πρώτο αριθµό (NUM1) στο καταχωρητή AL CMP AL, NUM2 ;σύγκρινε τον πρώτο αριθμό (NUM1) µε τον δεύτερο (NUM2) JA ADR ;εάν ο πρώτος αριθμός (NUM1) είναι μεγαλύτερος από τον δεύτερο αριθμό (NUM2) πήγαινε στο ADR MOV AL, NUM2 ;βάλε τον δεύτερο αριθμό (NUM2) στον καταχωρητή AL MOV ANS, AL ;τοποθέτησε τον καταχωρητή AL, ο οποίος περιέχει τον NUM2, στο ANS JMP FIN ;πήγαινε στο FIN ADR: MOV ANS, AL ;τοποθέτησε τον AL, ο οποίος περιέχει τον NUM1, στο ANS MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) FIN: INT 21h ;τερµατισµός mycode ENDS ;τέλος του τµήµατος κώδικα mydata SEGMENT para public 'DATA' ;καθορισµός του τµήµατος δεδοµένων NUM1 DB B ;καθορισµός δεδοµένων ενός byte µε δεδοµένη τιµή, τα οποία δίνονται σε δυαδική (Binary) µορφή Εργαστήριο Μικροϋπολογιστικών Συστημάτων 25

25 NUM2 DB B ANS DB? ;δεσµεύει ένα byte στη µνήµη χωρίς κάποιο συγκεκριµένο περιεχόµενο, όπου θα αποθηκευτεί ο μέγιστος αριθμός mydata ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα mydata stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DB 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END start ;τέλος του assembly προγράµµατος ΠΑΡΑ ΕΙΓΜΑ 5 Παράδειγµα προγράµµατος που καθαρίζει την οθόνη και τυπώνει ένα μήνυμα με άμεση πρόσβαση στην VGA text memory του υπολογιστή. Επιπλέον χρησιμοποιείται ένα σύνολο πολύ χρήσιμων εντολών και ψευδοεντολών και τέλος παρουσιάζεται ο τρόπος δόμησης μια υπορουτίνας και η κλήση αυτής από το κυρίως πρόγραμμα. ;**************************************************************** ; Παράδειγµα προγράµµατος που καθαρίζει την οθόνη και τυπώνει ένα μήνυμα ;με άμεση πρόσβαση στην VGA text memory του υπολογιστή. ;****************************************************************.486 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για vidmem equ 0b800h ;αρχή της VGA text-memory color equ 7 ;color attribute (χρώματα), background & foreground color scrw equ 80*25 ;screen words, ορισμός όλης της οθόνης, τα equ αντίστοιχα define eom equ 0 ;end of message, ορισμός του eom (end of message) STACK_SEG segment para STACK ;τµήµα στοίβας µε όνοµα stack_seg db 256 dup (0) ;ορισµός χώρου στοίβας (256 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) STACK_SEG ends ;τέλος του τµήµατος της στοίβας µε όνοµα stack_seg DATA_SEG segment para public ;καθορισµός του τµήµατος δεδοµένων line dw 160d ;που θέλουμε να ξεκινήσει η εκτύπωση (160o byte από εκεί που αρχίζει, /2 80, 2 η γραμμή) msg db 'Hello World' ;το μήνυμα που θέλουμε να τυπώσουμε, (ένας χαρακτήρας 2 Bytes, 1 byte ο χαρακτήρας και 1 byte το χρώμα) db eom ;ένα byte το end of message (eom) DATA_SEG ends ;τέλος του τµήµατος δεδοµένων CODE_SEG segment USE16 para public 'code' ;έναρξη του τµήµατος κώδικα Εργαστήριο Μικροϋπολογιστικών Συστημάτων 26

26 assume cs:code_seg,ds:data_seg ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα START: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος main proc far ;κύριο μέρος του προγράμματος mov ax,data_seg ;τοποθετεί το data_seg στον ax mov ds,ax ;τοποθετεί τον ax στον ds, ορίζει δηλαδή στον ds το data segement mov ax,vidmem ;τοποθετεί την αρχή της VGA text-memory στον ax mov es,ax ;τοποθετεί τον ax στο es (extra segement), es extra segment επιπλέον τμήμα, κρατά δεδομένα προορισμού των εντολών διαχείρισης συμβολοσειρών strings call cls ;καλεί την cls (καθαρίζει την οθόνη) call printstr ;καλεί την printstr (τυπώνει το κείμενο) MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός main endp ;τέλος του κύριου προγράµµατος ;Subroutines (υπορουτίνες) cls proc near ; Clear screen (καθαρισμός οθόνης) mov di,0 ;καθαρισμός του DI, di δείκτης προορισμού mov al,' ' ;τοποθετώ τον χαρακτήρα space, το κενό στον AL mov ah,color ;τοποθετώ τον κωδικό του χρώματος στον AH ;space character + color = 1 byte + 1 byte = 2 bytes mov cx,scrw ;φορτώνεις το νούμερο 80x25 στον counter cx rep stosw ;stosw, AX ES:DI, DI DI+2, κάνει repeat to stosw όσες φορές λέει ο CX, es extra segment επιπλέον τμήμα, κρατά δεδομένα προορισμού των εντολών διαχείρισης συμβολοσειρών strings ret ;return from procedure cls endp ;τέλος της cls printstr proc near ;εκτύπωση χαρακτήρων lea si,msg ;φόρτωσε την διεύθυνση του msg στον SI, load effective address, lea reg,mem, si δείκτης πηγής mov di,line ;ορίζουμε από που θα ξεκινήσουμε να τυπώνουμε, di δείκτης προορισμού prints_loop: cmp byte ptr[si],eom ;συγκρίνει τον χαρακτήρα που δείχνει ο SI με τον eom, cmp mem,imm, συγκρίνει τα δεδομένα της διεύθυνσης μνήμης που δείχνει ο si, μεγέθους 1 byte, με το eom je prints_exit ;εάν είναι ίσοι τότε κάνει Jmp στην prints_exit movsb ;αλλιώς πάει στον επόμενο χαρακτήρα, move string data, πέρνουμε τα δεδομένα από τον ds:si es:di, di di+2, si si+2 inc di ;αυξάνουμε τον di κατά ένα, πάμε στην επόμενη θέση jmp prints_loop ;πάει στο prints_loop, ώστε να τυπώσουμε και τους επόμενους χαρακτήρες prints_exit: ret ;return from procedure printstr endp ;τέλος της printstr Εργαστήριο Μικροϋπολογιστικών Συστημάτων 27

27 CODE_SEG ends ;τέλος του τµήµατος κώδικα end start ;τέλος του assembly προγράµµατος Σηµείωση 3.6: Ένας χαρακτήρας αποτελείται από δύο bytes, το πρώτο byte έχει τον χαρακτήρα και το δεύτερο byte έχει τον συνδυασμό του background χρώματος και του foreground χρώματος. Η οθόνη DOS έχει 80*25 χαρακτήρες. H VGA άρχιζε παλιότερα από 0b000h, στα νεότερα υπολογιστικά συστήματα αρχίζει από 0b800h. Σηµείωση 3.7: Ανάλογα με τον κωδικό που χρησιμοποιείτε για το χρώμα (color) έχετε και το ανάλογο αποτέλεσμα στην εκτύπωση. Συνδυάζοντας το foreground και το background κωδικό μπορείτε να έχετε όποιον συνδυασμό θέλετε, μεταξύ των χρωμάτων που θα εμφανιστούν στο foreground και στο background. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 28

28 ΠΡΟΒΛΗΜΑΤΑ ΑΣΚΗΣΗΣ 3 ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ, ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ, ΕΝΤΟΛΕΣ ΣΥΓΚΡΙΣΗΣ, ΕΝΤΟΛΕΣ ΔΙΑΚΛΑΔΩΣΗΣ, ΑΜΕΣΗ ΠΡΟΣΒΑΣΗ ΣΤΗ VGA, ΔΟΜΗΣΗ ΥΠΟΡΟΥΤΙΝΑΣ ΠΡΟΒΛΗΜΑ 1 Να γραφεί πρόγραµµα σε assembly των επεξεργαστών της Intel το οποίο να υλοποιεί το παρακάτω κύκλωμα. Για εισόδους βάλτε τις παρακάτω τιμές INS INS INS INS INS ΠΡΟΒΛΗΜΑ 2 Να γραφεί πρόγραµµα σε assembly της Intel το οποίο να το μέγιστο μεταξύ τεσσάρων αριθμών και τον αποθηκεύει σε μία μεταβλητή. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 29

29 ΠΡΟΒΛΗΜΑ 3 Να γραφεί πρόγραµµα σε assembly της Intel το οποίο να καθαρίζει την οθόνη, να τυπώνει ένα μήνυμα (My name is) με πράσινα γράμματα σε μπλε φόντο, και μετά το μήνυμα (το όνομα σας) με κόκκινα γράμματα σε άσπρο φόντο, χρησιμοποιώντας άμεση πρόσβαση στην VGA text memory του υπολογιστή. ΠΡΟΒΛΗΜΑ 4 Να γραφεί πρόγραµµα σε assembly των επεξεργαστών της Intel το οποίο να υλοποιεί το παρακάτω κύκλωμα. Για εισόδους βάλτε τις παρακάτω τιμές INS INS INS INS INS INS Εργαστήριο Μικροϋπολογιστικών Συστημάτων 30

30 ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ & ΛΕΙΤΟΥΡΓΙΑΣ Η/Υ Διδάσκων: Ευάγγελος Τοπάλης Δρ. Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών ΑΣΚΗΣΗ 4 ΡΟΥΤΙΝΕΣ ΚΑΘΥΣΤΕΡΗΣΗΣ, ΑΜΕΣΗ ΠΡΟΣΒΑΣΗ ΣΤΗ VGA text memory ΤΟΥ Η/Υ, ΥΠΟΡΟΥΤΙΝΕΣ, ΠΙΝΑΚΕΣ ΠΑΡΑ ΕΙΓΜΑ 1 Παράδειγµα προγράµµατος στο οποίο δημιουργούμε ένα απλό animation με άμεση πρόσβαση στην VGA text memory του υπολογιστή. Για το σκοπό αυτό πρέπει να δημιουργήσουμε timing delay loops. Το τελευταίο γίνεται με δύο τρόπους. Σε έναν από αυτούς Εργαστήριο Μικροϋπολογιστικών Συστημάτων 31

31 χρησιμοποιούμε τον timer του bios. ;**************************************************************** ; Παράδειγµα προγράµµατος στο οποίο δημιουργούμε ένα απλό animation με στην ; VGA text άμεση πρόσβαση memory του υπολογιστή ;****************************************************************.486 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για vidmem equ 0b800h ;αρχή της VGA text-memory nora equ 2 ;nora=color attribute (χρώματα), background & foreground color scrw equ 80*25 ;25=lines 80=chars per line, screen words, ορισμός όλης της οθόνης, τα equ αντίστοιχα define eom equ 0 ;end of message, ορισμός του eom (end of message) STAC_SEG segment USE16 para stack ;τµήµα στοίβας µε όνοµα stack_seg db 256 dup (' ') ;ορισµός χώρου στοίβας (256 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) STAC_SEG ends ;τέλος του τµήµατος της στοίβας µε όνοµα stack_seg DATA_SEG segment USE16 para public ;καθορισµός του τµήµατος δεδοµένων linb dw 320d ;που θέλουμε να ξεκινήσει η εκτύπωση (320o byte από εκεί που αρχίζει, /2 160, 2 η γραμμή) mess db '(***.***)' ;το μήνυμα που θέλουμε να τυπώσουμε, (ένας χαρακτήρας 2 Bytes, 1 byte ο χαρακτήρας και 1 byte το χρώμα) db eom ;ένα byte το end of message (eom) DATA_SEG ends ;τέλος του τµήµατος δεδοµένων CODE_SEG segment USE16 para public 'CODE' ;έναρξη του τµήµατος κώδικα assume cs:code_seg,ds:data_seg ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος main proc far ;κύριο μέρος του προγράμματος mov ax,data_seg ;τοποθετεί το data_seg στον ax mov ds,ax ;τοποθετεί τον ax στον ds, ορίζει δηλαδή στον ds το data segement mov ax,vidmem ;τοποθετεί την αρχή της VGA text-memory στον ax mov es,ax ;τοποθετεί τον ax στο es (extra segement), es extra segment επιπλέον τμήμα, κρατά δεδομένα προορισμού των εντολών διαχείρισης συμβολοσειρών strings mov dx,1 ;πόσες φορές θα επαναληφθεί το loop aa: l0: mov cx,100 ;πόσους χαρακτήρες θα μετακινηθεί cmp dx,0 je p_exit ;εάν είναι ίσοι τότε κάνει Jmp στην p_exit call cls ;καλεί την cls (καθαρίζει την οθόνη) call prim ;καλεί την prim (τυπώνει το κείμενο) call Sleep55 Εργαστήριο Μικροϋπολογιστικών Συστημάτων 32

32 l1: inc linb ;που θα εκτυπωθεί το μήνυμα inc linb ;που θα εκτυπωθεί το μήνυμα loop l0 mov cx,100 call cls ;καλεί την cls (καθαρίζει την οθόνη) call prim ;καλεί την prim (τυπώνει το κείμενο) call Sleep55 dec linb dec linb loop l1 dec dx jmp aa p_exit: mov ah,4ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) int 21h ;τερµατισµός main endp ;τέλος του κύριου προγράµµατος ;Subroutines (υπορουτίνες) cls proc near ; Clear screen (καθαρισμός οθόνης) push cx mov di,0 ;καθαρισμός του DI, di δείκτης προορισμού mov al,' ' ;τοποθετώ τον χαρακτήρα space, το κενό στον AL mov ah,nora ;τοποθετώ τον κωδικό του χρώματος στον AH ;space character + color = 1 byte + 1 byte = 2 bytes mov cx,scrw ;φορτώνεις το νούμερο 80χ25 στον counter cx rep stosw ;stosw, AX ES:DI, DI DI+2, κάνει repeat to stosw όσες φορές λέει ο CX, es extra segment επιπλέον τμήμα, κρατά δεδομένα προορισμού των εντολών διαχείρισης συμβολοσειρών strings pop cx ret ;return from procedure cls endp ;τέλος της cls prim proc near ;εκτύπωση χαρακτήρων lea si,mess ;φόρτωσε την διεύθυνση του mess στον SI, load effective address, lea reg,mem, si δείκτης πηγής mov di,linb ;ορίζουμε από που θα ξεκινήσουμε να τυπώνουμε, di δείκτης προορισμού msgloo: cmp byte ptr[si],eom ;συγκρίνει τον χαρακτήρα που δείχνει ο SI με τον eom, cmp mem,imm, συγκρίνει τα δεδομένα της διεύθυνσης μνήμης που δείχνει ο si, μεγέθους 1 byte, με το eom je priex ;εάν είναι ίσοι τότε κάνει Jmp στην priex exit movsb ;αλλιώς πάει στον επόμενο χαρακτήρα, move string data, πέρνουμε τα δεδομένα από τον ds:si es:di, di di+2, si si+2 inc di ;αυξάνουμε τον di κατά ένα, πάμε στην επόμενη θέση Εργαστήριο Μικροϋπολογιστικών Συστημάτων 33

33 jmp msgloo ;πάει στο msgloop, ώστε να τυπώσουμε και τους επόμενους χαρακτήρες priex: ret ;return from procedure prim endp Delay proc near ;δεν είναι σταθερή σε κάθε υπολογιστικό σύστημα push cx mov cx,0fff0h delay_loop: loop delay_loop pop cx ret ;return from procedure Delay endp ;τέλος της delay Sleep55 PROC NEAR push es push ax push cx mov cx,1d sleep110ms: mov ax,40h mov es,ax ;waits 1 sec (19*52ms), ανεξάρτητο υπολογιστικού συστήματος mov ax,es:[6ch] ;RTC textequ <es:[6ch]>, 40h Bios data Area 6Ch Timer Counter DWORD RTC_MustChange2: cmp ax,es:[6ch] ;RTC ;loops μέχρι το RTC να αλλάξει je RTC_MustChange2 ;εάν είναι ίσοι τότε κάνει Jmp στην RTC_MustChange2 loop sleep110ms pop cx pop ax pop es ret ;return from procedure ;waits 52ms Sleep55 ENDP ;τέλος της sleep55 CODE_SEG ends ;τέλος του τµήµατος κώδικα end start ;τέλος του assembly προγράµµατος Εργαστήριο Μικροϋπολογιστικών Συστημάτων 34

34 Σημείωση: Timing Delay Loops Most of the time the computer runs too slow for most people's tastes. However, there are occasions when it actually runs too fast. One common solution is to create an empty loop to waste a small amount of time. In Pascal you will commonly see loops like: for i := 1 to do ; In assembly, you might see a comparable loop: mov cx, 8000h DelayLp: loop DelayLp By carefully choosing the number of iterations, you can obtain a relatively accurate delay interval. There is, however, one catch. That relatively accurate delay interval is only going to be accurate on your machine. If you move your program to a different machine with a different CPU, clock speed, number of wait states, different sized cache, or half a dozen other features, you will find that your delay loop takes a completely different amount of time. Since there is better than a hundred to one difference in speed between the high end and low end PCs today, it should come as no surprise that the loop above will execute 100 times faster on some machines than on others. The fact that one CPU runs 100 times faster than another does not reduce the need to have a delay loop which executes some fixed amount of time. Indeed, it makes the problem that much more important. Fortunately, the PC provides a hardware based timer which operates at the same speed regardless of the CPU speed. This timer maintains the time of day for the operating system, so it's very important that it run at the same speed whether you're on an 8088 or a Pentium. In the chapter on interrupts you will learn to actually patch into this device to perform various tasks. For now, we will simply take advantage of the fact that this timer chip forces the CPU to increment a 32 bit memory location (40:6ch) about 18.2 times per second. By looking at this variable we can determine the speed of the CPU and adjust the count value for an empty loop accordingly. The basic idea of the following code is to watch the BIOS timer variable until it changes. Once it changes, start counting the number of iterations through some sort of loop until the BIOS timer variable changes again. Having noted the number of iterations, if you execute a similar loop the same number of times it should require about 1/18.2 seconds to execute The following program demonstrates how to create such a Delay routine:.xlist include stdlib.a includelib stdlib.lib.list ; PPI_B is the I/O address of the keyboard/speaker control ; port. This program accesses it simply to introduce a ; large number of wait states on faster machines. Since the ; PPI (Programmable Peripheral Interface) chip runs at about ; the same speed on all PCs, accessing this chip slows most ; machines down to within a factor of two of the slower ; machines. PPI_B equ 61h ; RTC is the address of the BIOS timer variable (40:6ch). ; The BIOS timer interrupt code increments this 32-bit ; location about every 55 ms (1/18.2 seconds). The code ; which initializes everything for the Delay routine ; reads this location to determine when 1/18th seconds ; have passed. RTC textequ <es:[6ch]> dseg segment para public 'data' ; TimedValue contains the number of iterations the delay ; loop must repeat in order to waste 1/18.2 seconds. TimedValue word 0 ; RTC2 is a dummy variable used by the Delay routine to ; simulate accessing a BIOS variable. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 35

35 RTC2 word 0 dseg ends cseg segment para public 'code' assume cs:cseg, ds:dseg ; Main program which tests out the DELAY subroutine. Main proc mov ax, dseg mov ds, ax print byte "Delay test routine",cr,lf,0 ; Okay, let's see how long it takes to count down 1/18th ; of a second. First, point ES as segment 40h in memory. ; The BIOS variables are all in segment 40h. ; ; This code begins by reading the memory timer variable ; and waiting until it changes. Once it changes we can ; begin timing until the next change occurs. That will ; give us 1/18.2 seconds. We cannot start timing right ; away because we might be in the middle of a 1/18.2 ; second period. mov ax, 40h mov es, ax mov ax, RTC RTCMustChange: cmp ax, RTC je RTCMustChange ; Okay, begin timing the number of iterations it takes ; for an 18th of a second to pass. Note that this ; code must be very similar to the code in the Delay ; routine. mov cx, 0 mov si, RTC mov dx, PPI_B TimeRTC: mov bx, 10 DelayLp: in al, dx dec bx jne DelayLp cmp si, RTC loope TimeRTC neg cx ;CX counted down! mov TimedValue, cx ;Save away mov ax, ds mov es, ax printf byte "TimedValue = %d",cr,lf byte "Press any key to continue",cr,lf byte "This will begin a delay of five " byte "seconds",cr,lf,0 dword TimedValue getc mov cx, 90 DelayIt: call Delay18 loop DelayIt Quit: ExitPgm ;DOS macro to quit program. Main endp ; Delay18-This routine delays for approximately 1/18th sec. ; Presumably, the variable "TimedValue" in DS has ; been initialized with an appropriate count down ; value before calling this code. Delay18 proc near push ds push es push ax push bx push cx push dx push si mov ax, dseg mov es, ax mov ds, ax ; The following code contains two loops. The inside ; nested loop repeats 10 times. The outside loop ; repeats the number of times determined to waste ; 1/18.2 seconds. This loop accesses the hardware Εργαστήριο Μικροϋπολογιστικών Συστημάτων 36

36 ; port "PPI_B" in order to introduce many wait states ; on the faster processors. This helps even out the ; timings on very fast machines by slowing them down. ; Note that accessing PPI_B is only done to introduce ; these wait states, the data read is of no interest ; to this code. ; ; Note the similarity of this code to the code in the ; main program which initializes the TimedValue variable. mov cx, TimedValue mov si, es:rtc2 mov dx, PPI_B TimeRTC: mov bx, 10 DelayLp: in al, dx dec bx jne DelayLp cmp si, es:rtc2 loope TimeRTC pop si pop dx pop cx pop bx pop ax pop es pop ds ret Delay18 endp cseg ends sseg segment para stack 'stack' stk word 1024 dup (0) sseg ends end Main ΠΑΡΑ ΕΙΓΜΑ 2 Παράδειγµα προγράµµατος το οποίο αθροίζει τα στοιχεία 4, 6 και 8 ενός πίνακα, και το αποτέλεσµα τοποθετείται στον AL. ;**************************************************************** ; Παράδειγµα προγράµµατος το οποίο αθροίζει τα στοιχεία 4, 6 και 8 ενός πίνακα, ; και το αποτέλεσµα τοποθετείται στον AL. ;****************************************************************.386 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για code SEGMENT USE16 PARA PUBLIC 'CODE' ;έναρξη του τµήµατος κώδικα µε όνοµα code ASSUME CS:code,DS:data,SS:stack ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος MOV AX, data ;τα Data στον AX MOV DS, AX ;ο AX στον DS MOV AL, 0 ;µηδενισµός του αθροίσµατος MOV SI, 4 ;αναφορά στο στοιχείο 4 ADD AL, ARRAY[SI] ;πρόσθεση του 4ου στοιχείου Εργαστήριο Μικροϋπολογιστικών Συστημάτων 37

37 ADD AL, ARRAY[SI+2] ;πρόσθεση του 6ου στοιχείου ADD AL, ARRAY[SI+4] ;πρόσθεση του 8ου στοιχείου MOV AH, 4Ch ;ρουτίνα τερµατισµού εργασίας (4Ch:process termination) INT 21h ;τερµατισµός CODE ENDS ;τέλος του τµήµατος κώδικα data SEGMENT para public ;καθορισµός του τµήµατος δεδοµένων ARRAY DB 10 DUP(1) ;δέσµευση 10 θέσεων µνήµης µε περιεχόµενο 1 data ENDS ;τέλος του τµήµατος δεδοµένων µε όνοµα data stack SEGMENT STACK ;τµήµα στοίβας µε όνοµα stack DB 64 DUP (0) ;ορισµός χώρου στοίβας (64 αντίγραφα λέξεων) (Define Word DUPlicates) με συγκεκριµένο περιεχόµενο (0) stack ENDS ;τέλος του τµήµατος της στοίβας µε όνοµα stack END START ;τέλος του assembly προγράµµατος ΠΡΟΒΛΗΜΑΤΑ ΑΣΚΗΣΗΣ 4 ΡΟΥΤΙΝΕΣ ΚΑΘΥΣΤΕΡΗΣΗΣ, ΑΜΕΣΗ ΠΡΟΣΒΑΣΗ ΣΤΗ VGA text memory ΤΟΥ Η/Υ, ΥΠΟΡΟΥΤΙΝΕΣ, ΠΙΝΑΚΕΣ ΠΡΟΒΛΗΜΑ 1 Να γραφεί πρόγραµµα σε assembly των επεξεργαστών της Intel το οποίο να δημιουργείτε ένα απλό animation με άμεση πρόσβαση στην VGA text memory του υπολογιστή. Θα πρέπει να αλλάζει συνέχεια χρώματα (background και foreground) σε κάθε μετάβαση. Να ξεκινάει από την αρχή της τρίτης γραμμής. Το μήνυμα να περιέχει το όνομα σας στην μορφή (Όνομα.Επίθετο). Θα μετακινηθεί δεξιά 200 χαρακτήρες και θα ξαναγυρίσει πίσω 200 χαρακτήρες. Αυτή τη διαδικασία θα την κάνει 2 φορές. Εργαστήριο Μικροϋπολογιστικών Συστημάτων 38

38 ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ & ΛΕΙΤΟΥΡΓΙΑΣ Η/Υ Διδάσκων: Ευάγγελος Τοπάλης Δρ. Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών ΑΣΚΗΣΗ 5 ΠΙΝΑΚΕΣ, ΕΠΕΞΕΡΓΑΣΙΑ ΠΙΝΑΚΩΝ, LOOK UP TABLES, ΜΑΚΡΟΕΝΤΟΛΕΣ, ΥΠΟΡΟΥΤΙΝΕΣ ΠΑΡΑ ΕΙΓΜΑ 1 Παράδειγµα προγράµµατος στο οποίο να υλοποιηθεί πρόγραμμα το οποίο θα δέχεται από τον χρήστη τα στοιχεία ενός πίνακα 3*3. Μετά μέσω look up table να μπορεί να ξανά εισάγει στοιχεία (επιλογή 1) ή να βγαίνει από το πρόγραμμα (επιλογή 0). Εργαστήριο Μικροϋπολογιστικών Συστημάτων 39

39 .486 ;χρήση της ντιρεκτίβας για να αναγνωρίζει ο assembler εντολές για DISP MACRO X push ax ;αποθηκεύει τον ax στην στοίβα push dx ;αποθηκεύει τον ds στην στοίβα mov ah, 09h ;τυπώνει ότι έχει ο dx μέχρι να βρει $ mov dx, offset x int 21h pop dx ;καλώ από την στοίβα τον dx pop ax ;καλώ από την στοίβα τον ax ENDM vidmem equ 0b800h ;αρχή της VGA text-memory color equ 7 ;color attribute (χρώματα), background & foreground color scrw equ 80*25 ;25=lines 80=chars per line, screen words, ορισμός όλης της οθόνης, τα equ αντίστοιχα define eom equ 0 ;end of message, ορισμός του eom (end of message) STAC_SEG segment USE16 para stack ;τµήµα στοίβας µε όνοµα stack_seg db 256 dup (' ') ;ορισµός χώρου στοίβας (256 αντίγραφα λέξεων) STAC_SEG ends ;τέλος του τµήµατος στοίβας DATA_SEG segment USE16 para public ;καθορισµός του τµήµατος δεδοµένων buffer db 4 dup(0) ;4 bytes και ο επόμενος χαρακτήρας είναι $ db '$' ;ο επόμενος χαρακτήρας είναι $ mes db 10,13,13 ;αλλάζει γραμμή και ο επόμενος χαρακτήρας είναι $ db '$' me1 db ' ' ;κενός χαρακτήρας και ο επόμενος χαρακτήρας είναι $ db '$' line dw 160d ;0 contain 1'st char BUT 1 contain color line1 dw 320d mess db 'Doste ta stoixeia tou 3*3 pinaka:' db eom mes1 db ' 1) Gia na dosete kainourgia stoixeia sto pinaka.' db eom mes0 db ' 0) Gia exodo apo to programma.' db eom buf1 db 257 dup (?) ;dhmiourgei enan apithikeytiko xoro 257 theseon db eom array dw 18 dup (0) ; periexei se binary morfh ta stoixeia toy buf1 db eom DATA_SEG ends ;τέλος του τµήµατος δεδοµένων CODE_SEG segment USE16 para public 'code' ;έναρξη του τµήµατος κώδικα Εργαστήριο Μικροϋπολογιστικών Συστημάτων 40

40 assume cs:code_seg,ds:data_seg ;καθορισµός του ονόµατος που συνδέεται µε το τµήµα start: ;σηµείο (διεύθυνση) έναρξης/εισόδου του προγράµµατος main proc far ;κύριο μέρος του προγράμματος push ds ;αποθηκεύει τον ds στην στοίβα mov ax,0 ;βάζει το 0 στον ax push ax ;αποθηκεύει τον ax στην στοίβα mov ax,data_seg ;τοποθετεί το data_seg στον ax mov ds,ax ;τοποθετεί τον ax στον ds, ορίζει δηλαδή στον ds το data segement mov ax,vidmem ;τοποθετεί την αρχή της VGA text-memory στον ax mov es,ax ;τοποθετεί τον ax στο es (extra segement), es extra segment επιπλέον τμήμα, κρατά δεδομένα προορισμού των εντολών διαχείρισης συμβολοσειρών strings start1: ksana: call cls mov di,0 ;καλεί την cls (καθαρίζει την οθόνη) ;μετρητής στοιχείων, νούμερα, τοποθετεί το 0 στον di ;παίρνει τα νούμερα από το πληκτρολόγιο ;και τα βάζει στο array push di ;αποθηκεύει τον dι στην στοίβα call cls ;καλεί την cls (καθαρίζει την οθόνη) lea si,mess ;εκτυπώνει το πρώτο μήνυμα, το mess1 mov di,320d ;πηγαίνω δύο γραμμές παρακάτω dose: movsb ;( MOVSB, ES:[DI] = DS:[SI]; DI = DI ± 1; SI = SI ± 1 (byte transferred, Η εντολή MOVS μεταφέρει ένα byte, μια λέξη ή μια διπλή λέξη από μια θέση μνήμης του τμήματος δεδομένων που διευθυνσιοδοτείται από τον SI, σε μια θέση μνήμης του έξτρα τμήματος που διευθυνσιοδοτείται από τον DI.) inc di ;αυξάνει το di κατά ένα cmp byte ptr[si],eom jne dose ;jump if not equal pop di ;καλώ από την στοίβα τον di mov cx,10 ;βάζω το 10 στον cx ;αρχικοποίηση κάποιων καταχωρητών mov bx,0 ;βάζω το ο στον bx ;αρχικοποίηση κάποιων καταχωρητών readn1: mov ah,1 ;μεταφέροντας το 1 στον ah και σε συνδυασμό με το Int 21 τη συνάρτηση του dos read the keyboard, πχ πατάω συνολικά το 52, πρώτα το 5, με τη δεύτερη φορά διαβάζει το 2 int 21h mov ah,0 ;βάζω στον ah το 0 cmp al,'0' ;έλεγχος αριθμού να είναι μεταξύ 0 και 9, (σύγκριση του al με το 0) στην readn2 ;δεν κάνει έλεγχο όταν πατά το enter και βάζει μηδέν, αφού πάει ;το enter έχει κωδικό σε ascii OD ;εάν πατήσεις κάποιο χαρακτήρα εκτός 0 έως 9 τότε δεν σου βγάζει μήνυμα να το ξαναβάλεις αλλά βάζει 0 Εργαστήριο Μικροϋπολογιστικών Συστημάτων 41

41 jb readn2 ;jump if below ;για το επόμενο στοιχείο του πίνακα. cmp al,'9' ;έλεγχος αριθμού να είναι μεταξύ 0 και 9 ja readn2 ;jump if above ;για το επόμενο στοιχείο του πίνακα sub al,'0' ;σε hex μορφή το νούμερο που πατά ;π.χ. πατάω 5234 εάν έχω πατήσει το 5, ο al θα έχει το 35 (ascii κωδικοποίηση του 5), εάν αφαιρέσω το 0 (σε ascii κωδικοποίηση είναι 30), οπότε η αφαίρεση θα δώσει 5, να έχουμε δηλαδή τον δεκαδικό αριθμό που πατήθηκε, ο οποίος τελικά περιέχεται στον al, το 5 στη συγκεκριμένη περίπτωση του παραδείγματος, ;την δεύτερη φορά που θα έχω πατήσει το 2, ο al θα περιέχει το 32 (ascii κωδικοποίηση του 2), εάν αφαιρέσω το 0 (σε ascii κωδικοποίηση είναι 30), οπότε η αφαίρεση θα δώσει 2, να έχουμε δηλαδή τον δεκαδικό αριθμό που πατήθηκε, ο οποίος τελικά περιέχεται στον al, το 2 στη συγκεκριμένη περίπτωση του παραδείγματος, push ax ;αποθηκεύει τον ax στην στοίβα mov ax,bx ;βάζει τον bx στον ax, ;δηλαδή στην πρώτη περίπτωση που έχει πατηθεί μόνο το 5, το bx είναι 0, άρα ax είναι 0 ;στην δεύτερη περίπτωση που έχει πατηθεί το 2, o bx περιέχει από πριν το 5, άρα ο ax έχει το 5 mul cx ;πολλαπλασιάζει τον cx με τον ax και βάζει το αποτέλεσμα στον ax, ο cx είναι 10, άρα, ;άρα στην πρώτη περίπτωση που έχει πατηθεί το 5 ο ax έχει 0 ;άρα στην δεύτερη περίπτωση που έχει πατηθεί το 2 ο ax έχει 50 mov bx,ax ;βάζει τον ax στον bx, ;άρα στην πρώτη περίπτωση που έχει πατηθεί το 5 ο bx έχει 0 ;άρα στην δεύτερη περίπτωση που έχει πατηθεί το 2 ο bx έχει 50 pop ax ;καλώ από την στοίβα τον ax, ο οποίος περιέχει την πρώτη φορά το 5 ;καλώ από την στοίβα τον ax, ο οποίος περιέχει την δεύτερη φορά το 2 mov ah,0 ;βάζει το 0 στον ah add bx,ax ;προσθέτει τον bx με τον ax, ;άρα ο bx έχει την πρώτη φορά το 5, όταν πατήθηκε το 5 ;άρα ο bx έχει την δεύτερη φορά το 2, όταν πατήθηκε το 2...τα ίδια για τους επόμενους δύο αριθμούς του πρώτου στοιχείου, εάν έχει 4, αλλιώς με enter πάει για το επόμενο στοιχείο του πίνακα, μέσω των παραπάνω compare που έχω για above 0 και below 9. jmp readn1 ;πάω στην readn1 ξανά readn2: mov ax,bx ;ο bx περιέχει τον πραγματικό αριθμό που πατήθηκε mov array[di],ax ;di ο counter, το array είναι δομημένο σε word, ο di σε byte, τοποθετεί τελικά αυτά που έχουμε πατήσει στο array Εργαστήριο Μικροϋπολογιστικών Συστημάτων 42

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Homework 3 Solutions

Homework 3 Solutions Homework 3 Solutions Igor Yanovsky (Math 151A TA) Problem 1: Compute the absolute error and relative error in approximations of p by p. (Use calculator!) a) p π, p 22/7; b) p π, p 3.141. Solution: For

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006 ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση

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

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

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

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

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

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

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

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

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

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

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

Οδηγός Εκμάθησης στην Assembly 8086 1 Οδηγός Εκμάθησης στην Assembly 8086 1 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http:// arch.icte.uowm.gr/mdasyg

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

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

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011 Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι

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

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

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

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

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

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

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

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

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

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

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

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

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

Writing kernels for fun and profit

Writing kernels for fun and profit Writing kernels for fun and profit Γιάννης Τσιομπίκας nuclear@memberfsforg 23 Μαρτίου 2011 Γιατί; It s FUN! Εξοικείωση με το hardware Εμβάθυνση στον θαυμαστό κόσμο των λειτουργικών συστημάτων Μια καλή

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

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

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

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

Το «κλειστό» σύστημα. Ανοικτές επικοινωνίες... Εισαγωγή στην Τεχνολογία της Πληροφορικής. Εισαγωγή στην τεχνολογία της πληροφορικής

Το «κλειστό» σύστημα. Ανοικτές επικοινωνίες... Εισαγωγή στην Τεχνολογία της Πληροφορικής. Εισαγωγή στην τεχνολογία της πληροφορικής ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Εισαγωγή στην Τεχνολογία της Πληροφορικής ΓΙΩΡΓΟΣ Ν. ΓΙΑΝΝΟΠΟΥΛΟΣ Λέκτορας στο Πανεπιστήμιο Αθηνών gyannop@law.uoa.gr Το «κλειστό» σύστημα ΕΙΣΟΔΟΣ ΕΠΕΞΕΡΓΑΣΙΑ

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

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

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

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

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

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

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

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

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

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

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά. Διαστημικό εστιατόριο του (Μ)ΑστροΈκτορα Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά. Μόλις μια παρέα πελατών κάτσει σε ένα

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly Αρης Ευθυμίου Το σημερινό μάθημα! Σύνταξη εντολών! Θέματα σχετικά με τη προσπέλαση, οργάνωση μνήμης διευθύνση για κάθε byte διευθύνσεις λέξεων

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

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

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

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

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

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

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

Code Breaker. TEACHER s NOTES

Code Breaker. TEACHER s NOTES TEACHER s NOTES Time: 50 minutes Learning Outcomes: To relate the genetic code to the assembly of proteins To summarize factors that lead to different types of mutations To distinguish among positive,

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

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

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

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

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

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

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

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

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

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

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

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 2

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 2 Σειρά Ασκήσεων 2 Εντολές µεταφοράς δεδοµένων και βρόχοι στον MIPS. Οι γλώσσες προγραµµατισµού εκτός από απλές µεταβλητές που περιέχουν κάποια δεδοµένα, έχουν όπως γνωρίζετε και περισσότερο σύνθετες δοµές

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

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

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

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

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 }

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 } A ΜΕΡΟΣ 1 program Puppy_Dog; begin 4 end. 5 6 { Result of execution 7 (There is no output from this program ) 10 } (* Κεφάλαιο - Πρόγραµµα EX0_.pas *) 1 program Kitty_Cat; begin 4 Writeln('This program');

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

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

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

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

FSM Toolkit Exercises

FSM Toolkit Exercises ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Τομέας Τηλεπικοινωνιών Αναπληρωτής Καθηγητής: Αλέξανδρος Ποταμιάνος Ονοματεπώνυμο: Α Μ : ΗΜΕΡΟΜΗΝΙΑ: ΤΗΛ 413 : Συστήματα Επικοινωνίας

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

Chapter 2 * * * * * * * Introduction to Verbs * * * * * * *

Chapter 2 * * * * * * * Introduction to Verbs * * * * * * * Chapter 2 * * * * * * * Introduction to Verbs * * * * * * * In the first chapter, we practiced the skill of reading Greek words. Now we want to try to understand some parts of what we read. There are a

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

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

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

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

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter 3 Kuo [2005]: Chapters 1 & 4-5 Lapsley [2002]: Chapter 4 Hayes [2000]: Κεφάλαιo 8

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

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014 LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV 18 February 2014 Slowly/quietly Clear/clearly Clean Quickly/quick/fast Hurry (in a hurry) Driver Attention/caution/notice/care Dance Σιγά Καθαρά Καθαρός/η/ο

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

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!!

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!! VBA ΣΤΟ WORD Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!! Μου παρουσιάστηκαν δύο θέματα. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Εγραφα σε ένα αρχείο του Word τις

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

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

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

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

Right Rear Door. Let's now finish the door hinge saga with the right rear door

Right Rear Door. Let's now finish the door hinge saga with the right rear door Right Rear Door Let's now finish the door hinge saga with the right rear door You may have been already guessed my steps, so there is not much to describe in detail. Old upper one file:///c /Documents

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

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

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

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

Advanced Subsidiary Unit 1: Understanding and Written Response

Advanced Subsidiary Unit 1: Understanding and Written Response Write your name here Surname Other names Edexcel GE entre Number andidate Number Greek dvanced Subsidiary Unit 1: Understanding and Written Response Thursday 16 May 2013 Morning Time: 2 hours 45 minutes

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

Math 6 SL Probability Distributions Practice Test Mark Scheme

Math 6 SL Probability Distributions Practice Test Mark Scheme Math 6 SL Probability Distributions Practice Test Mark Scheme. (a) Note: Award A for vertical line to right of mean, A for shading to right of their vertical line. AA N (b) evidence of recognizing symmetry

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αλφαριθμητικά Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών

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

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade Για να ελέγξετε το λογισμικό που έχει τώρα η συσκευή κάντε κλικ Menu > Options > Device > About Device Versions. Στο πιο κάτω παράδειγμα η συσκευή έχει έκδοση λογισμικού 6.0.0.546 με πλατφόρμα 6.6.0.207.

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

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

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

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

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Δημιουργία ενός απλού παιχνιδιού με το Gamemaker (μετάφραση από το http://www.stuffucanuse.com/downloads/gamemaker-introductionlessons/free_game_downloads_gamemaker.htm)

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

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr ΛΕΙΤΟΥΡΓΙΕΣ

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

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

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

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

Areas and Lengths in Polar Coordinates

Areas and Lengths in Polar Coordinates Kiryl Tsishchanka Areas and Lengths in Polar Coordinates In this section we develop the formula for the area of a region whose boundary is given by a polar equation. We need to use the formula for the

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

ΑΣΚΗΣΗ 5 η Η σειριακή επικοινωνία ΙΙ 1.1 ΣΚΟΠΟΣ Σκοπός της άσκησης αυτής είναι η κατανόηση σε βάθος των λειτουργιών που παρέχονται από το περιβάλλον LabView για τον χειρισµό της σειριακής επικοινωνίας

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

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

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

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

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

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

Shell Scripts: loops / if / test

Shell Scripts: loops / if / test Shell Scripts: loops / if / test Loops with for while until for variable in list_of_values ne while εντολή (επιτυχής) ne until εντολή (επιτυχής) ne For in exi times apo ayti ti lista in 1 2 alla kai alles

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

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

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

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

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

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

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

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

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

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

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

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

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

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

Συµβολοσειρές - Strings

Συµβολοσειρές - Strings Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια

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

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

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

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

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

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

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

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

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

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

ΠΕΡΙΛΗΨΗ. Είναι γνωστό άτι καθημερινά διακινούνται δεκάδες μηνύματα (E~mail) μέσω του διαδικτύου

ΠΕΡΙΛΗΨΗ. Είναι γνωστό άτι καθημερινά διακινούνται δεκάδες μηνύματα (E~mail) μέσω του διαδικτύου GREEKLISH: ΜΙΑ ΝΕΑ ΔΙΑΛΕΚΤΟΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ; Α.Καράκος, Λ.Κωτούλας ΠΕΡΙΛΗΨΗ Είναι γνωστό άτι καθημερινά διακινούνται δεκάδες μηνύματα (E~mail) μέσω του διαδικτύου {INTERNEη από την μια άκρη του κόσμου

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

LESSON 28 (ΜΑΘΗΜΑ ΕΙΚΟΣΙ ΟΚΤΩ) REF : 201/033/28. 2 December 2014

LESSON 28 (ΜΑΘΗΜΑ ΕΙΚΟΣΙ ΟΚΤΩ) REF : 201/033/28. 2 December 2014 LESSON 28 (ΜΑΘΗΜΑ ΕΙΚΟΣΙ ΟΚΤΩ) REF : 201/033/28 2 December 2014 Place/Seat Right (noun) I am right I am not right It matters It does not matter The same (singular) The same (Plural) Η θέση Το δίκιο Έχω

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών

Τμήμα Πληροφορικής & Επικοινωνιών Τμήμα Πληροφορικής & Επικοινωνιών Εξεταζόμενο μάθημα : Προγραμματισμός Ι Ονοματεπώνυμο σπουδαστή/άστριας :... Εξάμηνο σπουδών :. Α.Ε.Μ. :. Σεπτέμβριος 2007 ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ : 2 ΩΡΕΣ Οι εξεταζόμενοι επιτρέπεται

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

Capacitors - Capacitance, Charge and Potential Difference

Capacitors - Capacitance, Charge and Potential Difference Capacitors - Capacitance, Charge and Potential Difference Capacitors store electric charge. This ability to store electric charge is known as capacitance. A simple capacitor consists of 2 parallel metal

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

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα» ΚΡΕΜΑΛΑ Project 7 1 Εκφώνηση άσκησης Υλοποίηση του παιχνιδιού «Κρεμάλα» Το Project αυτό συνίσταται στην κατασκευή ενός προγράμματος σεναρίου κελύφους, που θα υλοποιεί το γνωστό παιχνίδι «Κρεμάλα» με δυνατότητα

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΨΥΧΟΛΟΓΙΚΕΣ ΕΠΙΠΤΩΣΕΙΣ ΣΕ ΓΥΝΑΙΚΕΣ ΜΕΤΑ ΑΠΟ ΜΑΣΤΕΚΤΟΜΗ ΓΕΩΡΓΙΑ ΤΡΙΣΟΚΚΑ Λευκωσία 2012 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ

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

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

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Σχεδίαση datapath Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη μνήμη (lw,

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

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 1

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 1 Σειρά Ασκήσεων 1 Εισαγωγή, Ο επεξεργαστής και η γλώσσα του. Σε αυτό το εργαστήριο θα κάνουµε µια εισαγωγή σε έναν απλό επεξεργαστή (RISC), το instruction set του οποίου είναι πολύ απλό, αλλά περιέχει όλα

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

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

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

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

4.6 Autoregressive Moving Average Model ARMA(1,1)

4.6 Autoregressive Moving Average Model ARMA(1,1) 84 CHAPTER 4. STATIONARY TS MODELS 4.6 Autoregressive Moving Average Model ARMA(,) This section is an introduction to a wide class of models ARMA(p,q) which we will consider in more detail later in this

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ USE INSTRUCTIONS

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ USE INSTRUCTIONS ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ USE INSTRUCTIONS ΤΗΛΕΦΩΝΟ ΜΕ ΑΝΑΓΝΩΡΙΣΗ ΚΛΗΣΗΣ /CORDED PHONE WITH CALLER ID ΜΟΝΤΕΛΟ/MODEL: TM09-448 DC48V Παρακαλούμε διαβάστε προσεκτικά όλες τις οδηγίες χρήσης πριν την χρήση της συσκευής

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

Exercises 10. Find a fundamental matrix of the given system of equations. Also find the fundamental matrix Φ(t) satisfying Φ(0) = I. 1.

Exercises 10. Find a fundamental matrix of the given system of equations. Also find the fundamental matrix Φ(t) satisfying Φ(0) = I. 1. Exercises 0 More exercises are available in Elementary Differential Equations. If you have a problem to solve any of them, feel free to come to office hour. Problem Find a fundamental matrix of the given

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΒΑΛΕΝΤΙΝΑ ΠΑΠΑΔΟΠΟΥΛΟΥ Α.Μ.: 09/061. Υπεύθυνος Καθηγητής: Σάββας Μακρίδης

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΒΑΛΕΝΤΙΝΑ ΠΑΠΑΔΟΠΟΥΛΟΥ Α.Μ.: 09/061. Υπεύθυνος Καθηγητής: Σάββας Μακρίδης Α.Τ.Ε.Ι. ΙΟΝΙΩΝ ΝΗΣΩΝ ΠΑΡΑΡΤΗΜΑ ΑΡΓΟΣΤΟΛΙΟΥ ΤΜΗΜΑ ΔΗΜΟΣΙΩΝ ΣΧΕΣΕΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «Η διαμόρφωση επικοινωνιακής στρατηγικής (και των τακτικών ενεργειών) για την ενδυνάμωση της εταιρικής

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

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

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

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

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

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Εξαιρέσεις και Διακοπές (Exceptions and Interrupts)

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Εξαιρέσεις και Διακοπές (Exceptions and Interrupts) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 13 Εξαιρέσεις και Διακοπές (Exceptions and Interrupts) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση και Σχεδίαση Υπoλογιστών

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

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

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

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

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

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Εισαγωγή Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τους τρόπους προσπέλασης της µνήµης (µέθοδοι διευθυνσιοδότησης) σε ένα υπολογιστικό σύστηµα. Η Μνήµη 1 Ψηφιακή Λογική 4

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

ίκτυο προστασίας για τα Ελληνικά αγροτικά και οικόσιτα ζώα on.net e-foundatio //www.save itute: http:/ toring Insti SAVE-Monit

ίκτυο προστασίας για τα Ελληνικά αγροτικά και οικόσιτα ζώα on.net e-foundatio //www.save itute: http:/ toring Insti SAVE-Monit How to run a Herdbook: Basics and Basics According to the pedigree scheme, you need to write down the ancestors of your animals. Breeders should be able easily to write down the necessary data It is better

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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