![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Всем Привет!
У меня проблема с вычислением CRC16. Есть небольшое объяснение и примеры, но как они получились не понимаю.... CRC is calculated over data bytes of the message (start and end of message characters are excluded). CRC is initialised to 0000. Two examples of messages with checksum: CRC-16: 1A 32 12 34 56 0D 38 43 1A 33 12 34 56 0D 39 BF 1 и 6 байты не считаются... т.е. из 32 12 34 56 сумма получается 38 43 Есть еще программа на ассемблере которая вычисляет эту сумму, но, к сожалению, его я не знаю... Here is our crc-program (Motorola 6809 assembly language) *********************************************** CRC_O EQU * program updates crc-sum * CRC_D (2 bytes) with character in A-reg. CRC_G EQU $A001 *********************************************** DSCT CRC_D RMB 2 crc-sum PSCT PSHS D,X * char to stack PSHS A * crc to D LDD CRC_D LDX #8 REPEAT LSRA msb of crc EORB S char BITB #1 IF <EQ> THEN.S * b0s same before shift EORB S restore of B RORB ELSE.S * b0s not same before shift EORB S restore of B RORB EORA #CRC_G!>8 EORB #CRC_G!.$FF ENDI LSR S char LEAX -1,X UNTIL <EQ> * char has been processed STD CRC_D LEAS 1,S PULS D,X,PC * 8*35+44(+JSR) us 324(+JSR) us Помогите, плиз, ОООЧЕНЬ надо... Заранее благодарен, Антон |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
дык помогти с чем?
и при чем тут C/C++ -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
судя по всему с asm-а на С/С++ перевести -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
дык это даже не асм...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
это асм, только мотороловский.. ;)
AntonN, четвертую тему в "А здесь смотрели?"(внизу) посмотри. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
забавный синтаксис. Добавлено @ 17:25 не успел! /me опередили. Это сообщение отредактировал(а) Mayk - 8.8.2006, 17:25 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
На одном из сайтов (Помоему Алголист), я видел такой алгоритм подсчета CRC32
Добавлено @ 17:30 ОПс не заметил, что парню нужно CRC16. Добавлено @ 17:41 Вот ссылочка http://algolist.manual.ru/compress/index.php. Внизу страници есть ссылочка на книгу в формате PDF "Элементарное руководство по CRC-алгоритмам обнаружения ошибок" Весит 165 килобайт. -------------------- Пролетал мимо. |
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Спасибо... Книгу читал, но итоговая сумма получается неверной... В файле показан мой процесс вычисления... Может, в чем-то не прав? ИМХО у них алгоритм какой-то другой... Для этого ассемблеровский код и выложил.... Заранее благодарен, Антон Присоединённый файл ( Кол-во скачиваний: 7 )
table1.zip 16,15 Kb |
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Неужели никто не сможет мне помочь???
В zip-у вирусов нет, не бойтесь.... Хотел выложить .doc-овский файл, но вылезла ошибка о том, что данный тип файла не может быть прикреплен.... Заранее благодарен, Антон |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
помочь с чем? -- в сети порядочно алгоритмов CRC16. реализуй два и сравни с твоим -- будет понятно кто не прав.
+ попробуй проинвертировать сумму... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
в общем, пару упрощений они сделали. использовать примерно так:
|
||||
|
|||||
| AntonN |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Dumb, спасибо большое! Все работает.... Осталось только разобраться как.... Антон Это сообщение отредактировал(а) AntonN - 11.8.2006, 13:25 |
||||||
|
|||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
не в тему (но всеже о том) генерировал когда-то давно, когда надо было для CRC32 таблицу сам (уж больно ломает меня писать этот массивчик ручками, да и зачем...)
это для CRC32 (asm)
не оптимизированно толком (ибо не тут и надо скорость выжимать ессно).... но вроде работало кстати аналогично можно и для CRC16 сделать... принцип любой цикличной суммы одинаков.. хоть crc128 берите.... а код... писалось давно и неправда) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |