| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для Windows/Dos > функция,собирающая битовый массив в число |
| Автор: PrettyGirl 2.5.2007, 14:48 | ||
в реализации DES'а понадобилась функция, собирающая битовый массив в число. Откопала вот такую:
но почему-то ошибка с памятью вот в этой строке: next: cmp [esi],0 не очень знакома с асмом. Вообще задание написать Des на Builder. может кто-ниб объяснит этот кусок кода? и как устранить ошибку? Заранее спасибо! |
| Автор: Kuvaldis 2.5.2007, 15:14 | ||
компилятору не очень понятен размер сравниваемых участков памяти. Т.е. нужен префикс размерности
|
| Автор: PrettyGirl 2.5.2007, 15:27 |
| почему-то не помогает.... по-прежнему та же ошибка: Project Project1.exe raised exeption class EAccessViolation with message 'access violation at adress A04011A1. Read of adress 00133000'. Process stop. Use step or run to continue. |
| Автор: sgi1981 2.5.2007, 15:36 | ||||
next: cmp byte ptr [esi],0 указание компилятору размера операнда в памяти
mov cx,8 старшая половина регистра cx - регистр ch может быть не равен 0, и это станет причиной выхода за предел допустимого максимального индекса массива. |
| Автор: PrettyGirl 2.5.2007, 15:39 |
| и как это исправить? подскажите пожалуйста? в асме не очень разбираюсь... Добавлено через 7 минут и 52 секунды заменила строку: mov cl,8 на строку mov cx,8 все та же ошибка.... |
| Автор: dumb 2.5.2007, 16:41 | ||
| 1. если строка обычная("01101.."), то сравнивать надо было с '0' 2. такая "оптимизация" даст только проигрыш(причем ощутимый) в скорости обработки, по сравнению с обычным кодом на C++ и нормальным(да и даже средним) оптимизирующим компилятором. 3. в сети куча исходников des'а на любых языках, написанных со знанием дела... ps. ну а если цель сугубо учебная, то вот исправленный вариант этого кода:
|
| Автор: PrettyGirl 2.5.2007, 17:04 |
| спасибо,теперь заработало я что-то не смогла найти не одной реализации DES на Builder :( Если есть на примете какая-ниб реализация(кроме Шнайера),то киньте пожалуйста ссылку? Необходимо,как воздух!!!! Добавлено через 2 минуты и 42 секунды не могли бы вы подсказать,как реализовать эту функцию на С++? |
| Автор: PrettyGirl 2.5.2007, 18:02 | ||
а вот ещё одна функция...в ней тоже проблемы возникли...
подскажите пожалуйста,как её исправить? |
| Автор: ksnk 2.5.2007, 18:50 | ||
|
| Автор: PrettyGirl 2.5.2007, 19:12 |
| stosb ошибка в этой строке Добавлено через 30 секунд всмысле,с памятью |
| Автор: ksnk 2.5.2007, 19:15 |
| Проверь, там вместо esi должны edi использоваться... |
| Автор: dumb 2.5.2007, 19:18 | ||
| убери ненужные push/pop ax,cx (push/pop esi, вообще говоря, тоже не нужны...) и mov ecx,8 ps.
|
| Автор: fish9370 9.5.2007, 10:51 |
| простите, а поправку на ASCII, в последнем примере разве не надо делать? |
| Автор: dumb 9.5.2007, 15:49 |
не простим. прекрасная девушка так и не описала конкретный вид данных. а судя по setc(заметьте, не я это предложил(с) |