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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

Παραδείγματα Assembly (Μέρος

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

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

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

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

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

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

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

Προγραμματισμός Ι (ΗΥ120)

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

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

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2015 Β ΦΑΣΗ ÁÈÇÍÁ ΕΚΦΩΝΗΣΕΙΣ

Transcript:

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

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

Video Memory Η οθόνη ελέγχεται μέσω της video memory Για να εμφανίσουμε κάτι στην οθόνη πρέπει να το γράψουμε στην video memory Περιοχή μνήμης για color text mode: Segment: 0x0B800 Offsets:0000 0F9F (4000 Bytes)

Video Memory Η οθόνη έχει 80 στήλες και 25 γραμμές 2000 χαρακτήρες Κάθε χαρακτήρας της οθόνης αντιστοιχεί σε 2 bytes της Video Memory Διαδοχικοί χαρακτήρες αντιστοιχούν σε διαδοχικά words της video memory Το LSByte του κάθε word αντιστοιχεί στον ASCII κωδικό του χαρακτήρα που θέλουμε να απεικονίσουμε Το MSByte του κάθε word κωδικοποιεί το χρώμα του background και του foreground.

Video Memory - Παράδειγμα Γράψτε στην γραμμή 2 και στην στήλη 1 το γράμμα 'Α' με άσπρο χρώμα και μαύρο background Byte xαρακτήρα = 'A' Byte χρώματος = 00000111b = 7 Χρώμα: μαύρο=0000b, άσπρο=0111b Αρχή γραμμής 2 = 2 γραμμές * 80 στήλες = 160 χαρακτήρες Στήλη 1, γραμμή 2 = 160 + 1 = 161ος χαρακτήρας = 322ο byte mov al,'a' -> mov ah,7 -> mov [es:322], ax

String Εντολές movsb, movsw, movsd lodsb, lodsw, lodsd stosb, stosw, stosd String εντολές Μακροεντολές Συμπιέζουν πολλαπλές εντολές σε μία Μικρότερο μέγεθος εκτελέσιμου Πιο συμπαγής κώδικας

movs move string movsb, movsw, movsd Δεν παίρνουν όρισμα Μεταφέρουν αυτόματα την θέση μνήμης [DS:SI] στην [ES:DI] Παράλληλα αυξάνουν τους SI, DI movsb mov [es:edi],[ds:esi] inc esi inc edi

lods load string lodsb, lodsw, lodsd Φορτώνουν αυτόματα στον ΑL(/ΑΧ/ΕΑΧ) από την θέση μνήμης DS:SI και αυξάνουν τον SI lodsb mov al,[ds:esi] inc esi

stos store string stosb, stosw, stosd Αποθηκεύουν αυτόματα τον AL(/AX/EAX) στην θέση μνήμης ES:DΙ και αυξάνουν τον DI stosb mov [es:edi],al inc edi

Ανάλυση Άσκησης Πρέπει να εκυπώσουμε το string 'Hello World' 1. Δεσμεύουμε τις μεταβλητές μας 2. Καθαρίζουμε την οθόνη 3. Εκτυπώνουμε με string εντολές το string msg που έχει αρχικοποιηθεί σε 'Hello World'

Ανάλυση Άσκησης - 0 Στην αρχή του κώδικα δίνουμε κάποιες χρήσιμες σταθερές: vidmem, color, scrw, eom Δήλωση σταθεράς: label equ value Ο nasm πριν κάνει compile θα αντικαταστήσει κάθε label με την τιμή που του έχουμε δώσει

Ανάλυση Άσκησης - 1 Οι μεταβλητές δεσμεύονται στο section.data Τρόπος δέσμευσης: label: db{,dw,dd} initial_value label = το όνομα της μεταβλητής db = define byte, dw = define word, dd = define doubleword initial_value = Αρχική τιμή της μεταβλητής Αν το initial_value είναι πολλαπλές τιμές χωρισμένες με κόμμα ή string, τότε δεσμεύεται πίνακας αντίστοιχου μεγέθους

Ανάλυση Άσκησης - 1 Δεσμεύετε: Το string που θα εκτυπώσουμε (msg) Ένα byte με τιμή eom (End Of Message) ακριβώς μετά ώστε να ξέρουμε που τελειώνει το msg Την θέση της οθόνης από όπου θα αρχίζει η εκτύπωση (print_start) Ότι άλλο χρειαστεί στην πορεία

Ανάλυση Άσκησης - 2 Σετάρουμε το σύστημα και τις μεταβλητές Στην συνάρτηση main όπου υλοποιείται ο αλγόριθμός μας έχουμε αρχικοποιήσει τον ES ώστε να δείχνει στo vidmem

Ανάλυση Άσκησης - 3 Καθαρίζουμε την οθόνη (έτοιμη συνάρτηση cls) Ο πιο εύκολος τρόπος είναι να γράψουμε σε όλη την video memory το ίδιο word που αντιστοιχεί σε κενό χαρακτήρα και μαύρο background χρησιμοποιώντας string store

Ανάλυση Άσκησης - 3 Η συνάρτηση αρχικοποιεί τον di σε 0 (ο es:edi δείχνει στην αρχή της video memory) Φορτώνει στον ecx τον αριθμό των words που αποτελούν την video memory (cx = scrw) Φορτώνει στον ax την τιμή που αντιστοιχεί σε κενό χαρακτήρα (al = ' ') με μαύρο background και λευκο foreground (ah = color) Και κάνει rep stosw (stosw για cx φορές)

Ανάλυση Άσκησης - 4 Εκτυπώνουμε με string εντολές το string msg (συνάρτηση printstr) Θα την γράψετε εσείς Πρέπει να αντιγράφει στην video memory, ξεκινώντας από την θέση print_start το msg, μέχρι να συναντήσει την τιμή eom Προσοχή! Ένα byte του msg -> 2 byte της video memory

Ανάλυση άσκησης Ο κώδικας που θα τα ενώνει όλα τα προηγούμενα μαζί και θα υλοποιεί τον αλγόριθμό μας θα βρίσκεται στην συνάρτηση main