ΚMΕΚMΕ Κυριότεροι Καταχωρητές της ΚΜΕ του υπολογιστή TRN KME APC I IRX
Μορφή Εντολών Στον υπολογιστή ΤRN οι εντολές παριστάνονται με μία λέξη υπολογιστή μήκους 20 δυαδικών ψηφίων Πεδίο Κώδικα Εντολής Πεδίο Διεύθυνσης Πεδίο Τρόπου Προσπέ- λασης Ψηφίο Έμμεσης Αναφοράς Ψηφίο Δεικτοδοτημένης Αναφοράς
Τρόποι Αναφοράς στη Μνήμη Άμεση Αναφορά στη Μνήμη Έστω η εντολή LDA A LDA TAG Α <- Μ[TAG] 5
Τρόποι Αναφοράς στη Μνήμη Δεικτοδοτημένη Αναφορά στη Μνήμη Έστω η εντολή LDA,Ι A 3 Ι = 1315 LDA,I TAG Α <- Μ[TAG+I] 7
Τρόποι Αναφοράς στη Μνήμη Έμμεση Αναφορά στη Μνήμη Έστω η εντολή LDA (1312) A LDA (TAG) Α <- Μ[ M[TAG] ] 6
Τρόποι Αναφοράς στη Μνήμη Έμμεση και Δεικτοδοτημένη Αναφορά στη Μνήμη Έστω η εντολή LDA,Ι (1312) A 3 Ι =1315 LDA,I (TAG) Α <- Μ[ M[TAG+I] ] 6
Κύκλοι Μηχανής Η μεταφορά από τη μνήμη και η εκτέλεση μιας εντολής, λαμβάνει χώρα σε τέσσερις φάσεις ή κύκλους μηχανής : 1.Κύκλος Ανάκλησης της Εντολής (Instruction Fetch) 2.Κύκλος Δεικτοδοτημένης Αναφοράς, D=1 (Index Addressing) (σχηματισμός βοηθητικής διεύθυνσης Β) 3.Κύκλος Έμμεσης Αναφοράς. E=1 (Indirect Addressing) (σχηματισμός τελικής διεύθυνσης Β) 4.Κύκλος Εκτέλεσης
Συμβολική Γλώσσα TRN Οι εντολές και οι ψευδοεντολές της συμβολικής γλώσσας αποτελούνται εν γένει από τέσσερα τμήματα: ΕΠΙΓΡΑΦΗ: ΛΕΙΤΟΥΡΓΙΑ ΔΙΕΥΘΥΝΣΗ ΣΧΟΛΙΑ Επιγραφή: Ορισμός συμβολικών ονομάτων Λειτουργία: Συμβολικό όνομα εντολής ή ψευδοεντολής Διεύθυνση: - συμβολικό όνομα - ένας αριθμός ( , $1310 MSB 0 ή 1) - σύμβολο * - συνδυασμός των ανωτέρω σε παραστάσεις Σχόλια:Αγνοούνται από το συμβολομεταφραστή
Συμβολική Γλώσσα TRN Είδη εντολών του TRN (32 εντολές): Εντολές μεταφοράς Εντολές μεταφοράς Αριθμητικές – λογικές εντολές Αριθμητικές – λογικές εντολές Εντολές άλματος Εντολές άλματος Εντολές ολίσθησης Εντολές ολίσθησης Εντολές εισόδου – εξόδου Εντολές εισόδου – εξόδου Άλλες εντολές Άλλες εντολές
Εντολές Μεταφοράς 1.LDAA M[T] 2.LDXX M[T] 3.LDII M[T] 4.STAM[T] A 5.STXM[T] X 6.STIM[T] I 7.ENAA AP* Επέκταση προσήμου 8.ΕΝΙΙ ΑP
Αριθμητικές και Λογικές 1.INAA A INXX X DCAΑ Α – 1 4.DCII I – 1 5.ADAA A + M[T] 6.SUBA A – M[T] 7.ANDA A ^ M[T] 8.ORAA A v M[T] 9.XORA A M[T] 10. CMA A A’
Εντολές Άλματος 1.JMPPC T 2.JPNPC Tif A<0 3.JAGPC Tif A>0 4.JPZPC Tif A=0 5.JPOPC Tif V=1 (overflow) 6.JSRM[T] PC PC T JIGPC Tif I > 0
Εντολές Ολίσθησης 1.SHA(Shift A αριστερά, if AP > 0 else Shift A δεξιά) (*** Διόρθωση στο βιβλίο) else Shift A δεξιά) (*** Διόρθωση στο βιβλίο) 2.SHX(Ομοίως για τον καταχωρητή Χ) 3.SAX(Ολίσθηση Α και Χ ταυτόχρονα)
Εντολές Εισόδου - Εξόδου 1.ΙΝPA (δεδομένα θύρας εισόδου) 2.OUT(δεδομένα θύρας εξόδου) Α Άλλες Εντολές 1.ΗLTΔιακοπή λειτουργίας 2.ΝΟPΚαμία λειτουργία
Ψευδοεντολές 1.Ψευδοεντολή NAM Έναρξη και ονομασία προγράμματος. 2. Ψευδοεντολές ENT και ΕΧΤ Εάν ένα πρόγραμμα P1 αναφέρεται σε διευθύνσεις ΑDD1, ADD2 ενός προγράμματος P2, τότε αυτό πρέπει να δηλωθεί στο P1 ως: EXT ΑDD1, ADD2 και στο πρόγραμμα P2 ως: ΕΝΤ ADD1, ADD2
Ψευδοεντολές 3. Ψευδοεντολή CON ΜορφήLOC:CON e1, e2, … Αποθηκεύει e1 στη διεύθυνση LOC e2 στη διεύθυνση LOC+1 e2 στη διεύθυνση LOC+1 4. Ψευδοεντολές RES ΜορφήLOC:RES n Με την ψευδοεντολή RES n θέσεις μνήμης από τη διεύθυνση LOC και μετά παραμένουν κενές προς χρήση από το πρόγραμμα
Ψευδοεντολές 5. Ψευδοεντολή ORG MoρφήORG C όπου C αριθμητική διεύθυνση που προσδιορίζει το αρχικό σημείο των εντολών που ακολουθούν στη μνήμη 6. Ψευδοεντολή END Δηλώνει τέλος του προγράμματος
Ένα απλό πρόγραμμα I Υλοποίηση του κώδικα result = 0; if ( input == 5) result = 10; result = 10;else result = 20; result = 20; στη συμβολική γλώσσα του TRN
Ένα απλό πρόγραμμα II NAM TEST ORG0 INPUT:CON 3(Τιμή μεταβλητής INPUT) FIVE:CON 5(Σταθερά FIVE για σύγκριση) RESULT:RES 1(Δέσμευση θέσης για RESULT) LDA INPUT( A = 3) SUB FIVE JPZ EQUAL ENA 20( INPUT ! = 5) STA RESULT( RESULT = 20) JMP STOP EQUAL:ENA 10( INPUT == 5) STA RESULT (RESULT = 10) STOP:HLT END
Ένα απλό πρόγραμμα II Υλοποίηση του βρόχου A = 0; for( i = n; i > 0; i --) A = A + i ; A = A + i ; στη συμβολική γλώσσα του TRN
Ένα απλό πρόγραμμα II NAM VROXOS ORG0 N:CON 5(Τιμή μεταβλητής n) INDX:RES 1(Δέσμευση θέσης για το i) SUM:RES1(Δέσμευση θέσης για αποτελ) LDI N( Ι = n) STI INDX( i = n) ENA 0(A = 0) LOOP: ADA INDX( A = A + i) DCI( Ι = Ι – 1) STI INDX( i = Ι ) JIG LOOP(if i>0 επανάληψη) STA SUM( SUM = A) HLTEND
Υποπρογράμματα Κυρίως πρόγραμμαΥποπρόγραμμα EXT TAG ENT TAG EXT TAG ENT TAG.TAG: RES 1.TAG: RES AD:JSR ΤΑG. ENA NUM JMP (TAG) ENA NUM JMP (TAG)... Με την εντολή JSR TAG :[TAG] AD+1 PC TAG + 1
Ένα απλό πρόγραμμα III Υλοποίηση του κώδικα x = 5; y = 2* x; z = 2 * y; στη συμβολική γλώσσα του TRN, με χρήση υπορρουτίνας που υπολογίζει το διπλάσιο ενός αριθμού, δηλαδή x = 5; y = double(x); z = double(y);
Υποπρογράμματα ΙΙΙ Κυρίως πρόγραμμαΥποπρόγραμμα ΝΑΜ ΜΑΙΝΝΑΜ DOUBLE ΝΑΜ ΜΑΙΝΝΑΜ DOUBLE EXT TAG ENT TAG EXT TAG ENT TAG ORG 0ORG 20 ORG 0ORG 20 X: CON 5TAG: RES 1 Y: RES 1SHA 1 (ολίσθ. του Α αριστ) Z: RES 1JMP (TAG) LDA XEND LDA XEND JSR ΤΑG JSR ΤΑG STA Y STA Y JSR TAG JSR TAG STA Z STA Z HLT HLT END END
Απεικόνιση της μνήμης 5 Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT ΧΥΖΧΥΖ Συμβ.Διευθ. Περιεχόμενο Διευθ Reserved SHA 1 JMP (TAG) ΤΑG Συμβ.Διευθ. Περιεχόμενο Διευθ
Απεικόνιση της μνήμης 5 Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT ΧΥΖΧΥΖ Συμβ.Διευθ. Περιεχόμενο Διευθ SHA 1 JMP (TAG) ΤΑG Συμβ.Διευθ. Περιεχόμενο Διευθ 5
Απεικόνιση της μνήμης 5 Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT ΧΥΖΧΥΖ Συμβ.Διευθ. Περιεχόμενο Διευθ SHA 1 JMP (TAG) ΤΑG Συμβ.Διευθ. Περιεχόμενο Διευθ 7