3. Naloge: Podprogrami in pomiki

Rok za oddajo: ponedeljek, 14. november 2022, 23.57

1. Napišite podprogram paser za 8-bitno paralelno serijsko pretvorbo. Podprogram naj preko registrov sprejme dva parametra:
                  r0 – število, ki ga pretvarjamo v serijski zapis,
                  r1 – kazalec na 8 bajtov, v katere se zapišejo posamezni biti.

Po izvajanju morajo biti v osmih zaporednih naslovih, od r1 dalje vrednosti, ki ustrezajo posameznim bitom števila, najprej najbolj pomembni bit.
Za preizkus uporabite vrednost 0b01011011.

                  mov r0, #0b01011011
                  adr r1, tab8
                  bl paser

V pomnilniškem bloku tab8 (tabela osmih bajtov) morajo biti po izvajanju naslednje vrednosti: 0, 1, 0, 1, 1, 0, 1, 1

Namig: uporabite zanko (8 obhodov), v kateri v vsakem obhodu iz števila v r0 dobite en bit (preverjanje stanja enega bita) in ga zapišete na naslov, ki je določen z r1.

2. Napišite podprogram ldbigend, ki v r0 prebere 32-bitno število, ki je v pomnilniku zapisano po pravilu debelega konca.
Naslov naj podprogram sprejme preko r1.
           s1:  .word 0x78563412
                  adr r1, s1
                  bl ldbigend

V r0 mora podprogram vrniti vrednost 0x12345678.

Namig: nalogo rešite brez uporabe zanke v štirih korakih – v vsakem koraku iz pomnilnika preberite en bajt, in ustrezno pomaknjenega prištejte k nekemu registru.


3. Napišite podprogram stbigend, ki 32-bitno število v pomnilnik zapiše po pravilu debelega konca. Število naj podprogram sprejme preko r0, naslov pa preko r1.

                   ldr r0, =0x12345678
                   adr r1, s1
                   bl stbigend

V pomnilniku, kjer je shranjena s1 (32-bitna spremenljivka) morajo biti po izvajanju naslednje vrednosti(šestnajstiško): 0x12, 0x34, 0x56, 0x78

Namig: nalogo rešite brez uporabe zanke v štirih korakih – v vsakem koraku v pomnilnik zapišite en bajt. Skupino osmih bitov, ki jo želite zapisati v pomnilnik, pomaknite v spodnjih 8 bitov nekega registra in uporabite ukaz strb.

4. Napišite podprogram avg8, ki izračuna povprečno vrednost osmih nepredznačenih števil. Števila so podana v tabeli:
            tab8: .byte 15,120,112, 34, 55, 23, 3, 6

Podprogram naj v registru r0 dobi kazalec na tabelo. Po izvajanju naj bo v r0 povprečna vrednost števil (46), v r1 pa ostanek pri deljenju z 8.

Namig: v zanki seštejte vsa števila, ne pozabite, deljenje z 8 je pomik za 3 bite v desno. Ostanek je v treh bitih, ki pri pomikanju padejo ven.