```;***************************************
;*  Glavni program za sazimanje bloka  *
;***************************************
`ORG    0
MOV     R13, #5<12      ;0x5000 - stog
MOV     R0, #2<12       ;0x2000 - pocetak bloka
MOV     R1, #5<8        ;0x500 - rezultantni niz
MOV     R2, #%D 40      ;40 poziva potprograma

LOOP    BL      SAZMI           ;pozovi potprogram
ADD     R0, R0, #%D 100 ;pomakni izvorni niz za 100 bajtova
ADD     R1, R1, #%D 28  ;pomakni odredisni niz za 28 bajtova
SUBs    R2, R2, #1      ;smanji brojac
Bne     LOOP

HALT

;****************************************
;* Potprogram za sazimanje niza brojeva *
;****************************************
`ORG    100
SAZMI   STMfd   R13!, {R0, R1, R2, R3, R4}      ;push

LDR     R2, [R0], #4    ;ucitaj prvi podatak (bazni)
STR     R2, [R1], #4    ; i pohrani ga u ciljni niz

MOV     R4, #%D 24      ;brojac preostalih podataka

AGAIN   LDR     R3, [R0], #4    ;ucitaj podatak
SUB     R3, R3, R2      ;nadi razliku izmedu podatka i baze
STRb    R3, [R1], #1    ;spremi razliku

SUBs    R4, R4, #1      ;R4--
Bne     AGAIN

LDMfd   R13!, {R0, R1, R2, R3, R4}      ;pop
MOV     PC, LR          ;ret

`ORG    2000
DW      50, 52, 5A, 52, 48, 3C, 30, 21, 20, 25, 2F, 34, 40, 43, 4A
DW      50, 52, 5D, 63, 70, 8E, 0A0, 0B0, 0B5, 0A0, 65, 0E2, 78
`END
```