Title: SOS που είναι το λάθος στον TRN Post by: kekropas on May 15, 2006, 21:01:49 pm Παιδιά κοντέυω να τρελλαθώ, πάω να κάνω ένα πρόγραμμα να εχει εισόδους και να δίνει έξοδο NAND. Έχω κάνει κάτι τελείως μπακάλικο το ξέρω αλλά θα έπρεπε να δουλεύει.
Για την περίπτωση εισόδων 1: 1 2: 0 το πρόγραμμα: NAM NAND SPACE: RES 3 INP 1 STA SPACE+1 INP 2 STA SPACE+2 LDI SPACE+1 JIG X JMP FINAL X: JPZ FINAL JAG Y Y: DCA OUT 8 JMP EXIT FINAL: ORA SPACE+1 OUT 8 EXIT: NOP END θα έπρεπε να δουλεύει κανονικά αλλά το βλέπω μπροστά στα μάτια μου με εκτέλεση μιας εντολής τη φορά ενώ το Α είναι 0 να αγνοεί την JPZ FINAL ή οτιδήποτε αντίσοιχο που έκανα και να συνεχίζει στη DCA. Κάποιος βοήθεια είναι θέμα ψυχικής υγείας πλέον!!! Title: Re: SOS που είναι το λάθος στον TRN Post by: MihalisK on May 15, 2006, 21:11:54 pm Αν και δεν πολυθυμάμαι λεπτομέρειες έτσι για την κουβέντα. Η JPZ με ποια συνθήκη δουλεύει? Εννοώ είναι Jump if Zero τι? Η JAG?
Title: Απ: SOS που είναι το λάθος στον TRN Post by: kekropas on May 16, 2006, 01:02:18 am JPZ η συνθήκη είναι άλμα αν Α=0
JAG αν Α αρνητικός Title: Απ: SOS που είναι το λάθος στον TRN Post by: Netgull on May 16, 2006, 03:35:58 am Κοίτα ούτε εγώ θυμάμαι λεπτομέρειες, αλλά συνήθως η JPZ λειτουργεί ελέγχοντας τη σημαία Z (Zero). Αν η σημαία είναι 1 τότε οδηγεί σε διακλάδωση, αν όχι συνεχίζει στην επόμενη εντολή. Για να τεθεί η σημαία Ζ ίση με 0 ή 1 πρέπει να προηγηθεί κάποια πράξη στον καταχωρητή Α (πχ LDA 0 ή ADA 0). Εδώ δεν υπάρχει καμία πράξη στον Α. Ποια είναι η τιμή της σημαίας Ζ κατά την εκκίνηση του υπολογιστή;
Title: Re: SOS που είναι το λάθος στον TRN Post by: Verminoz on May 16, 2006, 07:31:21 am Ρε kekropas εγώ το είχα σκεφτεί εντελώς διαφορετικά το πρόγραμμα αλλά και εμένα είχε ένα κόλλημα στο τέλος...θα επιστρέψω με λεπτομέρειες...
Title: Re: SOS που είναι το λάθος στον TRN Post by: Verminoz on May 16, 2006, 09:08:24 am kekropas ιδού και μια δική μου ακόμα πιο μπακάλικη λύση που όμως δούλεψε!!! Μπορείς να δοκιμάσεις τον κώδικα να δεις και από μόνος σου!
Το μόνο που δεν κατάλαβα είναι ένα ανεξήγητο HLT που κάνει κάπου στην αρχή. Αν ξαναπατήσεις όμως το κόκκινο λαμπάκι στην εκτέλεση, αυτή θα συνεχιστεί κανονικά και το αποτέλεσμα ήταν σωστό στις δοκιμές μου... NAM NAND EXT ZERO EXT NZERO ORG 0 X: RES 1 Y: RES 1 NUM: RES 1 MAIN: INP 0 STA X INP 1 STA Y ENI -2 STI NUM LDA X ADA Y ADA NUM JPZ ZERO JPN NZERO HLT END NAM SUB1 ENT ZERO ZERO: ENA 0 OUT 8 JMP (ZERO) END NAM SUB2 ENT NZERO NZERO: ENA 1 OUT 8 JMP (NZERO) END Title: Απ: SOS που είναι το λάθος στον TRN Post by: kekropas on May 16, 2006, 10:42:44 am Το θέμα δεν είναι να λυθεί η άσκηση αφού έτσι και αλλιώς για εξάσκηση είναι. Αλλά η σημαία Ζ είναι 0 και όλα τα ψηφια του Α είναι 0 και το πρόγραμμα περνάει επειδικτικά την εντολή JPZ χωρίς να κάνει το άλμα.
Title: Απ: SOS που είναι το λάθος στον TRN Post by: Netgull on May 16, 2006, 10:52:40 am Ε για να κάνει άλμα πρέπει η σημαία Ζ να είναι 1! Και για να είναι η σημαία Ζ 1 πρέπει να εκτελεστεί κάποια εντολή που να επηρεάζει τη σημαία Ζ και να την κάνει 1.
Title: Απ: SOS που είναι το λάθος στον TRN Post by: kekropas on May 16, 2006, 21:20:05 pm Στο βιβλίο λέει ότι για να γίνει η σημαία Ζ 1 πρέπει όλα τα ψηφία του Α να είναι 0 πράγμα που συμβαίνει αλλά η σημαία Ζ μένει στο 0.
Απ'ότι διάβασα η σημαία Ζ μαζί με τις S,V δεν είναι ανεξάρτητοι καταχωρητές που έχουμε πρόσβαση με τις εντολές απλώς επηρεάζονται από την τιμή του Α. Ολες οι ιδέες δεκτές Title: Re: SOS που είναι το λάθος στον TRN Post by: abc on May 16, 2006, 22:02:18 pm Είναι ακριβώς το πρόβλημα που είχα και γω πέρσι.
Η λύση είναι απλή: Η εντολή ροής-ελέγχου JPZ δουλεύει πολύ σωστά όπως λες με τη σημαία Ζ. Η σημαία Ζ όμως γίνεται 1 μόνο αν ΜΕΤΑ από πράξη στον Α, προκύψει το 0. Δηλαδή, αν εγώ πάω και φορτώσω το 0 στον Α δεν συνεπάγεται το ότι η σημαία Ζ είναι 1. Άσε τι λέει το σούπερ βιβλίο. Πίστεψε εμένα ^crazy^ Title: Απ: SOS που είναι το λάθος στον TRN Post by: kekropas on May 17, 2006, 13:06:58 pm ok οπότε θα προσθέσω μια ADA εντολή με μια διέθυνση 0 ώστε να μην επηρεάζει τον Α. Ευχαριστώ φίλε μου.
Τώρα έπιασα τια ασκήσεις της εργασίας και είδα ότι δεν είναι και εύκολες |