Генерирование байтов

Тема в разделе "WASM.ARTICLES", создана пользователем Entropy, 16 окт 2020.

  1. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    647
    Адрес:
    Russia
    Поломайте-ка голову )

    Берем произвольное четырехбайтовое (32 бит) число. Представляем его как сумму других чисел, сумма факториалов которых дает начальное число, которое мы таким образом пытаемся представить. И, судя по http://math-prosto.ru/?page=pages/calculators/factorial_online.php , каждое из этих составляющих будет не больше 12 (т.е. занимать не более 4 бит, 13! = 6 227 020 800 и это уже больше 232), т.о. таких чисел максимум мы можем найти 8 (8×4=32 бит), ежели мы не смогли представить начальное число как меньше 8 таких маленьких чисел, "сжатие" не удалось.

    Т.е., разбираем на составные, к примеру, число 100500999 (32 бит) = 7!+8!+2!, например. Эти 3 числа каждое макс по 4 бита, соот-но, 4×3=12 бит они заняли, условно, места.

    В ЛолПаке я представлял начальное число как сумму других чисел, которые возводил в (фиксированную) степень. Не получилось ужимать.

    12! = 479 001 600, для "описания" 232 таких чисел уже нужно ~9.
     
  2. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    222
    Я понимаю что эту "статью" надо было дополнять кодом ещё на момент написания,но у меня возникли некоторые обстоятельства

    Код на FASM

    Код (ASM):
    1. format PE console
    2. entry runpoint
    3.  
    4. include 'win32axp.inc'
    5.  
    6.  
    7. section '.text' code readable executable
    8. runpoint:
    9.  
    10. xor eax,eax
    11. xor edx,edx
    12. xor ebx,ebx
    13.  
    14. prоcess_bytes:
    15. mov al,[group_byte+edx]
    16.  
    17. and al,11b
    18.  
    19. or bl,al
    20.  
    21. shl bl,2
    22.  
    23. inc edx
    24.  
    25. cmp edx,4
    26.  
    27. jz endprogram
    28.  
    29. jmp prоcess_bytes
    30.  
    31. endprogram:
    32.  
    33. invoke ExitProcess,0
    34.  
    35.  
    36.  
    37. section '.data' data readable writeable
    38.  
    39. group_byte db 0xC8,0xD2,0xF1,0xA9
    40.  
    41.  
    42.  
    43.  
    44.  
    45. section '.idata' import data readable writeable
    46.  
    47.  
    48. library kernel32,'kernel32.dll'
    49.  
    50.  
    51. import kernel32,\
    52.        ExitProcess,'ExitProcess'
    53.  
     
  3. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    222
    Генерирование случайного байта
    Код на MASM32
    Код (ASM):
    1.  
    2. .686p
    3. option casemap:none
    4. .model flat,stdcall
    5.  
    6.  
    7.  
    8.  
    9.  
    10. public start
    11.  
    12. include include\windows.inc
    13. include include\kernel32.inc
    14. include include\msvcrt.inc
    15.  
    16. includelib lib\kernel32.lib
    17. includelib lib\msvcrt.lib
    18.  
    19. .data ?
    20. numbers db 100 dup(0)
    21.  
    22. addr_number dword ?
    23.  
    24. count byte ?
    25.  
    26. result byte ?
    27.  
    28. .code
    29. start:
    30.  
    31. mov eax,offset numbers
    32. mov edx,offset addr_number
    33.  
    34.  
    35. mov dword ptr [edx],eax
    36.  
    37. generate:
    38. invoke crt_rand
    39. xor ebx,ebx
    40.  
    41. and al,3
    42.  
    43. cmp al,0     ;zero not use
    44. jz generate
    45. mov bl,byte ptr [result]
    46.  
    47. or bl,al
    48.  
    49. shl bl,2
    50.  
    51. mov result,bl
    52. bt bx,7
    53. jc put_byte
    54. jmp generate
    55.  
    56.  
    57.  
    58. put_byte:
    59.  
    60. mov result,0
    61.  
    62. mov edx,dword ptr [addr_number]
    63. mov byte ptr [edx],bl
    64.  
    65. inc edx
    66. inc byte ptr [count]
    67. mov addr_number,edx
    68.  
    69. cmp byte ptr [count],100
    70. jz stop_the_program
    71.  
    72. jmp generate
    73.  
    74.  
    75.  
    76.  
    77. stop_the_program:
    78. push 5000
    79. call Sleep
    80.  
    81. push 0
    82. call ExitProcess
    83.  
    84. end
    85.  
    P.S Мне MASM нравится больше чем FASM
     
    Application нравится это.
  4. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    425
    rdrand/rdseed ?
     
  5. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    222
    у меня эти инструкции не поддерживаются