Dodatna neobvezna domača naloga

Ta naloga ni obvezna. 

Rešite eno ali več spodnjih nalog. Nalogo oddajte v eni zip datoteki. Vsaka naloga je okvirno vredna 5T. S tem lahko pridobite dodatne točke za višjo oceno.

1. Beseda »dovod« je palindrom. Kar pomeni, da se nazaj prebere enako kot naprej. Napišite program v zbirnem jeziku za procesor ARM9, ki bo izračunal ali je niz NIZ1 palindrom. V 16-bitno spremenljivko JEPAL shranite 1, če je niz res palindrom in 0, če niz ni palindrom. Predpostavite, da niz ni prazen, ter da ga sestavljajo samo male črke brez ločil in presledkov. Uporabite posredno naslavljanje brez odmika.  Nalogo rešite tako, da z baznima registroma r2 in r3 berete celoten niz naprej in nazaj, ter primerjajte enakost črk.  

NIZ1:       .asciz     “dovod”
.align  
JEPAL:      .space      2 

2. V zbirniku za procesor ARM napišite program, ki števila v podani tabeli predznačenih števil TABELA uredi po absolutni vrednosti od najmanjšega do največjega. Uporabite algoritem urejanje z mehurčki (ang. bubble sort). Podana je tabela in velikost tabele. Kot komentar na koncu zapišite še elemente tabele po koncu izvajanja programa v desetiškem in šestnajstiškem sistemu.           

TABELA: .hword 1, 5, -1, 8, -130, 1024, 10, 64, -80, 256
VELIKOST_TABELE: .byte 10

3. Vaš prijatelj Frodo je prejel pomembno sporočilo od čarodeja Gandalfa. Ker pa na vsakem koraku opreza zlobni Saruman, je to sporočilo kriptirano. Ker ročno dešifriranje takšnih sporočil terja veliko časa, se je Frodo odločil, da bo napisal program. Ker Frodo ni vešč v programiranju, je za pomoč prosil vas. Pomagajte Frodu in napišite program v zbirnem jeziku za procesor ARM, ki bo dešifriral prejeto kriptirano sporočilo.      

Podani so trije ASCII znakovni nizi: NIZ, SEZNAM1 in SEZNAM2. V zbirniku za procesor ARM napišite program, ki vse male črke znakovnega niza NIZ zamenja na sledeč način. Če je majhna črka niza NIZ v znakovnem nizu SEZNAM1 jo zamenjaj z istoležno veliko črko niza SEZNAM2. Če je vsebina niza SEZNAM1 "abc" in je vsebina niza SEZNAM2 "xyz" moramo vsak znak "a" v nizu NIZ zamenjati z veliko črko "X", vsak znak "b" moramo zamenjati z veliko črko "Y" in vsak znak "c" z veliko črko "Z". Predpostavite lahko, da sta niza SEZNAM1 in SEZNAM2 enake dolžine ter, da vsebujeta samo male črke. Kot komentar dopišite kakšna je vsebina niza NIZ po koncu izvajanja programa?  

NIZ1: .asciz "yxem Nx yzcdxo, am knxfx Vcjs, Gbnnws rx ejnm nj Zxcj."     
SEZNAM1:     .asciz  "xfjrmansobyzcdwke"       
SEZNAM2:     .asciz  "adegiklmnoprstuvz"  

4. Bojazljivi Bojan se je odpravil na safari, kjer mu je pot prekrižal kameleon. Od strahu je Bojan popolnoma okamenel. Beseda kameleon je anagram besede okamenel, saj  je sestavljena iz enakih črk. V zbirnem jeziku za procesor ARM napišite program, ki bo preveril ali je podan niz anagram drugega niza.

Nalogo rešite s preštevanjem znakov. Najprej se z zanko sprehodite čez prvi niz in preštejte vse znake prve besede. Število pojavitev sproti shranjujte v seznam pojavitev. Z drugo zanko pojdite čez drug niz in odštevajte pojavitve. Na koncu s tretjo zanko preverite ali vsebuje seznam pojavitev kakšne neničelne elemente. Če ne, potem je prvi niz anagram drugega. Na koncu zapišite rezultat v spremenljivko anagram. Zapišite nič če ni anagram, oziroma ena če je anagram. Predpostavite lahko, da je seznam pojavitev na začetku prazen, ter da  vsebujeta oba niza samo male črke.        

                                  .text
NIZ1:                     .asciz »kameleon«     
NIZ2:                     .asciz »okamenel«
POJAVITVE:              .space 128   
ANAGRAM:              .space 1

5. »Naloga po izbiri«. Oddate lahko katerikoli program po vaši izbiri, ki rešuje vam zanimiv problem. Lahko oddate tudi rešitev, ki ste jo pripravili v okviru neobveznega izziva pri 11. nalogi. Rešitev tudi primerno razložite in opišite problem, ki ga rešuje.