4. Naloge: Zastavice, zanke, znakovni nizi
1.Napišite zaporedje ukazov v zbirniku za procesor ARM, ki v register najprej naloži vrednost 0 – uporabite takojšnje naslavljanje.
- Kakšno je stanje zastavic Z, C, V in N po tem ukazu? Zakaj?
Nato naj program registru odšteje vrednost 1.
- Kakšna je vrednost registra, če predstavlja nepredznačeno / predznačeno število? Kakšno je stanje zastavic Z, C, V in N po tem ukazu? Zakaj?
Nato naj program registru prišteje vrednost 2.
- Kakšno je stanje zastavic Z, C, V in N po tem ukazu? Zakaj? Kakšna je končna vrednost registra, če predstavlja nepredznačeno / predznačeno število?
2.Napišite podprogram, ki v znakovnem 'ABRAKADABRA' poišče zadnjo pojavitev črke, katere ASCII koda je v spremenljivki CHR. Če črko najde, naj bo po končanem podprogramu v registru r0 indeks iskane črke v nizu, sicer pa vrednost 0.
Primer: če iščete črko 'R', mora biti na koncu v r0 vrednost 10.
niz: .ascii "ABRAKADABRA" @ znakovni niz
.byte 0 @ zaključna ničla
chr: .byte 'R'
Namig: Iskano črko iz spremenljivke CHR naložite v register. Nato v zanki nalagajte trenutno črko v drug register in primerjajte registra. Če sta enaka, shranite indeks trenutne črke v r0. Zanko ponavljajte, dokler ne naložite zaključne ničle. Za delo z znakovnimi nizi si prilagodite pomnilniško okno simulatorja: desni klik na pomnilniško okno -> Display Mode, Character Display.
3.Napišite podprogram, ki prekopira z ničlo zaključen znakovni niz z začetnim naslovom v r0 na konec z ničlo zaključenega znakovnega niza, katerega začetni naslov se nahaja v r1.
niz1: .asciz "Prvi niz" @ prvi niz
niz2: .asciz "Drugi niz_" @ drugi niz
.space 40 @ prostor za daljsi niz
Namig: Najprej poiščite konec znakovnega niza z začetkom v r1. Nato sem prekopirajte niz z začetkom v r0 in ga s tem dodajte na konec niza z začetkom v r1.