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

Μέγεθος: 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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 1 Hello World

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 1 Hello World Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 1 Hello World Σκοπός του Εργαστηρίου Εκτύπωση του string Hello World στην οθόνη Με χρήση της video memory Και παράλληλα επιβεβαίωση ότι τα εργαλεία μας λειτουργούν

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

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA

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

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών Θ. Ζαχαριάδης Αν. Καθηγητής Λ. Σαράκης Καθ. Εφαρμογών CMP REG, memory memory, REG REG, REG memory, immediate REG, immediate Compare. operand1 - operand2 result is not stored anywhere, flags are set (OF,

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

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

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

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

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

Συστήματα Μικροϋπολογιστών Συστήματα Μικροϋπολογιστών Assembly 80x86 Υπεύθυνος Μαθήματος: K. ΠΕΚΜΕΣΤΖΗ Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

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

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers) Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers) ΑΧ Εργασίες εισόδου / εξόδου, διορθώσεις δεκαδικών, πολλαπλασιασµοί, διαιρέσεις. BX είκτης για έµµεσο τρόπο προσδιορισµού διευθύνσεων µνήµης (indirect

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

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

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

Στοιχεία από Assembly Γιώργος Μανής Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,

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

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

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

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

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

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

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

Instruction Execution Times

Instruction Execution Times 1 C Execution Times InThisAppendix... Introduction DL330 Execution Times DL330P Execution Times DL340 Execution Times C-2 Execution Times Introduction Data Registers This appendix contains several tables

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

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

Σημειώσεις για τον 80x86 Σημειώσεις για τον 80x86 Τι είναι η διεύθυνση; 16bits 0000h 0001h 0002h 8bits 20h 32h 30h Η μνήμη ενός μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του ενός byte FFFEh 30h 2 16 =65,536 bytes

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

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

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

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

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing Προηγμένοι Μικροεπεξεργαστές Φροντιστήριο 2 Addressing Roadmap Το μοντέλο μνήμης των x86 Γιατί τόσο περίπλοκο; Δομή Εξέλιξη Μέθοδοι διευθυνσιοδότησης Εντολές προσπέλασης μνήμης Μοντέλο Μνήμης Πριν τους

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

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών Θ. Ζαχαριάδης Αν. Καθηγητής Λ. Σαράκης Καθ. Εφαρμογών Στον debugger που χρησιμοποιούμε στο εργαστήριο, όταν γράφουμε δεκαεξαδικούς αριθμούς που το πιο σημαντικό ψηφίο τους είναι Α-F βάζουμε μπροστά από

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΕΡΓΑΣΤΗΡΙΟ 3 ΤΕΙ ΣΕΡΡΩΝ Η ΠΡΑΞΗ ΤΗΣ ΑΦΑΙΡΕΣΗΣ Πράξη 1 1 0 1-0 1 1 0 1 1 1 0 1-0 1 1 0 1Δ 1 1 1 1 0 1 0 1 1 0 1Δ 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1

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

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

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 5 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ) ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ) ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι Τρία κύρια τμήματα Ορισμός μοντέλου τμημάτων μνήμης και σωρού Ορισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Ορίσματα στο QtSpim (set parameters

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

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts Προηγμένοι Μικροεπεξεργαστές Φροντιστήριο 4 Real Mode Interrupts Επισκόπηση Μορφές control tranfer Γενικά μη προγραμματισμένες Ασυγχρονα προς την εκτέλεση του προγράμματος Hardware interrupts Σύγχρονα

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών

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

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

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1. (α) Παραδείγματα Assembly Εαρινό Εξάμηνο 2012 Γράψτε ένα μικρό πρόγραμμα (1-3 εντολές) με το οποίο μπορείτε να ανιχνεύσετε την τιμή του δυαδικού ψηφίου στη θέση 7 της θέσης μνήμης 0Χ23450009 εάν το λιγότερο

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό

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

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required) Phys460.nb 81 ψ n (t) is still the (same) eigenstate of H But for tdependent H. The answer is NO. 5.5.5. Solution for the tdependent Schrodinger s equation If we assume that at time t 0, the electron starts

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

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

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

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη ( ιάλεξη 3) ιδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

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

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch: HOMEWORK 4 Problem a For the fast loading case, we want to derive the relationship between P zz and λ z. We know that the nominal stress is expressed as: P zz = ψ λ z where λ z = λ λ z. Therefore, applying

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό

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

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

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

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

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης MSc Ηλεκτρονικός Φυσικός Αντικείμενο: ΠΡΟΦΙΛ ΜΑΘΗΜΑΤΟΣ Προγραμματισμός σε γλώσσα Assembly Σκοπός: Γνώση της assembly από τους απόφοιτους του τμήματος

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

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

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

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

Αρχιτεκτονικη υπολογιστων

Αρχιτεκτονικη υπολογιστων ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr Εισαγωγη: ο επεξεργαστης και η γλωσσα του Eπεξεργαστής: MIPS Microprocessor Without Interlocked

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

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση QtSpim Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή (Τελευταία ενημέρωση για την έκδοση QtSpim 9.1.4)

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

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

Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης Ε Εργαστήριο ή Α Αρχιτεκτονικής ή ΙΙ Εργαστήριο γ Ι: Βασικέςς γνώσεις γ ς Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης Στόχοι ομή συμβολικού προγράμματος 8086 Υλοποίηση Αλγοριθμικών δομών ( Επιλογή/Επανάληψη

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

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

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής Καταχωρητές & τμήματα μνήμης του 8086 Ματθές Δημήτριος Καθηγητής Πληροφορικής Καταχωρητές γενικού σκοπού Υπάρχουν τέσσερις (4) γενικού σκοπού καταχωρητές των 16-bit που χρησιμοποιούνται από τους προγραμματιστές

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

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

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

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 3 Έλεγχος Ροής Προγράμματος Προηγμένοι Μικροεπεξεργαστές Φροντιστήριο 3 Έλεγχος Ροής Προγράμματος Επισκόπηση Εντολές Ελέγχου Ροής Υλοποίηση δομών ανώτερου επιπέδου με control flow εντολές Goto και If... then.. else While, do...while

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I MIPS Η MIPS (Microprocessor without Interlocked Pipeline Stages) είναι μία αρχιτεκτονική συνόλου εντολών (ISA) γλώσσας μηχανής που αναπτύχθηκε από την εταιρεία

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

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

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

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

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

Keyboard. Ασσιούρας Ιωάννης 5593 Βούκας Ιωάννης 5001 Πρωτονοτάριος Ιωάννης 6072

Keyboard. Ασσιούρας Ιωάννης 5593 Βούκας Ιωάννης 5001 Πρωτονοτάριος Ιωάννης 6072 Keyboard Ασσιούρας Ιωάννης 5593 Βούκας Ιωάννης 5001 Πρωτονοτάριος Ιωάννης 6072 The PC keyboard Η κύρια συσκευή εισόδου του συστήματος. 101 πλήκτρα (τουλάχιστον). IBM PC/AT compatible. Περιλαμβάνουν αλφαριθμητικά

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

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

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

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

Block Ciphers Modes. Ramki Thurimella

Block Ciphers Modes. Ramki Thurimella Block Ciphers Modes Ramki Thurimella Only Encryption I.e. messages could be modified Should not assume that nonsensical messages do no harm Always must be combined with authentication 2 Padding Must be

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

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS CHAPTER 5 SOLVING EQUATIONS BY ITERATIVE METHODS EXERCISE 104 Page 8 1. Find the positive root of the equation x + 3x 5 = 0, correct to 3 significant figures, using the method of bisection. Let f(x) =

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

Εισαγωγή στην πληροφορική -4

Εισαγωγή στην πληροφορική -4 Εισαγωγή στην πληροφορική 6 (, 64) bits Μνήµη Θέση (κύτταρο cell) µνήµης, χωράει λέξεις (words) εντολές (πρόγραµµα), αριθµοί (δεδοµένα) Αριθµοί: δυαδική (binary) αναπαράσταση = = = 4 = 4 = 5 = 7 Εισαγωγή

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

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

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

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών

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

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος Ε.1 Σας δίνεται ο πιο κάτω κώδικας. Ξαναγράψτε τον ώστε να μειωθεί ο αριθμός των εντολών του αλλά διατηρώντας την ίδια λειτουργιά

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL

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

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 Εμβάθυνση στον θαυμαστό κόσμο των λειτουργικών συστημάτων Μια καλή

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

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

derivation of the Laplacian from rectangular to spherical coordinates

derivation of the Laplacian from rectangular to spherical coordinates derivation of the Laplacian from rectangular to spherical coordinates swapnizzle 03-03- :5:43 We begin by recognizing the familiar conversion from rectangular to spherical coordinates (note that φ is used

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

Section 8.3 Trigonometric Equations

Section 8.3 Trigonometric Equations 99 Section 8. Trigonometric Equations Objective 1: Solve Equations Involving One Trigonometric Function. In this section and the next, we will exple how to solving equations involving trigonometric functions.

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

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

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

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους: Επαναλήψεις - Loops Οι επαναλήψεις σε ένα πρόγραμμα μας επιτρέπουν μια ομάδα εντολών να εκτελείται για όσες φορές επιθυμούμε Υπάρχουν τρεις τρόποι επανάληψης εντολών με τη χρήση: While loops For loops

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

[1] P Q. Fig. 3.1

[1] P Q. Fig. 3.1 1 (a) Define resistance....... [1] (b) The smallest conductor within a computer processing chip can be represented as a rectangular block that is one atom high, four atoms wide and twenty atoms long. One

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

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & Άνοιγμα αρχείου μέσα από τo SPIM, διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη (Διάλεξη 3) 1 Μετατροπή χαρακτήρων ASCII σε ακέραιο Ο πιο κάτω κώδικας

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

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

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4 ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 4 Διαδικασίες Ι Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Διευθυνσιοδότηση διακλαδώσεων

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

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

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

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

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

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

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

PortSip Softphone. Ελληνικά Ι English 1/20

PortSip Softphone. Ελληνικά Ι English 1/20 PortSip Softphone Ελληνικά Ι English 1/20 1. Περιεχόμενα 2. Εγκατάσταση σε Smartphone & Tablet (Android ή ios)... 1 3. Εγκατάσταση σε ηλεκτρονικό υπολογιστή (Windows ή Mac).... 5 4. Installation in Smartphone

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

Modbus basic setup notes for IO-Link AL1xxx Master Block

Modbus basic setup notes for IO-Link AL1xxx Master Block n Modbus has four tables/registers where data is stored along with their associated addresses. We will be using the holding registers from address 40001 to 49999 that are R/W 16 bit/word. Two tables that

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Εισαγωγή Στη C++ υπάρχει η δυνατότητα να δηλώσουμε μία συμβολοσειρά ως αντικείμενο, χρησιμοποιώντας τη βιβλιοθήκη . Επειδή οι συμβολοσειρές είναι

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

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

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

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

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών

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

the total number of electrons passing through the lamp.

the total number of electrons passing through the lamp. 1. A 12 V 36 W lamp is lit to normal brightness using a 12 V car battery of negligible internal resistance. The lamp is switched on for one hour (3600 s). For the time of 1 hour, calculate (i) the energy

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

9.09. # 1. Area inside the oval limaçon r = cos θ. To graph, start with θ = 0 so r = 6. Compute dr

9.09. # 1. Area inside the oval limaçon r = cos θ. To graph, start with θ = 0 so r = 6. Compute dr 9.9 #. Area inside the oval limaçon r = + cos. To graph, start with = so r =. Compute d = sin. Interesting points are where d vanishes, or at =,,, etc. For these values of we compute r:,,, and the values

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

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

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

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

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

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια. Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 4 Εαρινό Εξάμηνο 2012-2013 Στόχοι του εργαστηρίου Χρήση στοίβας Συναρτήσεις ΠΡΟΣΟΧΗ: Αρχίστε νωρίς

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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