;Zadatak: ; Treba napisati program RLEcompress koji kompresira ulazni niz podataka. ; Koristi se RLE (run length encoding) kompresija koja zamjenjuje niz ; jedinica i nula sa nizom brojeva koji pokazuju koliko puta se ponavlja ; nula ili jedinica. ; Ulazni podaci su okteti koji mogu biti samo jedan ili nula, počinju od ; adrese 0x800 i zauzimaju slijedećih 400 okteta. Izlazni podaci su okteti ; koji govore koliko puta treba ponoviti jedinicu ili nulu i spremaju se ; od adrese 0x1200. Pretpostavlja se da ulazni niz ne može imati više od ; 255 uzastopnih nula ili jedinica. ; Ako ulazni niz ne počinje nulom, tada kompresirani niz počinje odmah ; nulom. ;**************** ;* RLE compress * ;**************** `ORG 0 MOV R5, #8<8 ;adresa izvornog niza (0x800) MOV R6, #12<8 ;adresa odredista (0x1200) MOV R7, #%D 19 ;broj podataka (19) MOV R1, #0 ;brojac istih podataka MOV R2, #0 ;trenutni element (0 ili 1) loop LDRb R0, [R5], #1 ;ucitaj podatak (1 byte) CMP R2, R0 ;usporedi s trenutnim elementom Bne change ;promjeni trenutni element ADD R1, R1, #1 ;povecaj brojac istih podataka deccnt SUBs R7, R7, #1 ;smanji broj preostalih podataka u bloku Bne loop STRb R1, [R6], #1 ;pospremi kompresiranu vrijednost HALT change EOR R2, R2, #1 ;promjeni 0 <-> 1 STRb R1, [R6], #1 ;pospremi kompresiranu vrijednost MOV R1, #1 ; R1 = 1 jer vec imamo 1 podatak druge vrste B deccnt ;skoci na dio koji smanjuje brojac `ORG 800 `DW 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1 `ORG 1200 `DS 50 `END