1 / 19

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Μέρος πρώτο Καθηγητής: Α. Βαφειάδης 200 8. Βασικοί συντακτικοί κανόνες.

elewa
Download Presentation

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Μέρος πρώτο Καθηγητής: Α. Βαφειάδης 2008

  2. Βασικοί συντακτικοί κανόνες • Top-down-programming • Προσθήκη σχολίων • Δεν αναμιγνύουμε στον κώδικα εκτελέσιμες εντολές με ψευδοεντολές Λάθος

  3. Αριθμητικές πράξεις • Πρόσθεση LDA PAR1 REG[A] <-- REG[A] + MEM[PAR2] ADD PAR2 REG[A] <-- MEM[PAR1] STA RES MEM[RES] <-- REG[A] • Αφαίρεση LDA PAR1 REG[A] <-- MEM[PAR1] SUB PAR2 REG[A] <-- REG[A] - MEM[PAR2] STA RES MEM[RES] <-- REG[A] • Πολλαπλασιασμός LDA PAR1 REG[A] <-- MEM[PAR1] MUL PAR2 REG[AX] <-- REG[A] x MEM[PAR2] STX RES MEM[RES] <-- REG[X] Οι κώδικες ισχύουν αν τα αποτελέσματα των πράξεων είναι < 230-1

  4. Αριθμητικές πράξεις • Διαίρεση * ΦΟΡΤΩΣΗ ΔΙΑΙΡΕΤΕΟΥ (A ΤΡΟΠΟΣ) LDX PAR1 ΦΟΡΤΩΣΗ ΤΟΥ ΜΕΓΕΘΟΥΣ ΣΤΟΝ rAX LDA PAR1(0:0) ΦΟΡΤΩΣΗ ΤΟΥ ΠΡΟΣΗΜΟΥ ΣΤΟΝ rAX DIV PAR2 ΔΙΑΙΡΕΣΗ * ΦΟΡΤΩΣΗ ΔΙΑΙΡΕΤΕΟΥ (Β ΤΡΟΠΟΣ) LDA PAR1 ΦΟΡΤΩΣΗ ΤΟΥ PAR1 ΣΤΟΝ rA SRAX 5 ΜΕΤΑΤΟΠΙΣΗ ΤΟΥ ΜΕΓΕΘΟΥΣ DIV PAR2 ΔΙΑΙΡΕΣΗ

  5. Σύνθετες αριθμητικές πράξεις – Παράδειγμα 1 • Υπολογισμός της Παράστασης W = P + Κ * I LDA K rA <----- K MUL I rAX ΠΕΡΙΕΧΕΙ K * I SLAX 5 rA <------ rX ADD P rA ΠΕΡΙΕΧΕΙ P + K * I STA W H ΘΕΣΗ W ΠΕΡΙΕΧΕΙ P + K * I Χωρίς την εντολή SLAX LDA K rA <----- K MUL I rAX ΠΕΡΙΕΧΕΙ K * I STX HELP HELP <----- rX LDA HELP rA ΠΕΡΙΕΧΕΙτο K * I ADD P rA ΠΕΡΙΕΧΕΙ P + K * I STA W H ΘΕΣΗ W ΠΕΡΙΕΧΕΙ P + K * I

  6. Σύνθετες αριθμητικές πράξεις – Παράδειγμα 2 • Υπολογισμός της Παράστασης W = P –(k*I)/D LDA K rA <------ K MUL I rAX ΠΕΡΙΕΧΕΙ K*I DIV D rA ΠΕΡΙΕΧΕΙ (K*I)/D SUB P rA ΠΕΡΙΕΧΕΙ (k*I)/D-P STA W W <------ (K*I)/D-P LDAN W rA ΠΕΡΙΕΧΕΙ P-(K*I)/D STA W W <------ P-(K*I)/D

  7. Σύνθετες αριθμητικές πράξεις – Παράδειγμα 3 • Υπολογισμός της Παράστασης W = (A+B)*(L-M)+2+(A-b)/Z * ΔΕΝ ΥΠΑΡΧΕΙ ΠΕΡΙΠΤΩΣΗ OVERFLOW * ΠΡΟΣΗΜΟ ΤΟΥ rA = ΠΡΟΣΗΜΟ ΤΟΥ rX ΜΕΤΑ ΤΟΝ ΠΟΛ/ΜΟ * LDA A ΣΤΗ ΒΟΗΘΗΤΙΚΗ ΘΕΣΗ ΤΗΣ ΜΝΗΜΗΣ Η ADD B ΑΠΟΘΗΚΕΥΟΥΜΕ ΤΗΝ ΠΑΡΑΣΤΑΣΗ (Α+Β) STA H ΓΙΑ ΝΑ ΤΗΝ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΣΤΟΝ LDA L ΠΟΛΛΑΠΛΑΣΙΑΣΜΟ ΜΕ ΤΗΝ (L-M) SUB M MUL H rAX ΠΕΡΙΕΧΕΙ (A+B)*(L-M) INCX 2 rA ΠΕΡΙΕΧΕΙ (Α+Β)*(L-M)+2 STX H ΑΠΟΘΗΚΕΥΣΗ ΣΕ ΒΟΗΘΗΤΙΚΗ ΜΕΤΑΒΛΗΤΗ LDA A rΑ <------ Α SUB Β rΑ ΠΕΡΙΕΧΕΙ Α-Β SRAX 5 rΧ ΠΕΡΙΕΧΕΙ Α-Β * (ΤΟ ΠΡΟΣΗΜΟ ΕΜΕΙΝΕ ΣΤΟΝ rA) DIV Z rΑ ΠΕΡΙΕΧΕΙ (Α-Β)/Ζ ADD H rΑ ΠΕΡΙΕΧΕΙ (Α+Β)*(L-Μ)+2+(Α-Β)/Ζ STA W W ΠΕΡΙΕΧΕΙ (Α+Β)*(L-Μ)+2+(Α-Β)/Ζ

  8. Σύνθετες αριθμητικές πράξεις – Παράδειγμα 4 • Υπολογισμός της Παράστασης W = (M-L)*(L/Z) Ζ # 0 LDAMrA <---------- M SUBLrA ΠΕΡΙΕΧΕΙ M-L STA H ΒΟΗΘΗΤΙΚΗ ΜΕΤΑΒΛΗΤΗ ΜΕ M-L LDAKrA <---------- K SRAX 5 rAX <---------- K DIV Z rA <---------- K/Z MUL H rAX ΠΕΡΙΕΧΕΙ (M-L)*(K/Z) STX W W <---------- (M-L)*(K/Z) Εναλλακτικός κώδικας στηριζόμενος στη παρατήρηση ότι (M-L)*(K/Z) = ((M-L)*K)/Z). LDA M rA <-------- M SUB L rA ΠΕΡΙΕΧΕΙ M-L MUL K rAX ΠΕΡΙΕΧΕΙ (M-L)*K DIV Z rAX ΠΕΡΙΕΧΕΙ ((M-L)*K)/Z STA W W <-------- ((M-L)*K

  9. Υπερπλήρωση • Τύποι Υπερπλήρωσης • Υπερπλήρωση που ανιχνεύεται από το Hardware • Πρόσθεση • Αφαίρεση • Διαίρεση • Υπερπλήρωση που ανιχνεύεται από τον προγραμματιστή • Πολλαπλασιασμός

  10. Υπερπλήρωση που ανιχνεύεται από το Hardware • Εντολή JOV ΑΝ ΣΥ = "ΟΝ" ΤΟΤΕ ο ΣΥ παίρνει την τιμή "ΟFF" ο καταχωρητής J παίρνει την τρέχουσα τιμή του PC ο PC παίρνει την τελική διεύθυνση του παράγοντα της εντολής JOV ΔΙΑΦΟΡΕΤΙΚΑ το πρόγραμμα πηγαίνει στην επόμενη εντολή • Εντολή JNOV ΑΝ ΣΥ = "ΟFF" ΤΟΤΕ ο καταχωρητής J παίρνει την τρέχουσα τιμή του PC ο PC παίρνει την τελική διεύθυνση του παράγοντα της εντολής JOV ΔΙΑΦΟΡΕΤΙΚΑ ο ΣΥ παίρνει την τιμή "ΟFF" το πρόγραμμα πηγαίνει στην επόμενη εντολή

  11. Υπερπλήρωση που ανιχνεύεται από το Hardware – Παράδειγμα 1 LDAMrA <-------- M SUBLrA ΠΕΡΙΕΧΕΙ M-L MULKrAX ΠΕΡΙΕΧΕΙ (M-L)*K DIVZ rAX ΠΕΡΙΕΧΕΙ ((M-L)*K)/Z JOV OFLOWΕΛΕΓΧΟΣΥΠΕΡΠΛΗΡΩΣΗΣ STA W W <-------- ((M-L)*K ..... OFLOW ΕΝΤΟΛΗ ΣΤΟ ΤΕΛΟΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΗLT Μια άλλη αντιμετώπιση είναι και η παρακάτω (JNOV): LDAMrA <-------- M SUB L rA ΠΕΡΙΕΧΕΙ M-L MUL K rAX ΠΕΡΙΕΧΕΙ (M-L)*K DIV Z rAX ΠΕΡΙΕΧΕΙ ((M-L)*K)/Z JNOV NFLOW ΕΛΕΓΧΟΣ ΥΠΕΡΠΛΗΡΩΣΗΣ …... MΗΜΥΜΑ ΟΤΙ Η ΤΙΜΗ ΤΗΣ ΠΑΡΑΣΤΑΣΗΣ ....... ΔΕΝ ΕΙΝΑΙ ΑΞΙΟΠΙΣΤΗ (ΥΠΕΡΠΛΗΡΩΣΗ) ΗLT NFLOW STA W W <-------- ((M-L)*K

  12. Υπερχείλιση που ανιχνεύεται από τον χρήστη (Πολλαπλασιασμός) OUTPUT ORIG *+24 ΟΡΙΣΜΟΣ OUTPUT BUFFER MESSAGE ALF ΥΠΕΡΧ ΤΟΠΟΘΕΤΗΣΗ ΜΗΝΥΜΑΤΟΣ ALF ΕΙΛΗΣ ΣΤΗΝ ΠΕΡΙΟΧΗ MESSAGE ALF Η 3 ΘΕΣΕΙΣ ΜΝΗΜΗΣ . . . . . . . . LDA PAR1 REG[A] <-- MEM[PAR1] MUL PAR2 REG[AX] <-- REG[A] x MEM[PAR2] JANZ OFLOWΑν rA <> 0 πήγαινεστο OFLOW STX RES MEM[RES] <-- REG[X] . . . . . . . . ΟFLOW NOP ΜΗΝ ΚΑΝΕΙΣ ΤΙΠΟΤΕ * MΕΤΑΦΟΡΑ ΤΟΥ ΜΗΝΥΜΑΤΟΣ ΑΠΟ MESSAGE ΣΕ OUTPUT LDA MESSAGE STA OUTPUT LDA MESSAGE+1 STA OUTPUT+1 LDA MESAGE+2 STA OUTPUT+2 * ΕΚΤΥΠΩΣΗ OUT OUTPUT(LP) JBUS *(LP) HLT END BEGIN

  13. Δημιουργία βρόγχων Μ1 ΕQU 1 ΑΡΧΙΚΗ ΤΙΜΗ Μ2 CON 10 ΤΕΛΙΚΗ ΤΙΜΗ Μ3 EQU 1 ΒΗΜΑ ΒΡΟΓΧΟΥ ..... ΕΝΤ1 Μ1 rI1 <----- M1 LOOP NOP ΑΝΩ ΟΡΙΟ ΒΡΟΓΧΟΥ ..... εντολές βρόγχου ..... INC1 Μ3 rI1 <--- rI1 + Μ3 CMP1 M2 ΣΥΓΚΡΙΣΗ ΜΕ Μ2 JLE LOOP ΕΠΑΝΑΛΗΨΗ ΑΝ ΜΙΚΡΟΤΕΡΟ Η ΙΣΟ

  14. Δημιουργία βρόγχων ENT1 0,5 rΙ1 <----- rI5 LOOP NOP ΑΝΩ ΟΡΙΟ ΒΡΟΓΧΟΥ ..... εντολές βρόγχου ..... INC1 0,6 rI1 <----- rI1 + rI6 CMP1 Μ2 ΣΥΓΚΡΙΣΗ ΜΕ Μ2 JLE LOOP ΕΠΑΝΑΛΗΨΗ ΥΠΟ ΣΥΝΘΗΚΗ Ανταλλαγή τιμών καταχωρητών δεικτών Πραγματική σταθερά = αρχική σταθερά + REG(Ι) REG(1) = 0 + REG(5) --- REG(1) = REG(5)

  15. Δημιουργία βρόγχων –Παράδειγμα • Να υπολογιστεί το άθροισμα των αριθμών από 1 ως 10. Ν CON 10 ΟΡΙΣΜΟΣ ΣΤΑΘΕΡΑΣ Ν ..... ENT1 1 rΙ1 <---- 1 (ΑΡΧΙΚΗ ΤΙΜΗ ΜΕΤΡΗΤΗ) ENTA 0 ΜΗΔΕΝΙΣΜΟΣ ΑΘΡΟΙΣΤΗ LOOP INCΑ 0,1 rA <---- rA + rI1 ΙΝC1 1 rI1 <---- rI1 + 1 CMP1 Ν ΣΥΓΚΡΙΣΗ ΜΕ ΤΟ Ν JLE LOOP ΕΠΑΝΑΛΗΨΗ ΥΠΟ ΣΥΝΘΗΚΗ

  16. Χρήση πινάκων Μνήμη 0 1 2 3 4 5 6 7 10 11 12 13 1 PIN 2 3 4 5 6 Ορισμός πίνακα ORIG 3 PIN ORIG *+6 Τυχόν στοιχείο του πίνακα PIN-1,I Όπου Ι ο καταχωρητής που παίζει τον ρόλο του δείκτη LDA PIN-1,4 Υπολογισμός της τελικής διεύθυνσης τουπέμπτου στοιχείου του πίνακα. (ο rI4 θα είναι ο δείκτης) REG(4)  5 Σχετική διεύθυνση V= m +REG(4)=PIN-1+REG(4)= 3-1+5= 7 Τελική Διευθ.

  17. Δίνεται ένας πίνακας μιας διάστασης με 100 θέσεις. Να γραφεί ένα πρόγραμμα το οποίο να υπολογίζει τα αθροίσματα των περιττών και αρτίων αριθμών που περιέχονται στον πίνακα. N CON 100 ΜΗΚΟΣ ΠΙΝΑΚΑ TWO CON 2 ΜΙΑ ΒΟΗΘΗΤΙΚΗ ΜΕΤΑΒΛΗΤΗ SUMM CON 0 ΑΘΡΟΙΣΤΗΣ ΜΟΝΩΝ ΑΡΙΘΜΩΝ SUMZ CON 0 ΑΘΡΟΙΣΤΗΣ ΖΥΓΩΝ ΑΡΙΘΜΩΝ PIN ORIG *+100 ΠΙΝΑΚΑΣ * BEGIN ..... ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΩΝ ..... ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ ENT1 1 ΔΕΙΚΤΗΣ ΤΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ LP2 LDA PIN-1,1 ΦΟΡΤΩΣΗ ΣΤΟΙΧΕΙΟΥ ΤΟΥ ΠΙΝΑΚΑ SRAX 5 ΚΑΙ ΔΙΑΙΡΕΣΗ ΤΟΥ DIV TWO ΜΕ ΤΟ 2 JXZ LP1 ΕΛΕΓΧΟΣ ΤΟΥ ΥΠΟΛΟΙΠΟΥ LDA SUMM ΒΡΕΘΗΚΕ ΜΟΝΟΣ ΑΡΙΘΜΟΣ ΚΑΙ ADD PIN-1,1 ΠΡΟΣΤΙΘΕΤΑΙ STA SUMM ΣΤΟΝ ΑΘΡΟΙΣΤΗ SUMM JMP LP3 LP1 LDA SUMZ ΒΡΕΘΗΚΕ ΖΥΓΟΣ ΑΡΙΘΜΟΣ ΚΑΙ ADD PIN-1,1 ΚΑΙ ΠΡΟΣΤΙΘΕΤΑΙ STA SUMZ ΣΤΟΝ ΑΘΡΟΙΣΤΗ SUMZ LP3 INC1 1 ΜΗΧΑΝΙΣΜΟΣ CMP1 N ΕΛΕΓΧΟΥ JLE LP2 ΤΟΥ ΒΡΟΓΧΟΥ .....

  18. Συμβολικό πίνακας: Σύμβολα τιμές Ν 0000 TWO 0001 SUMM 0002 SUMZ 0003 PIN 0004 BEGIN 0150 Κ.Λ.Π Εικόνα μνήμης: 00000 00 00 00 01 44 N 0001 0 00 00 00 00 02 TWO 0002 0 00 00 00 00 00 SUMM 0003 0 00 00 00 00 00 SUMZ 0004 0 00 00 00 00 00 PIN θέση 1 0005 0 00 00 00 00 00 θέση 2 0006 0 00 00 00 00 00 θέση 3 ........................................................... 0147 0 00 00 00 00 00 θέση 100 0150 πρώτη εκτελέσιμη εντολή

  19. Εντολές αλλαγής ροής – Μια άλλη άποψη BEGIN ..... ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΩΝ ..... ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ …… ENT1 1 ΔΕΙΚΤΗΣ ΤΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ LDA PIN-1,1 ΦΟΡΤΩΣΗ ΣΤΟΙΧΕΙΟΥ ΤΟΥ ΠΙΝΑΚΑ SRAX 5 ΚΑΙ ΔΙΑΙΡΕΣΗ ΤΟΥ DIV TWO ΜΕ ΤΟ 2 JXZ *+5 ΕΛΕΓΧΟΣ ΤΟΥ ΥΠΟΛΟΙΠΟΥ LDA SUMM ΒΡΕΘΗΚΕ ΜΟΝΟΣ ΑΡΙΘΜΟΣ ΚΑΙ ADD PIN-1,1 ΠΡΟΣΤΙΘΕΤΑΙ STA SUMM ΣΤΟΝ ΑΘΡΟΙΣΤΗ SUMM JMP *+4 LDA SUMZ ΒΡΕΘΗΚΕ ΖΥΓΟΣ ΑΡΙΘΜΟΣ ΚΑΙ ADD PIN-1,1 ΚΑΙ ΠΡΟΣΤΙΘΕΤΑΙ STA SUMZ ΣΤΟΝ ΑΘΡΟΙΣΤΗ SUMZ INC1 1 ΜΗΧΑΝΙΣΜΟΣ CMP1 N ΕΛΕΓΧΟΥ JLE *-13 ΤΟΥ ΒΡΟΓΧΟΥ .....

More Related