Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Προγραμματισμός Υπολογιστών Γλώσσες

Πώς θα γράφατε ένα πρόγραμμα που μετράει τον αριθμό των φωνηέντων στη γλώσσα συναρμολόγησης συμβολοσειρών;

Ακολουθεί ένας βήμα προς βήμα οδηγός για το πώς να γράψετε ένα πρόγραμμα σε γλώσσα assembly για να μετρήσετε τον αριθμό των φωνηέντων σε μια συμβολοσειρά:

1. Ρύθμιση του τμήματος δεδομένων :

- Δηλώστε τη συμβολοσειρά ως πίνακα χαρακτήρων.

- Καθορίστε μια θέση μνήμης για την αποθήκευση του αριθμού των φωνηέντων.

2. Ρύθμιση του τμήματος κώδικα :

- Ξεκινήστε με το σημείο εισόδου του προγράμματος, που συνήθως φέρει την ένδειξη "κύριο" ή "έναρξη".

3. Εκκινήστε τον αριθμό φωνηέντων :

- Ορίστε αρχικά τον αριθμό φωνηέντων στο μηδέν.

4. Κάντε βρόχο μέσω της συμβολοσειράς :

- Χρησιμοποιήστε έναν βρόχο για να επαναλάβετε κάθε χαρακτήρα στη συμβολοσειρά.

5. Έλεγχος για φωνήεντα :

- Μέσα στον βρόχο, χρησιμοποιήστε προτάσεις υπό όρους για να ελέγξετε αν ο τρέχων χαρακτήρας είναι φωνήεν.

- Τα κοινά φωνήεντα στο αγγλικό αλφάβητο είναι «A», «E», «I», «O» και «U» και τα πεζά τους ισοδύναμα.

6. Αυξήστε τον αριθμό των φωνηέντων :

- Εάν ο τρέχων χαρακτήρας είναι φωνήεν, αυξήστε τον αριθμό των φωνηέντων.

7. Τερματισμός του βρόχου :

- Συνεχίστε το βρόχο μέχρι να φτάσετε στο τέλος της χορδής.

8. Εμφανίστε τον αριθμό φωνηέντων :

- Χρησιμοποιήστε κλήσεις συστήματος ή λειτουργίες βιβλιοθήκης για να εμφανίσετε τον αριθμό φωνηέντων στην κονσόλα.

9. Έξοδος από το πρόγραμμα :

- Χρησιμοποιήστε μια κλήση συστήματος για επιτυχή έξοδο από το πρόγραμμα.

Ακολουθεί ένα παράδειγμα για το πώς μπορεί να φαίνεται ο κώδικας συγκρότησης:

``` συναρμολόγηση

.δεδομένα

str:.asciiz "Hello World!"

Vowel_count:.int 0

.κείμενο

.παγκόσμια κύρια

κύριος:

xor ebx, ebx; Αρχικοποίηση vowel_count στο 0

mov edi, str; Δείκτης συμβολοσειράς

mov al, [edi]; Αποκτήστε τον πρώτο χαρακτήρα

βρόχος:

cmp al, '$'; Τέλος χορδής;

je display; Ναι, μεταβείτε στην εμφάνιση του αριθμού φωνηέντων

cmp al, 'A'; Ελέγξτε εάν ο τρέχων χαρακτήρας είναι "A"

je προσαύξηση; Ναι, μεταβείτε στην αύξηση του αριθμού φωνηέντων

cmp al, 'E'; Ελέγξτε εάν ο τρέχων χαρακτήρας είναι "E"

je προσαύξηση

cmp al, 'I'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "I"

je προσαύξηση

cmp al, 'O'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "O"

je προσαύξηση

cmp al, 'U'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "U"

je προσαύξηση

cmp al, 'a'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "a"

je προσαύξηση

cmp al, 'e'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "e"

je προσαύξηση

cmp al, 'i'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "i"

je προσαύξηση

cmp al, 'o'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "o"

je προσαύξηση

cmp al, 'u'; Ελέγξτε αν ο τρέχων χαρακτήρας είναι "u"

je προσαύξηση

αύξηση:

Inc ebx; Αύξηση του αριθμού φωνηέντων

Inc edi; Μετακίνηση στον επόμενο χαρακτήρα

βρόχος jmp; Μετάβαση σε βρόχο ξανά

επίδειξη:

mov eax, 4; Κλήση συστήματος για εγγραφή

mov ebx, 1; Περιγραφέας αρχείου (stdout)

mov ecx, str; Μήνυμα για να γράψετε

mov edx, 13; Μήκος μηνύματος + χαρακτήρας νέας γραμμής

syscall; Πραγματοποιήστε κλήση συστήματος

mov eax, 1; Κλήση συστήματος για έξοδο

mov ebx, 0; Κατάσταση εξόδου (επιτυχής)

syscall; Πραγματοποιήστε κλήση συστήματος

```

Αυτός ο κώδικας προϋποθέτει περιβάλλον Linux και χρησιμοποιεί τις συμβάσεις κλήσης System V. Αρχικοποιεί το πλήθος φωνηέντων στο μηδέν, επαναλαμβάνει τη συμβολοσειρά, ελέγχει κάθε χαρακτήρα για φωνήεντα και αυξάνει τον αριθμό ανάλογα. Τέλος, εμφανίζει τον αριθμό των φωνηέντων και βγαίνει με επιτυχία από το πρόγραμμα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα