Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Готовим тефтели

03.04.2012 | Категория: А еще я туда ем! | Автор: ManHunter

Готовим тефтели

Ежики с рисом уже были, теперь будем готовить самые настоящие тефтели, все как полагается. Тефтели обязательно входили в меню любой советской столовой, ну а в наше время они тоже легко могут стать центральным блюдом вашего стола. Особых кулинарных навыков вам не потребуется, впрочем, как и для всех остальных рецептов на этом сайте.

Читать статью целиком »
Просмотров: 8672 | Комментариев: 3

Концерт группы "Sirenia" в клубе "Plan B"

29.03.2012 | Категория: Жизнь в оффлайне | Автор: ManHunter

Концерт группы "Sirenia" в клубе "Plan B"

Морозы все никак не уходят, пора пускать в дело тяжелую артиллерию. Группа "Sirenia" снова в нашем городе! Обожаю этот коллектив, особенно с новой вокалисткой Айлин, ведь теперь в их творчестве сочетается брутальность норвежцев и страсть испанской Барселоны.

Читать статью целиком »
Просмотров: 4774 | Комментариев: 4

Замена подстроки в строке на Ассемблере

28.03.2012 | Категория: Образ мышления: Assembler | Автор: ManHunter
Во всех языках высокого уровня среди функций работы со строками присутствуют функции замены заданной подстроки в строке. В Ассемблере такой функции нет, как нет ее и среди функций стандартных библиотек. Замена подстроки на строку такой же длины обычно сложностей не составляет, так как ее можно выполнить прямо в исходной строке без выделения дополнительной памяти. Замена на строку произвольной длины, в том числе и пустую, будет посложнее. Для этого я написал следующую функцию.
  1. ;-----------------------------------------------------
  2. ; Функция замены подстроки в строке
  3. ;-----------------------------------------------------
  4. ; lpSrc - указатель на исходную строку
  5. ; lpDst - указатель на буфер для полученной строки
  6. ; lpPattern - указатель на заменяемую подстроку
  7. ; lpReplace - указатель на строку для замены
  8. ; dNum - количество замен (0 - заменить все)
  9. ;-----------------------------------------------------
  10. proc    _replace lpSrc:DWORD, lpPattern:DWORD, lpReplace:DWORD,\
  11.                  lpDst:DWORD, dNum:DWORD
  12.  
  13.         pusha
  14.  
  15.         ; Указатель на буфер-приемник
  16.         mov     edx,[lpDst]
  17.  
  18.         ; Счетчик замен
  19.         xor     ebx,ebx
  20.  
  21.         ; Исходная строка не пустая?
  22.         mov     ecx,[lpSrc]
  23.         cmp     byte [ecx],0
  24.         jz      .loc_ret
  25.  
  26.         ; Заменяемая строка не пустая?
  27.         mov     eax,[lpPattern]
  28.         cmp     byte [eax],0
  29.         jz      .loc_copy_all
  30.  
  31. .loc_scan:
  32.         mov     esi,ecx
  33.         mov     edi,[lpPattern]
  34.  
  35.         ; Исходная строка закончилась?
  36.         cmp     byte [esi],0
  37.         je      .loc_end_replace
  38. @@:
  39.         ; Строки совпали с паттерном?
  40.         cmp     byte [edi],0
  41.         je      .loc_move_replace
  42.  
  43.         ; Символ совпадает с
  44.         lodsb
  45.  
  46.         ; Заменять все вхождения?
  47.         cmp     [dNum],0
  48.         je      .loc_skip_counter
  49.  
  50.         ; Уже заменили нужное количество?
  51.         cmp     ebx,[dNum]
  52.         je      .loc_move_one_char
  53. .loc_skip_counter:
  54.         cmp     al,byte [edi]
  55.         jne     .loc_move_one_char
  56.  
  57.         inc     edi
  58.         jmp     @b
  59.  
  60. .loc_move_replace:
  61.         ; Увеличить счетчик замен
  62.         inc     ebx
  63.  
  64.         mov     ecx,esi
  65.  
  66.         ; Записать заменяющую строку
  67.         mov     esi,[lpReplace]
  68.         mov     edi,edx
  69. @@:
  70.         lodsb
  71.         or      al,al
  72.         jz      .loc_scan
  73.         stosb
  74.         inc     edx
  75.         jmp     @b
  76.  
  77. .loc_move_one_char:
  78.         ; Скопировать один символ
  79.         mov     al,byte [ecx]
  80.         mov     byte [edx],al
  81.         inc     edx
  82.         inc     ecx
  83.         jmp     .loc_scan
  84.  
  85. .loc_end_replace:
  86.         ; Записать финальный 0 в строку
  87.         mov     byte [edx],0
  88.  
  89.         jmp     .loc_ret
  90. .loc_copy_all:
  91.         ; Просто скопировать исходную строку
  92.         mov     esi,[lpSrc]
  93.         mov     edi,[lpDst]
  94. @@:
  95.         lodsb
  96.         stosb
  97.         or      al,al
  98.         jnz     @b
  99. .loc_ret:
  100.         popa
  101.         ret
  102. endp
Функция самодостаточная, не использует никаких внешних функций и не требует для своей работы дополнительных переменных в памяти. Параметры: lpSrc - указатель на исходную строку в формате ASCIIZ, lpPattern - указатель на искомую подстроку в формате ASCIIZ, lpReplace - указатель на строку для замены в формате ASCIIZ, может быть пустая строка, lpDst - указатель на буфер-приемник полученной после замены строки, его размер должен быть зарезервирован с учетом замененных строк, dNum - количество замен, которое надо выполнить (0 - заменять все вхождения). Я постарался оптимизировать функцию замены по скорости, но, наверное, можно ее ускорить как-нибудь еще.

Читать статью целиком »
Просмотров: 11954 | Комментариев: 8

Исследование защиты программы iResizer

24.03.2012 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы iResizer

Программа iResizer - удобный инструмент для изменения размеров графических файлов, с уникальной функцией сохранения исходных пропорций выбранных объектов. Также с ее помощью можно удалять с фотографий ненужные объекты. Конечно, это все прекрасно реализуется и в разных фотошопах, но iResizer позволяет выполнить такие операции буквально за несколько кликов мышкой. Как это все делается, вы можете посмотреть на офсайте, а здесь вы можете посмотреть, как сэкономить на этом процессе пару десятков баксов.

Читать статью целиком »
Просмотров: 5078 | Комментариев: 7

Музей анимационного кино

22.03.2012 | Категория: Жизнь в оффлайне | Автор: ManHunter

Музей анимационного кино

Анимационное кино - это великое искусство. Анимация объединила в себе то, что во все времена питало и отражало духовную и интеллектуальную жизнь человечества. В процессе создания кинокартины появляется множество художественных материалов (эскизы, живописные фоны, куклы, макеты и др.), которые после окончания работ подлежат списанию, то есть - уничтожению. Естественно, уничтожить то, что создал собственными руками достаточно сложно, а порой просто невозможно. Поэтому и был создан Музей анимационного кино - пространство, где эти материалы хранятся. Экспозиция и экскурсионные программы музея рассчитаны на посетителей всех возрастных групп, начиная с учеников младших классов. Большой популярностью пользуются семейные экскурсии выходного дня, когда дети вместе с родителями, бабушками и дедушками совершают маленькие открытия. Представители старшего поколения встречаются с любимыми с детства героями мультфильмов, погружают детей в атмосферу "старого доброго" анимационного кино.

Читать статью целиком »
Просмотров: 10030 | Комментариев: 4

01 ... 346 347 348 349 350 351 352 ... 450
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2026
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0321 сек.) / Память: 4.5 Mb
Наверх