Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

Πρόγραμμα με βρόχο

Οι εντολές άλματος έχουν μία πολύ σημαντική χρησιμότητα: βοηθούν να κατασκευάζουμε προγράμματα που εκτελούν επαναληπτικά κάποιες λειτουργίες.

Η επαναληπτική εκτέλεση μίας ομάδας εντολών σε ένα πρόγραμμα ονομάζεται βρόχος (loop).

Αν μάλιστα η επαναληπτική εκτέλεση του βρόχου δε σταματά, τότε λέμε ότι το πρόγραμμα έχει πέσει σε ατέρμονα βρόχο (infinite loop).

Μία διαδικασία που μπορεί να υλοποιηθεί με ένα βρόχο, είναι η ανάγνωση από το πληκτρολόγιο ενός αριθμού, bit προς bit. Η διαδικασία ανάγνωσης ενός bit είναι η ίδια, ανεξάρτητα από τη θέση του μέσα στη λέξη. Έτσι μπορούμε να κατασκευάσουμε ένα βρόχο που θα επαναληφθεί 16 φορές και θα διαβάζει ένα bit από το πληκτρολόγιο.

Επειδή από το πληκτρολόγιο μπορούμε να διαβάσουμε ή χαρακτήρες ή οκταδικούς αριθμούς, και όχι μόνο 1 bit, θα επιλέξουμε την ανάγνωση οκταδικών αριθμών, αλλά θα χρησιμοποιούμε μόνο το τελευταίο δυαδικό ψηφίο τους. Για να το κάνουμε αυτό, διαβάζουμε τον οκταδικό αριθμό στο συσσωρευτή Α, τον ολισθαίνουμε 15 θέσεις προς τα αριστερά (οπότε όλα τα ψηφία του εκτός από το τελευταίο χάνονται) και μετά τον ολισθαίνουμε 15 θέσεις προς τα δεξιά, οπότε επανέρχεται το τελευταίο bit στη σωστή θέση και συμπληρώνεται από τα αριστερά με μηδενικά.

Αν ο συσσωρευτής Α περιέχει αρχικά τον αριθμό 0010000001010001 και διαβαστεί ο οκταδικός αριθμός 3(8)=011(2) από το πληκτρολόγιο, η νέα τιμή του Α θα είναι 0010000001010011. Ολισθαίνοντας τον Α κατά 15 θέσεις προς τα αριστερά, θα πάρει τη νέα τιμή 1000000000000000. Όταν τον ολισθήσουμε ξανά 15 θέσεις προς τα δεξιά, η τιμή του θα γίνει 0000000000000001, έχει διατηρηθεί δηλαδή μόνο το δεξιότερο bit.

Ο αριθμός που διαβάζουμε θα αποθηκευθεί σε μία θέση μνήμης στην οποία θα δώσουμε το όνομα NUM. Αρχικά η θέση μνήμης NUM θα έχει την τιμή 0. Επίσης θα χρειαστούμε άλλη μία θέση μνήμης, με το όνομα COUNTER, στην οποία θα μετράμε το πλήθος των επαναλήψεων, ώστε να σταματήσουμε μετά από 16 επαναλήψεις, όσες και τα bits μίας λέξης. Και η μεταβλητή COUNTER αρχικά θα έχει την τιμή 0. Σε γενικές γραμμές, η λειτουργία του προγράμματος θα είναι η εξής:

Βήμα 1: Φόρτωσε την τρέχουσα τιμή του αριθμού από τη θέση μνήμης NUM. Βήμα 2: Ολίσθησε προς τα αριστερά την τρέχουσα τιμή του αριθμού κατά 1, για να κάνεις «χώρο» για το νέο bit. Βήμα 3: Αποθήκευσε την τρέχουσα τιμή του αριθμού στη θέση μνήμης NUM. Βήμα 4: Διάβασε ένα bit από το πληκτρολόγιο. Βήμα 5: Πρόσθεσε την τρέχουσα τιμή του αριθμού NUM στο bit αυτό, για να πάρεις το νέο αριθμό. Βήμα 6: Αποθήκευσε τη νέα τιμή του αριθμού στη θέση μνήμης NUM. Βήμα 7: Φόρτωσε την τιμή του μετρητή COUNTER στο συσσωρευτή. Βήμα 8: Πρόσθεσε 1 στην τιμή του μετρητή. Βήμα 9: Αποθήκευσε τη νέα τιμή του συσσωρευτή στη θέση μνήμης COUNTER. Βήμα 10: Αφαίρεσε 16 από την τιμή του συσσωρευτή. Βήμα 11: Αν η τιμή του Α είναι αρνητική, τότε το πρόγραμμα πρέπει να τελειώσει, οπότε γίνεται άλμα στην τελευταία εντολή του, το βήμα 13. Βήμα 12: Αν φθάσουμε στο βήμα αυτό, το πρόγραμμα δεν έχει τελειώσει ακόμα, έτσι πάμε ξανά στο βήμα 1. Βήμα 13: STOP.

Ας δούμε και ολόκληρο το πρόγραμμα σε συμβολική γλώσσα: [pic]