Hier is een stapsgewijze handleiding voor het schrijven van een programma in assembleertaal om het aantal klinkers in een string te tellen:
1. Het gegevenssegment instellen :
- Declareer de string als een array van karakters.
- Definieer een geheugenlocatie om het aantal klinkers op te slaan.
2. Stel het codesegment in :
- Begin met het beginpunt van het programma, meestal aangeduid met 'main' of 'start'.
3. Initialiseer het aantal klinkers :
- Zet het aantal klinkers aanvankelijk op nul.
4. Loop door de string :
- Gebruik een lus om elk teken in de string te doorlopen.
5. Controleer op klinkers :
- Gebruik binnen de lus voorwaardelijke uitspraken om te controleren of het huidige teken een klinker is.
- Veel voorkomende klinkers in het Engelse alfabet zijn 'A', 'E', 'I', 'O' en 'U', en hun equivalenten in kleine letters.
6. Verhoog het aantal klinkers :
- Als het huidige teken een klinker is, verhoogt u het aantal klinkers.
7. Beëindig de lus :
- Ga door met de lus totdat het einde van het touwtje is bereikt.
8. Geef het aantal klinkers weer :
- Gebruik systeemoproepen of bibliotheekfuncties om het aantal klinkers op de console weer te geven.
9. Verlaat het programma :
- Gebruik een systeemoproep om het programma succesvol af te sluiten.
Hier is een voorbeeld van hoe de assemblagecode eruit zou kunnen zien:
```montage
.gegevens
str:.asciiz "Hallo wereld!"
klinker_telling:.int 0
.tekst
.globale belangrijkste
voornaamst:
xor ebx, ebx; Initialiseer klinker_telling op 0
mov edi, str; Tekenreeksaanwijzer
mov al, [edi]; Krijg het eerste teken
lus:
cmp al, '$'; Einde van de reeks?
je weergave; Ja, spring om het aantal klinkers weer te geven
cmp al, 'A'; Controleer of het huidige teken 'A' is
je verhoging; Ja, ga naar het verhogen van het aantal klinkers
cmp al, 'E'; Controleer of het huidige teken 'E' is
je verhoging
cmp al, 'ik'; Controleer of het huidige teken 'I' is
je verhoging
cmp al, 'O'; Controleer of het huidige teken 'O' is
je verhoging
cmp al, 'U'; Controleer of het huidige teken 'U' is
je verhoging
cmp al, 'a'; Controleer of het huidige teken 'a' is
je verhoging
cmp al, 'e'; Controleer of het huidige teken 'e' is
je verhoging
cmp al, 'ik'; Controleer of het huidige teken 'i' is
je verhoging
cmp al, 'o'; Controleer of het huidige teken 'o' is
je verhoging
cmp al, 'u'; Controleer of het huidige teken 'u' is
je verhoging
verhoging:
inclusief ebx; Verhoog het aantal klinkers
incl. bewerking; Ga naar het volgende teken
jmp-lus; Spring opnieuw naar de lus
weergave:
verplaats eax, 4; Systeemoproep om te schrijven
mov ebx, 1; Bestandsbeschrijving (stdout)
mov ecx, str; Bericht om te schrijven
movedx, 13; Berichtlengte + teken voor nieuwe regel
systeemoproep; Systeemoproep plaatsen
verplaats eax, 1; Systeemoproep om af te sluiten
mov ebx, 0; Afsluitstatus (succes)
systeemoproep; Systeemoproep plaatsen
```
Deze code gaat uit van een Linux-omgeving en gebruikt de System V-aanroepconventies. Het initialiseert het aantal klinkers op nul, herhaalt de reeks, controleert elk teken op klinkers en verhoogt het aantal dienovereenkomstig. Ten slotte wordt het aantal klinkers weergegeven en wordt het programma met succes afgesloten. |