Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.         lea    (EncodedRLEStart).l,a1         ; загрузить данные для шифрования
  3.         lea    ($FF0000).l,a2
  4.         jmp    RLE_Compress           ; перейти
  5.  
  6. EncodedRLEStart:
  7.         dc.b   0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3
  8. EncodedRLEEnd:  even
  9.  
  10. ;---------------------------------------------------------
  11. ; Алгоритм RLE, для сжатия, если в а1 данные
  12. ;---------------------------------------------------------
  13. ; d0 - сравнивается с другими байтами
  14. ; d1 - количество копии байта
  15.  
  16. RLE_Compress:
  17.         moveq   #0,d1       ; сбросить указатель
  18.         move.b  (a1),d0     ; записать число
  19. Search_copy_of_byte:
  20.         addq.w  #1,a1
  21.         cmpa.l  #EncodedRLEEnd,a1      ; поинтер дошёл до конца?
  22.         beq Finish_encrypt         ; если да, перейти
  23.         cmp.b   (a1),d0     ; это копия байта?
  24.         bne To_encrypt  ; перейти, если нет
  25.         addq.b  #1,d1       ; прибавить 1 к указателю копии
  26.         bra.w   Search_copy_of_byte ; проверить следующие байты
  27.  
  28. To_encrypt:
  29.         move.b  d1,(a2)+     ; записать, сколько раз дублировать байт
  30.         move.b  d0,(a2)+     ; записать, какой дублировать байт
  31.         bra.w   RLE_Compress     ; шифровать следующие байты
  32.  
  33. Finish_encrypt: rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement