2. Naloge: Logični ukazi, delo z biti

1.    Napišite program, ki v tabeli desetih predznačenih 8-bitnih števil poišče najmanjše število in zamenja prvi element v tabeli in najdeni najmanjši element. Primer:

niz: .byte -10,0,30,11,-20,32,-22,76,54,12

Po izvajanju morata biti število –22 na prvem mestu (ostala števila so lahko pomešana). Namig: prvi element niza lahko naslavljate posredno preko PC, če v zanki najdete element, ki je manjši od prvega, ju zamenjajte.

2.       Napišite program (razširitev naloge s prejšnjih vaj), ki v tabeli 8-bitnih števil

 

tabela: .byte 1,100,255,24,88,31,56,192,155,224,48,0,128,99,147,177

 

prešteje:

a) vsa števila, ki imajo bit4 enak 1,

b) vsa števila, ki imajo bit0 enak 1, bita 6 in 7 pa enaka 0,

c) vsa števila, ki so deljiva z 8 (biti 0-2 morajo biti 0),

d) vsa števila, ki pri deljenju s 16 dajo ostanek 8 (ostanek je v bitih 0-3).                            

 

Nalogo rešite s pomočjo zanke, ki se ponovi 16-krat, nato pa rezultat shranite v 8-bitno spremenljivko REZ.

 

3.       Napišite program, ki v 8-bitni spremenljivki S1 naredi naslednje:

a) pobriše (postavi na 0) bita 7 in 6

b) bite 2, 4 in 5 postavi na 1

c) bita 0 in 3 'obrne', torej bit, ki je prej imel vrednost 1, mora biti sedaj 0 in obratno.

d) preveri ali je bit 5 enak 0 in v tem primeru skoči na nek ukaz

e) preveri ali je bit 5 enak 1 in bit 2 enak 0 in v tem primeru skoči na nek ukaz

 

Navodilo: Bite postavljajte in brišite z ukazoma ORR in AND ali BIC. Za preverjanje vrednosti enega bita uporabite ukaz TST, za preverjanje dveh ali več bitov pa ukaza AND in CMP. Ko program napišete, ga izvajajte po korakih in preverite njegovo delovanje z različnimi števili.

 

4.       Napišite program, ki v znakovnem nizu poljubne dolžine, ki se zaključi z 0, vse male črke nadomesti z velikimi. Upoštevajte, da v nizu niso samo črke! Obvezno uporabite zanko in indeksno naslavljanje. Testni niz v vašem programu naj bo

 

niz:         .ascii      "OR: petek 12-14"              @ testni niz

                               .byte     0                                                                            @ zaključna ničla

 

Namig: Za vsak znak niza ugotovite ali je mala črka in v tem primeru s pomočjo ustreznega logičnega ukaza pobrišite bit. ASCII kod ni potrebno poznati, pomagajte si npr. tako: cmp r1, #'a'. Rezultat preverite s pomnilniškim oknom simulatorja.