Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. Color          db 0
  2. Counter        db 0
  3. LastColor      db 0
  4. SizeFile       dd 0
  5. ;LitlCounter    db 0
  6. ;LitlColor      db 0
  7. save_image:
  8.            ;mov esi,addres_of_file_which_need_compress
  9.            ;mov edi,addres_where_need_to_save_compressed_file
  10.            ;mov ecx,size_of_file_which_need_compress
  11.            mov dl,byte [esi]
  12.            and dl,0xff
  13.            mov [LastColor],dl
  14.            mov [Counter],byte 1
  15.            mov [SizeFile],0
  16.            xor edx,edx
  17.            inc esi
  18.   NextColor:;ç¨â ¥¬ ­®¢ë© 梥⠨§ â ¡«¨æë
  19.            mov dl,byte [esi]
  20.            and dl,0xf
  21.            mov [Color],dl
  22.            cmp dl,[LastColor]
  23.            jne Different
  24.            ;㢥«¨ç¨¢ ¥¬ áç¥â稪 ­  1 ¨ ᬮâਬ ¥£® §­ ç¥­¨¥
  25.            inc [Counter]
  26.            cmp [Counter],16
  27.            jl total
  28.            ;áç¥â稪 à ¢¥­ 16,§­ ç¨â ­ã¦­® á®åà ­¨âì ¯®á«¥¤®¢ â¥«ì­®áâì
  29.            dec [Counter]
  30.            jmp Different
  31.            ;’¥¯¥àì ⥪ã騩 梥â áâ « áâ àë¬,¯®í⮬ã á®åà ­¨¬ ¥£® ª ª áâ àë©.
  32.            ;Ž¡­ã«¨¬ (ᤥ« ¥¬ à ¢­ë¬ 1) áç¥â稪 ¯®¢â®à¥­¨© 梥â (counter)
  33.            xor eax,eax
  34.            and [Counter],0
  35.            mov al,[Color]
  36.            mov [LastColor],al
  37.            xor eax,eax
  38.            jmp total
  39.   Different:;¯à®ç¨â ­­ë© 梥⠭¥ ᮢ¯ ¤ ¥â á® áâ àë¬
  40.            ;§­ ç¨â ­ã¦­® á®åà ­¨âì áâ àë© ¨ ãáâ ­®¢¨âì §­ ç¥­¨ï ¤«ï ­®¢®£®
  41.            ;
  42.            ;á®å࠭塞 áâ àë© æ¢¥â
  43.            dec [Counter]
  44.            call SaveinByte
  45.            ;add [SizeFile],1
  46.            inc edi
  47.            ;ãáâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨ï ⥪ã饣® æ¢¥â  ª ª áâ à®£®
  48.            mov dl,[Color]
  49.            mov [LastColor],dl
  50.            mov [Counter],1
  51.      total:
  52.            xor edx,edx
  53.            mov dl,[Color]
  54.            mov [LastColor],dl
  55.            inc esi
  56.            dec ecx
  57.            cmp  ecx,0
  58.            jne NextColor
  59.            ;áç¥â稪 ¬®¦¥â ¡ëâì ­¥¯ãá⮩,¯®í⮬ã çâ®¡ë ­¥ â¥àïâì ¡ ©â®¢
  60.            ;á®åà ­¨¬ §­ ç¥­¨¥ áç¥â稪  ¨ ¯®¢â®à塞®¥ §­ ç¥­¨¥
  61.            call SaveinByte
  62.            ret
  63. SaveinByte:xor eax,eax
  64.            xor ebx,ebx
  65.            mov al,[Counter]
  66.            shl al,4
  67.            mov bl,[LastColor]
  68.            or al,bl
  69.            mov [edi],al
  70.            inc [SizeFile]
  71.            ret
  72. ;-----------------------------------------------------------------------
  73. LitlCounter db 0
  74. LitlColor   db 0
  75.       unpakin:
  76.            xor edx,edx
  77. NextLitlColor:xor edx,edx
  78.            mov dl,byte[esi]
  79.            xor eax,eax
  80.            xor ebx,ebx
  81.            mov al,dl
  82.            mov bl,al
  83.            shr al,4
  84.            and al,0xf
  85.            mov [LitlCounter],al
  86.            and bl,0xf
  87.            mov [LitlColor],bl
  88.            xor eax,eax
  89.            xor ebx,ebx
  90. ;-------------------------------
  91.            mov al,[LitlColor]
  92.        beg:mov [edi],al
  93.            add edi,1
  94.            dec [LitlCounter]
  95.            cmp [LitlCounter],-1
  96.            jne beg
  97.            inc esi
  98.            dec ecx
  99.            jnz NextLitlColor
  100.            ret