Her er en trinn-for-trinn-guide for hvordan du skriver et program på assemblerspråk for å telle antall vokaler i en streng:
1. Konfigurer datasegmentet :
- Erklær strengen som en rekke tegn.
- Definer en minneplassering for å lagre antall vokaler.
2. Konfigurer kodesegmentet :
- Start med programmets inngangspunkt, vanligvis merket "hoved" eller "start".
3. Initialiser vokaltellingen :
- Sett vokaltallet til null først.
4. Sløyfe gjennom strengen :
- Bruk en løkke til å iterere over hvert tegn i strengen.
5. Se etter vokaler :
- Inne i loopen, bruk betingede utsagn for å sjekke om det gjeldende tegnet er en vokal.
- Vanlige vokaler i det engelske alfabetet er 'A', 'E', 'I', 'O' og 'U', og deres små bokstavekvivalenter.
6. Øk vokaltallet :
- Hvis det gjeldende tegnet er en vokal, øker du vokaltallet.
7. Avslutt sløyfen :
- Fortsett løkken til slutten av strengen er nådd.
8. Vis vokaltellingen :
- Bruk systemanrop eller bibliotekfunksjoner for å vise vokaltallet på konsollen.
9. Avslutt programmet :
- Bruk et systemanrop for å avslutte programmet.
Her er et eksempel på hvordan monteringskoden kan se ut:
```montering
.data
str:.asciiz "Hei verden!"
vokalantall:.int 0
.tekst
.global main
hoved:
xor ebx, ebx; Initialiser vokaltelling til 0
mov edi, str; Strengepeker
mov al, [edi]; Få første karakter
loop:
cmp al, '$'; Slutt på streng?
je display; Ja, hopp for å vise vokalantall
cmp al, 'A'; Sjekk om gjeldende tegn er 'A'
je øker; Ja, hopp til økende vokaltelling
cmp al, 'E'; Sjekk om gjeldende tegn er "E"
du øker
cmp al, 'jeg'; Sjekk om gjeldende karakter er "jeg"
du øker
cmp al, 'O'; Sjekk om gjeldende tegn er 'O'
du øker
cmp al, 'U'; Sjekk om gjeldende tegn er "U"
du øker
cmp al, 'a'; Sjekk om gjeldende tegn er 'a'
du øker
cmp al, 'e'; Sjekk om gjeldende tegn er 'e'
du øker
cmp al, 'i'; Sjekk om gjeldende tegn er 'i'
du øker
cmp al, 'o'; Sjekk om gjeldende tegn er 'o'
du øker
cmp al, 'u'; Sjekk om gjeldende tegn er 'u'
du øker
økning:
inc ebx; Øk antall vokaler
inc edi; Gå til neste tegn
jmp loop; Hopp til loop igjen
utstilling:
mov eax, 4; Systemkall for å skrive
mov ebx, 1; Filbeskrivelse (stdout)
mov ecx, str; Melding å skrive
mov edx, 13; Meldingslengde + nylinjetegn
syscall; Foreta systemanrop
mov eax, 1; Systemanrop for å avslutte
mov ebx, 0; Utgangsstatus (suksess)
syscall; Foreta systemanrop
```
Denne koden forutsetter et Linux-miljø og bruker System V kallekonvensjoner. Den initialiserer vokaltellingen til null, itererer over strengen, sjekker hvert tegn for vokaler, og øker tellingen tilsvarende. Til slutt viser den vokaltallet og avslutter programmet.