1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Μέρος πρώτο Καθηγητής: Α. Βαφειάδης 2008
2 Οργάνωση και Αρχιτεκτονική Υπολογιστών Βασικοί συντακτικοί κανόνες Top-down-programming Προσθήκη σχολίων Δεν αναμιγνύουμε στον κώδικα εκτελέσιμες εντολές με ψευδοεντολές Λάθος
3 Οργάνωση και Αρχιτεκτονική Υπολογιστών Αριθμητικές πράξεις Πρόσθεση LDA PAR1 REG[A] <-- MEM[PAR1] ADD PAR2 REG[A] <-- REG[A] + MEM[PAR2] 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] Οι κώδικες ισχύουν αν τα αποτελέσματα των πράξεων είναι <
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 rX ΠΕΡΙΕΧΕΙ (Α+Β)*(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)*(K/Z) Ζ # 0 LDA M rA < M SUB L rA ΠΕΡΙΕΧΕΙ M-L STA H ΒΟΗΘΗΤΙΚΗ ΜΕΤΑΒΛΗΤΗ ΜΕ M-L LDA K rA < 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 LDA M rA < M SUB L rA ΠΕΡΙΕΧΕΙ M-L MUL K rAX ΠΕΡΙΕΧΕΙ (M-L)*K DIV Z rAX ΠΕΡΙΕΧΕΙ ((M-L)*K)/Z JOV OFLOW ΕΛΕΓΧΟΣ ΥΠΕΡΠΛΗΡΩΣΗΣ STA W W < ((M-L)*K..... OFLOW ΕΝΤΟΛΗ ΣΤΟ ΤΕΛΟΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΗLT Μια άλλη αντιμετώπιση είναι και η παρακάτω (JNOV): LDA M rA < 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 < (ΑΡΧΙΚΗ ΤΙΜΗ ΜΕΤΡΗΤΗ) ENTA 0 ΜΗΔΕΝΙΣΜΟΣ ΑΘΡΟΙΣΤΗ LOOP INCΑ 0,1 rA <---- rA + rI1 ΙΝC1 1 rI1 <---- rI1 + 1 CMP1 Ν ΣΥΓΚΡΙΣΗ ΜΕ ΤΟ Ν JLE LOOP ΕΠΑΝΑΛΗΨΗ ΥΠΟ ΣΥΝΘΗΚΗ
16 Οργάνωση και Αρχιτεκτονική Υπολογιστών Χρήση πινάκων Μνήμη Ορισμός πίνακα ORIG 3 PINORIG *+6 Τυχόν στοιχείο του πίνακα PIN-1,I Όπου Ι ο καταχωρητής που παίζει τον ρόλο του δείκτη Υπολογισμός της τελικής διεύθυνσης του πέμπτου στοιχείου του πίνακα. (ο rI4 θα είναι ο δείκτης) REG(4) 5 Σχετική διεύθυνση V= m +REG(4)=PIN-1+REG(4)= 3-1+5= 7 Τελική Διευθ. LDA PIN-1,4 1 PIN
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 TWO0001 SUMM 0002 SUMZ0003 PIN0004 BEGIN0150 Κ.Λ.Π Εικόνα μνήμης: N TWO SUMM SUMZ PINθέση θέση θέση θέση πρώτη εκτελέσιμη εντολή
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 ΤΟΥ ΒΡΟΓΧΟΥ.....