190 likes | 300 Views
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Μέρος πρώτο Καθηγητής: Α. Βαφειάδης 200 8. Βασικοί συντακτικοί κανόνες.
E N D
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Μέρος πρώτο Καθηγητής: Α. Βαφειάδης 2008
Βασικοί συντακτικοί κανόνες • Top-down-programming • Προσθήκη σχολίων • Δεν αναμιγνύουμε στον κώδικα εκτελέσιμες εντολές με ψευδοεντολές Λάθος
Αριθμητικές πράξεις • Πρόσθεση 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
Αριθμητικές πράξεις • Διαίρεση * ΦΟΡΤΩΣΗ ΔΙΑΙΡΕΤΕΟΥ (A ΤΡΟΠΟΣ) LDX PAR1 ΦΟΡΤΩΣΗ ΤΟΥ ΜΕΓΕΘΟΥΣ ΣΤΟΝ rAX LDA PAR1(0:0) ΦΟΡΤΩΣΗ ΤΟΥ ΠΡΟΣΗΜΟΥ ΣΤΟΝ rAX DIV PAR2 ΔΙΑΙΡΕΣΗ * ΦΟΡΤΩΣΗ ΔΙΑΙΡΕΤΕΟΥ (Β ΤΡΟΠΟΣ) LDA PAR1 ΦΟΡΤΩΣΗ ΤΟΥ PAR1 ΣΤΟΝ rA SRAX 5 ΜΕΤΑΤΟΠΙΣΗ ΤΟΥ ΜΕΓΕΘΟΥΣ DIV PAR2 ΔΙΑΙΡΕΣΗ
Σύνθετες αριθμητικές πράξεις – Παράδειγμα 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
Σύνθετες αριθμητικές πράξεις – Παράδειγμα 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
Σύνθετες αριθμητικές πράξεις – Παράδειγμα 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+(Α-Β)/Ζ
Σύνθετες αριθμητικές πράξεις – Παράδειγμα 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
Υπερπλήρωση • Τύποι Υπερπλήρωσης • Υπερπλήρωση που ανιχνεύεται από το Hardware • Πρόσθεση • Αφαίρεση • Διαίρεση • Υπερπλήρωση που ανιχνεύεται από τον προγραμματιστή • Πολλαπλασιασμός
Υπερπλήρωση που ανιχνεύεται από το Hardware • Εντολή JOV ΑΝ ΣΥ = "ΟΝ" ΤΟΤΕ ο ΣΥ παίρνει την τιμή "ΟFF" ο καταχωρητής J παίρνει την τρέχουσα τιμή του PC ο PC παίρνει την τελική διεύθυνση του παράγοντα της εντολής JOV ΔΙΑΦΟΡΕΤΙΚΑ το πρόγραμμα πηγαίνει στην επόμενη εντολή • Εντολή JNOV ΑΝ ΣΥ = "ΟFF" ΤΟΤΕ ο καταχωρητής J παίρνει την τρέχουσα τιμή του PC ο PC παίρνει την τελική διεύθυνση του παράγοντα της εντολής JOV ΔΙΑΦΟΡΕΤΙΚΑ ο ΣΥ παίρνει την τιμή "ΟFF" το πρόγραμμα πηγαίνει στην επόμενη εντολή
Υπερπλήρωση που ανιχνεύεται από το 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
Υπερχείλιση που ανιχνεύεται από τον χρήστη (Πολλαπλασιασμός) 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
Δημιουργία βρόγχων Μ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 ΕΠΑΝΑΛΗΨΗ ΑΝ ΜΙΚΡΟΤΕΡΟ Η ΙΣΟ
Δημιουργία βρόγχων 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)
Δημιουργία βρόγχων –Παράδειγμα • Να υπολογιστεί το άθροισμα των αριθμών από 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 ΕΠΑΝΑΛΗΨΗ ΥΠΟ ΣΥΝΘΗΚΗ
Χρήση πινάκων Μνήμη 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 Τελική Διευθ.
Δίνεται ένας πίνακας μιας διάστασης με 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 ΤΟΥ ΒΡΟΓΧΟΥ .....
Συμβολικό πίνακας: Σύμβολα τιμές Ν 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 πρώτη εκτελέσιμη εντολή
Εντολές αλλαγής ροής – Μια άλλη άποψη 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 ΤΟΥ ΒΡΟΓΧΟΥ .....