Här är en steg-för-steg guide om hur man skriver ett program på assemblerspråk för att räkna antalet vokaler i en sträng:
1. Konfigurera datasegmentet :
- Deklarera strängen som en uppsättning tecken.
- Definiera en minnesplats för att lagra antalet vokaler.
2. Konfigurera kodsegmentet :
- Börja med programmets startpunkt, vanligtvis märkt "huvud" eller "start".
3. Initiera vokalantalet :
- Ställ in vokalantalet på noll initialt.
4. Slinga genom strängen :
- Använd en slinga för att iterera över varje tecken i strängen.
5. Sök efter vokaler :
- Inne i loopen, använd villkorliga uttalanden för att kontrollera om det aktuella tecknet är en vokal.
- Vanliga vokaler i det engelska alfabetet är 'A', 'E', 'I', 'O' och 'U', och deras gemener.
6. Öka vokalantalet :
- Om det aktuella tecknet är en vokal, öka vokalantalet.
7. Avsluta loopen :
- Fortsätt slingan tills slutet av strängen nås.
8. Visa vokalantalet :
- Använd systemanrop eller biblioteksfunktioner för att visa vokalantalet på konsolen.
9. Avsluta programmet :
- Använd ett systemanrop för att avsluta programmet.
Här är ett exempel på hur monteringskoden kan se ut:
```montering
.data
str:.asciiz "Hej världen!"
vokalantal:.int 0
.text
.global main
huvud:
xor ebx, ebx; Initiera vokalantal till 0
mov edi, str; Strängpekare
mov al, [edi]; Få första karaktären
slinga:
cmp al, '$'; Slut på strängen?
je display; Ja, hoppa för att visa vokalantal
cmp al, 'A'; Kontrollera om nuvarande tecken är 'A'
je ökar; Ja, hoppa till ökat vokalantal
cmp al, 'E'; Kontrollera om nuvarande tecken är "E"
je ökar
cmp al, 'jag'; Kontrollera om nuvarande karaktär är "jag"
je ökar
cmp al, 'O'; Kontrollera om nuvarande tecken är 'O'
je ökar
cmp al, 'U'; Kontrollera om nuvarande tecken är 'U'
je ökar
cmp al, 'a'; Kontrollera om nuvarande tecken är 'a'
je ökar
cmp al, 'e'; Kontrollera om nuvarande tecken är 'e'
je ökar
cmp al, 'jag'; Kontrollera om nuvarande tecken är 'i'
je ökar
cmp al, 'o'; Kontrollera om nuvarande tecken är 'o'
je ökar
cmp al, 'u'; Kontrollera om nuvarande tecken är 'u'
je ökar
ökning:
inc ebx; Öka antalet vokaler
inc edi; Flytta till nästa tecken
jmp loop; Hoppa till loop igen
visa:
mov eax, 4; Systemanrop för att skriva
mov ebx, 1; Filbeskrivning (stdout)
mov ecx, str; Meddelande att skriva
mov edx, 13; Meddelandelängd + nyradstecken
syscall; Ring systemsamtal
mov eax, 1; Systemanrop för att avsluta
mov ebx, 0; Utgångsstatus (framgång)
syscall; Ring systemsamtal
```
Denna kod förutsätter en Linux-miljö och använder System V-anropskonventioner. Den initierar vokalantalet till noll, itererar över strängen, kontrollerar varje tecken för vokaler och ökar antalet därefter. Slutligen visar den vokalantalet och avslutar programmet framgångsrikt.