Мелкие задачки для крупных мозгов 6

Тема в разделе "WASM.ZEN", создана пользователем The Svin, 4 мар 2005.

  1. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    Задачка обратная задачке 5.

    Есть восемь рядом расположенных массивов полученных по задачке 5 - получить массив из которого они были созданны.
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Код (Text):
    1. a_merge:;(a_in +4, a_out +8, len +12)
    2.     xchg esi,[esp+4]       
    3.     xchg edi,[esp+8]
    4.     push ebx
    5.     push ebp    ;+8
    6.     mov ebp,[8+esp+12]  ;len
    7.     shr ebp,3
    8.     neg ebp
    9.     .next:
    10. repeat 4
    11.     shl ebx,8
    12.     mov bl,[esi]
    13.     sub esi,ebp
    14. end repeat
    15. repeat 4
    16.     shl eax,8
    17.     mov al,[esi]
    18.     sub esi,ebp
    19. end repeat
    20. repeat 8
    21.     mov ecx,1010101h
    22.     mov edx,1010101h
    23.     and ecx,eax
    24.     and edx,ebx
    25.     imul ecx,01020408h
    26.     imul edx,10204080h
    27.     or ecx,edx
    28.     shr ecx,24
    29.     mov [edi],cl
    30.     inc edi
    31.     shr eax,1
    32.     shr ebx,1
    33. end repeat 
    34.     lea esi,[esi+ebp*8+1]
    35.     sub dword [8+esp+12],8
    36.     ja .next
    37.     pop ebp
    38.     pop ebx     ;+0
    39.     mov esi,[esp+4]    
    40.     mov edi,[esp+8]
    41.     ret 12