Εργασια σε assembly

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
WILL
Δημοσιεύσεις: 3
Εγγραφή: 16 Ιούλ 2007 19:37

Εργασια σε assembly

Δημοσίευση από WILL » 16 Ιούλ 2007 19:48

ΓΕΙΑ ΣΑΣ ΠΑΙΔΙΑ.ΕΧΩ ΚΟΛΛΗΣΕΙ ΣΕ ΜΙΑ ΕΡΓΑΣΙΑ ΣΕ ASSEMBLY.ΜΠΟΡΕΙ ΚΑΠΟΙΟΣ ΝΑ ΒΟΗΘΗΣΕΙ?

Να υλοποιήσετε σε συμβολική γλώσσα (assembly) του MIPS και να εκτελέσετε στον SPIM, ένα πρόγραμμα που να διαβάζει από το πληκτρολόγιο μια σειρά χαρακτήρων S με μέγιστο μέγεθος 8 χαρακτήρες. Η σειρά πρέπει να αποθηκεύεται στη μνήμη του MIPS σε συγκεκριμένο πίνακα χαρακτήρων που πρέπει να ορίσετε. Το πρόγραμμά σας πρέπει αρχικά να διακρίνει εάν η σειρά χαρακτήρων μπορεί να είναι απρόσημος αριθμός σε κάποιο αριθμητικό σύστημα από το δυαδικό (βάση 2 και ψηφία 0, 1) έως το δεκαεξαδικό (βάση 16 και ψηφία 0, 1, ..., 9, A, B, C, D, E, F) δηλαδή να ελέγχει αν η σειρά περιέχει κάποιον χαρακτήρα εκτός των ψηφίων 0, 1, ..., 9 και των γραμμάτων της αγγλικής A, B, …, F (ισοδύναμα και τα πεζά γράμματα a, b, …, f). Τονίζεται ότι το πρόγραμμα πρέπει να διαβάζει χαρακτήρες και όχι αριθμό.
Αν η σειρά χαρακτήρων δεν μπορεί να παριστάνει αριθμό σε κάποιο σύστημα από το δυαδικό μέχρι το δεκαεξαδικό τότε να εκτυπώνεται σχετικό μήνυμα λάθους και να ζητείται νέος αριθμός.
Αν η σειρά χαρακτήρων διαπιστωθεί ότι παριστάνει αριθμό τότε να εκτυπώνεται μήνυμα που να δηλώνει σε ποια αριθμητικά συστήματα μπορεί να ανήκει ο αριθμός. Για παράδειγμα, αν εισαχθεί η σειρά χαρακτήρων 317a τότε αυτή μπορεί να παριστάνει έναν τετραψήφιο αριθμό σε οποιοδήποτε σύστημα από το ενδεκαδικό (με βάση 11) μέχρι το δεκαεξαδικό (με βάση το 16) αφού το μεγαλύτερό της ψηφίο είναι το a (δηλαδή το 10). Όμοια αν εισαχθεί η σειρά χαρακτήρων 472 αυτή μπορεί να παριστάνει έναν τριψήφιο αριθμό σε οποιοδήποτε σύστημα από το οκταδικό μέχρι το δεκαεξαδικό αφού το μεγαλύτερο ψηφίο της είναι το 7.
Τέλος, το πρόγραμμα πρέπει να κάνει μετατροπή του αριθμού από το σύστημα που θα δηλώνει ο χρήστης (με νέα είσοδο) σε ένα άλλο σύστημα (πάλι μεταξύ δυαδικού και δεκαεξαδικού) που θα δηλώνει και πάλι ο χρήστης. Για παράδειγμα, αν εισαχθεί η σειρά 213 και ο χρήστης δηλώσει ότι είναι του εξαδικού συστήματος (αφού αυτή μπορεί να ανήκει από το τετραδικό μέχρι και το δεκαεξαδικό) και ζητήσει τη μετατροπή στο δωδεκαδικό, τότε το πρόγραμμα θα πρέπει να μετατρέψει τον εξαδικό αριθμό 213¬six (που είναι ίσος με 81ten) στον δωδεκαδικό αριθμό 69twelve (ίσο επίσης με 81ten). Για τη μετατροπή από το ένα σύστημα στο άλλο μπορείτε να χρησιμοποιήσετε όποιον τρόπο θέλετε. Στην κονσόλα πρέπει να εκτυπώνεται το αποτέλεσμα και πάλι σαν μια σειρά χαρακτήρων.
Η όλη διαδικασία πρέπει να επαναλαμβάνεται μέχρι ο χρήστης να δώσει τη σειρά χαρακτήρων S ίση με οκτώ μηδενικά (00000000) οπότε έτσι δηλώνει το τερματισμό του προγράμματος.
Μπορείτε ελεύθερα να χρησιμοποιήσετε ψευδο-εντολές του SPIM και επίσης να χρησιμοποιήσετε υποπρογράμματα (υπορουτίνες) και κλήσεις σε αυτά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Εργασια σε assembly

Δημοσίευση από dva_dev » 16 Ιούλ 2007 23:33

Μέχρι το 10δικό είναι γνωστό ότι χρησιμοποιούνται τα σύμβολα 0-9.
Για το 16δικό ότι χρησιμοποιούνται επιπλέον τα σύμβολα A,B,C,D,E,F.
Για το 11δικό εώς το 15δικό τι γίνεται?

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

Εργασια σε assembly

Δημοσίευση από Kainourios » 16 Ιούλ 2007 23:56

Θα θεωρούνται μονοψήφια από το 0 μέχρι το A στο εντεκαδικό. Το πρόγραμμα σου σαν σκέψη-υλοποίηση δε μου φαίνεται δύσκολο, αλλά με SPIM δεν έχω ιδέα τι παίζει, από σένα το άκουσα πρώτη φορά και το έψαξα να δω τι είναι, γνωρίζω μόνο κάποια βασικά σε 8086... αυτό το πρόγραμμα σε 8086 θα ήθελε πολύ γράψιμο πάντως.

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες