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.