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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Παρουσίαση Projects

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

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

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

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

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

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

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

Λύσεις 2 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Παρουσίαση Εργασιών

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

Streams Input / Output in C++ George Kastrinis

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

Προηγμένοι Μικροεπεξεργαστές. Παρουσίαση Projects

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

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

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

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

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

Εισαγωγή στους Υπολογιστές

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Protected Mode & Multitasking

Writing kernels for fun and profit

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

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

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

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

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

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

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

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

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

Αρχιτεκτονικές Συνόλου Εντολών

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Εξωτερικές συσκευές Οδηγός χρήσης

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εξωτερικές συσκευές Οδηγός χρήσης

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

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Αρχιτεκτονική-ΙI Ενότητα 6 :

Εξωτερικές συσκευές Οδηγός χρήσης

Εξωτερικές συσκευές Οδηγός χρήσης

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

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

Λιβανός Γιώργος Εξάμηνο 2017Β

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

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

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

Εργαστήριο 5. Εαρινό Εξάμηνο

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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

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

Εξωτερικές συσκευές Οδηγός χρήσης

Εγχειρίδιο χρήσης του Άβακα

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

Computer Setup Οδηγός χρήσης

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

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

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

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Transcript:

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

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

BIOS services Κάθε ΙΒΜ-PC συμβατό σύστημα παρέχει μία σειρά από χρήσιμες υπηρεσίες μέσω του BIOS Αφορούν χαμηλού επιπέδου χρήση περιφερειακών συσκευών Οθόνη Πληκτρολόγιο Ποντίκι Εκτυπωτής κοκ

DOS services Παράλληλα το DOS παρέχει και αυτό τις δικές του υπηρεσίες που αφορούν: υψηλότερου επιπέδου χρήση περιφερειακών συσκευών υπηρεσίες σχετικές με την διαχείρηση του λειτουργικού συστήματος

BIOS και DOS services Ο μηχανισμός με τον οποίο καλούνται αυτές οι υπηρεσίες είναι τα software interrupts Κυριότερα interrupts: 18h για το BIOS 21h για το DOS Αναλυτική λίστα με τις παρεχόμενες υπηρεσίες μπορείτε να βρείτε στον Brey και εδώ: http://emu8086.comlu.com/assembly_language_tutorial_assembler_reference/8086 http://www.htl-steyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm

Χρήσιμα int 0x21 interrupts Μέσω του int 21h παρέχονται πολλαπλές υπηρεσίες Η επιλογή γίνεται μέσω της τιμής που έχει ο ΑΗ πριν το software interrupt Ah = 01h -> keyboard input with echo Ah = 07h -> direct console input without echo Ah = 0ah -> Buffered keyboard input Ah = 3dh -> open file using handle Ah = 3eh -> close file using handle Ah = 3fh -> read file or device using handle Ah = 40h -> write file or device using handle

Services Παρόλη την χρησιμότητά τους: Υλοποιούνται μέσω των real mode interrupts Είναι γραμμένα για real mode Δεν μπορούμε να τα χρησιμοποιήσουμε απευθείας από protected mode

Task RM To task RM υλοποιεί μία λογική εκτέλεσης RM συναρτήσεων μέσα σε protected mode Περνάει σε real mode Εκτελεί την real mode συνάρτηση που του έχει δωθεί μέσα σε ένα περιβάλλον όσο πιο κοντά γίνεται στο περιβάλλον από το οποίο κλήθηκε το task RM Επιστρέφει σε protected mode Επιστρέφει στο task από το οποίο καλέστηκε το περιβάλλον που υπήρχε κατά το τέλος της συνάρτησης

Task RM Πέρασμα σε real mode To πέρασμα υλοποιείται με τον ίδιο τρόπο με τον οποίο επιστρέφαμε σε real mode για να τερματίσουμε την εφαρμογή Απενεργοποίηση interrupts Απενεργοποίηση του PE bit Far jmp με real mode code segment Φόρτωση real mode selectors στους υπόλοιπους segment registers Επαναφορά του real mode IVT Ενεργοποίηση interrupts

Task RM Εκτέλεση της συνάρτησης Μέσω του backlink του, το task RM Βρίσκει το TSS της διεργασίας που το κάλεσε Διαβάζει από εκεί την τιμή του esp και την φορτώνει στον δικό του sp, ώστε να έχει πρόσβαση στην στοίβα του caller Από την στοίβα, διαβάζει και αφαιρεί τον pointer προς την συνάρτηση που πρέπει να εκτελέσει

Task RM Εκτέλεση της συνάρτησης Ακριβώς πριν την κλήση της συνάρτησης φορτώνει από το TSS σε όλους τους general purpose registers τις τιμές που είχαν στο caller task Καλεί την συνάρτηση με τα όποια ορίσματα να βρίσκονται έτοιμα στην στοίβα του caller task Μετά την εκτέλεση της συνάρτησης, αποθηκεύει όλους τους τους general purpose registers πίσω στο TSS του caller, ώστε όταν ενεργοποιηθεί το caller task να έχει την ίδια εικόνα με αυτή που θα είχε αν η συνάρτηση είχε εκτελεστεί άμεσα.

Task RM Επιστροφή σε PM Παρόμοια με την κανονική είσοδο σε protected mode, με εξαίρεση ότι όλες οι δομές είναι σεταρισμένες Ξαναφορτώνουμε gdtr και idtr Ενεργοποίηση PE bit Far jmp με protected mode 16 bit code selector Φόρτωση όλων των segment registers με protected mode 16 bit selectors Unset το busy bit Set το ΝΤ flag Φόρτωση του Task Register με τον selector του task RM Iret στο caller task

Task RM Από την πλευρά της διεργασίας που το καλεί: push των ορισμάτων της συνάρτησης push του real mode offset της συνάρτησης call RM_TASK_TSS_SEL:0 Μετά την επιστροφή το συνολικό state είναι το ίδιο με αυτό που θα είχαμε αν είχε εκτελεστεί άμεσα η συνάρτηση

Task RM Με κατάλληλες κλήσεις στo task RM, θα υλοποιήσουμε real mode συναρτήσεις που θα αξιοποιούν τα DOS services

Task Parser Κατά την αρχικοποίηση του καλεί μία real mode συνάρτηση που: Ανοίγει το αρχείο με το όνομα που περιέχεται στην μεταβλητή file_name Αντιγράφει τα δεδομένα του στην περιοχή μνήμης file_buffer (αρχείο editor.asm) Κλείνει το αρχείο και επιστρέφει Αν παρουσιάστηκε κάποιο σφάλμα, εκτυπώνεται μήνυμα στην οθόνη και τερματίζει το πρόγραμμα Αν όχι, ενεργοποιεί το task display (active2 = 1) και μπαίνει στο κυρίως loop του

Task Parser Στον κυρίως του βρόχο το task διαβάζει συνεχώς το πληκτρολόγιο μέσω μίας real mode συνάρτησης και: Αν πατηθεί κάποιο βέλος, ανανεώνει την θέση του κέρσορα μέσω της μεταβλητής cursor_pos Αν πατηθεί escape το πρόγραμμα τερματίζει

Task Display Διαβάζει τον file buffer και απεικονίζει τα δεδομένα στην οθόνη Κάνει highlight την τρέχουσα θέση του κέρσορα Παρακολουθεί την μεταβλητή redraw, που σετάρεται από τον parser και αν γίνει 1, ανανεώνει την οθόνη Τρέχει καθαρά σε protected mode και χρησιμοποιεί άμεση πρόσβαση στην vga text memory Δίνεται τελείως έτοιμο

Σκοπός Να υλοποιήσετε τις real mode συναρτήσεις που καλεί το task parser, καθώς και την κλήση τους αυτή καθ'αυτή

Διάβασμα αρχείου Int 21h services: Ah = 3dh -> open file using handle Ah = 3eh -> close file using handle Ah = 3fh -> read file or device using handle Η rm συνάρτηση πρέπει να επιστρέφει στον ah 0 αν όλα πήγαν καλά, 1 αν παρουσιάστηκε σφάλμα

Παρακολούθηση πληκτρολογίου Int 21h services: 07h -> direct console input without echo Αν το πλήκτρο που πατήθηκε ήταν extended (non ASCII), τότε επιστρέφει 0 και στην επόμενη κλήση της επιστρέφει τον έξτρα κωδικό του πλήκτρου Η συνάρτηση πρέπει να επιστρέφει στον ah το αν το πλήκτρο ήταν extended ή όχι και τον κώδικό (1o byte για ASCII, 2ο byte για extended) στον al

Extended κωδικοί