Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где бы найти рассчет CRC (разных типов) на ASM? в данном случае нужно получить XOR 32 
:(
    Опции темы
Ruterian
Дата 22.2.2004, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Что тут еще сказать..?
PM MAIL WWW ICQ   Вверх
Serzh
Дата 22.2.2004, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 30.9.2003
Где: SPb

Репутация: нет
Всего: нет



а в чем проблема?
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 22.2.2004, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Что такое XOR 32 ? Я вот знаю crc32:

Цитата

XorTable        db 400h dup(?)
...

call Build_XorTable

; Использование XorTable:

CRC_OLD dd 0 ; Или FFFFFFFFh - start value

; al - очередной байт входной строки
;
  movzx edx,al
  mov  eax,CRC_OLD
  xor  dl,al
  shr  eax,8
  xor  eax,dword ptr XorTable[edx*4]
  mov  CRC_OLD,eax

Build_XorTable proc near
  std
  mov  di,offset XorTable+400h-4h
  mov  dx,0FFh
  mov  ebx,0EDB88320h
@@FillTable:
  mov  cx,8
  movzx eax,dx
@@Loop8:
  shr  eax,1
  sbb  esi,esi
  and  esi,ebx
  xor  eax,esi
  dec  cx
  jnz  @@Loop8
  stosd
  dec  dx
  jns  @@FillTable
  retn
Build_XorTable endp




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ruterian
Дата 24.2.2004, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Вот, придумал. Привожу кусок кода из моей проги. Процедура рассчитывает CRC буфера 512 байт и кладет CRC в его заголовок.

xor_32:
mov bx,4 ; начальное смещение в буфере
lea di,fit_buffer ; адрес буфера
push di ; сохраняем адрес заголовка пригодится
mov eax,dword ptr [di+bx] ; берем первые 2 слова
add bx,4 ; готовим адрес второго dword
mov edx,dword ptr [di+bx] ; вторые 2 слова
mov cx,125 ; число повторов
crc_loop:
mov edx,dword ptr [di+bx] ; загружаем следующее dword
xor eax,edx ; это ОНО wink.gif
add bx,4 ; сдвигаем адрес на двойное слово
loop crc_loop ; повторяем 124 раза
pop di ; восстанавливаем адрес буфера
mov dword ptr [di],eax ; кладем CRC в заголовок
retn

Это сообщение отредактировал(а) Ruterian - 25.2.2004, 00:00
PM MAIL WWW ICQ   Вверх
Serzh
Дата 25.2.2004, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 30.9.2003
Где: SPb

Репутация: нет
Всего: нет



Цитата(Ruterian @ 24.2.2004, 23:59)
Вот, придумал. Привожу кусок кода из моей проги. Процедура рассчитывает CRC буфера 512 байт и кладет CRC в его заголовок.

xor_32:
mov bx,4 ; начальное смещение в буфере
lea di,fit_buffer ; адрес буфера
push di ; сохраняем адрес заголовка пригодится
mov eax,dword ptr [di+bx] ; берем первые 2 слова
add bx,4 ; готовим адрес второго dword
mov edx,dword ptr [di+bx] ; вторые 2 слова
mov cx,125 ; число повторов
crc_loop:
mov edx,dword ptr [di+bx] ; загружаем следующее dword
xor eax,edx ; это ОНО wink.gif
add bx,4 ; сдвигаем адрес на двойное слово
loop crc_loop ; повторяем 124 раза
pop di ; восстанавливаем адрес буфера
mov dword ptr [di],eax ; кладем CRC в заголовок
retn

так получше будет имхо
Код
xor_32:
mov ebx,4  ; начальное смещение в буфере
lea edi,fit_buffer              ; адрес буфера
push edi                        ; сохраняем адрес заголовка пригодится
mov eax,dword ptr [edi+ebx]      ; берем первые 2 слова
add ebx,4                       ; готовим адрес второго dword
mov ecx,127                     ; число повторов
crc_loop:
mov edx,dword ptr [edi+ebx]      ; загружаем следующее dword
xor eax,edx                    ; это ОНО;-)
add ebx,4                       ; сдвигаем адрес на двойное слово
loop crc_loop  ; повторяем 127 раза
pop edi   ; восстанавливаем адрес буфера
mov dword ptr [di],eax ; кладем CRC в заголовок
retn

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.