Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- lea (EncodedRLEStart).l,a1 ; загрузить данные для шифрования
- lea ($FF0000).l,a2
- jmp RLE_Compress ; перейти
- EncodedRLEStart:
- dc.b 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3
- EncodedRLEEnd: even
- ;---------------------------------------------------------
- ; Алгоритм RLE, для сжатия, если в а1 данные
- ;---------------------------------------------------------
- ; d0 - сравнивается с другими байтами
- ; d1 - количество копии байта
- RLE_Compress:
- moveq #0,d1 ; сбросить указатель
- move.b (a1),d0 ; записать число
- Search_copy_of_byte:
- addq.w #1,a1
- cmpa.l #EncodedRLEEnd,a1 ; поинтер дошёл до конца?
- beq Finish_encrypt ; если да, перейти
- cmp.b (a1),d0 ; это копия байта?
- bne To_encrypt ; перейти, если нет
- addq.b #1,d1 ; прибавить 1 к указателю копии
- bra.w Search_copy_of_byte ; проверить следующие байты
- To_encrypt:
- move.b d1,(a2)+ ; записать, сколько раз дублировать байт
- move.b d0,(a2)+ ; записать, какой дублировать байт
- bra.w RLE_Compress ; шифровать следующие байты
- Finish_encrypt: rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement