На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 63,
участников - 2 [ ASU1956, Silent]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Программное обеспечение —› Помогите с Ассемблером 
Блоки питания для радиотехники: Ajetrays, Alan, Manson, Optim, RM, Vega, Yaesu, Энергомаш


Alan K35
(1 Ампер)
руб.

RM LPS 105
(5 Ампер)
руб.

Manson SPA-8100
(10/12 Ампер)
руб.

Optim PS-20
(20/22 Ампер)
руб.

Vega PSS-3035
(30/35 Ампер)
руб.
Автор Сообщение
Valx
Участник
Offline1.2
с дек 2008
Вологда
Сообщений: 23

Дата: 29 Мар 2010 23:21:19 #  

Всем привет! вопрос возможно не в тему, но как радиолюбитель решил задать его здесь:
суть проблемы - реализация алгоритма дешифровки по DES на delphi2009, для ускорения процесса использовал паскалевский модуль на ассемблере, вот только делфи ругается вот такими словами:"operand size mismatch", места ошибок я указал в коде. Помогите!!!:)

procedure KeyInit(Operation:byte; Key:string); assembler;

var A:TBlock;
const
DefaultKey:TBlock=($01,$23,$45,$67,$89,$ab,$cd,$ef);
{------------------------}
pc1:array[0..55]of byte=
(56,48,40,32,24,16,8,0,57,49,41,33,25,17,
9,1,58,50,42,34,26,18,10,2,59,51,43,35,
62,54,46,38,30,22,14,6,61,53,45,37,29,21,
13,5,60,52,44,36,28,20,12,4,27,19,11,3);
{------------------------}
pc2:array[0..47]of byte=
(13,16,10,23,0,4,2,27,14,5,20,9,
22,18,11,3,25,7,15,6,26,19,12,1,
40,51,30,36,46,54,29,39,50,44,32,47,
43,48,38,55,33,52,45,41,49,35,28,31);
asm
cli
cld
mov al,Operation
mov [CurOper],al
push ds
pop es
lea di,CurKey
push ds
lds si, Key///////////////////////// !!!!!!!!!!!! здесь ошибка типа operand size mismatch


procedure Handle(Area:pointer; NumberOfBlocks:word); assembler;

.........
les di,Area ///////////////////////// !!!!!!!!!!!! здесь ошибка типа operand size mismatch
White Noise
Участник
Offline1.6
с фев 2004
Одесса
Сообщений: 193

Дата: 30 Мар 2010 00:13:21 #  

Подойдём к проблеме с другой стороны. Зачем вам этот древний модуль на 16-битном ассемблере? Возьмите что-нибудь более подходящее к delphi2009.
Реклама
Google
Valx
Участник
Offline1.2
с дек 2008
Вологда
Сообщений: 23

Дата: 30 Мар 2010 00:23:47 #  

более подходящее конечно есть, я использовал "dcpcrypt2-2009" там есть шифрование по DES, но вот скорость хотелось бы повысить
White Noise
Участник
Offline1.6
с фев 2004
Одесса
Сообщений: 193

Дата: 30 Мар 2010 00:48:03 #  

Я не думаю что 16-битный ассемблер даст серьезный прирост производительности. Тут надо копать в направлении использования SSE команд. Есть готовые библиотеки для этого, например Intel® Integrated Performance Primitives, но можно ли это прикрутить к Delphi я не знаю.
mmos
Участник
Offline2.1
с ноя 2007
Сообщений: 380

Дата: 30 Мар 2010 09:39:33 #  

Давно не брал я в руки шашки и, может, что не так помню, но ассемблерной инструкции LDS в качестве второго параметра нужно слово (WORD), а в приведенном коде этот параметр описан, как STRING.
demetrius2003
Участник
Offline1.7
с июн 2006
Новокузнецк
Сообщений: 116

Дата: 30 Мар 2010 14:25:49 #  

Дельфи 2009 и вставки 16 битного ассемблера - уже ёрш. В si адрес должен попасть, посему там префиксом нужно воткнуть что-нить типа offset, dword ptr, ну Вы меня понимаете. И притом учесть, что даже если String в Дельфях - указатель (честно скажу - не знаю), то он там явно 32-битный, а у Вас всего-лишь si! Я б ещё поигрался с переводом si->esi и тому подобным. И это только первое, что бросилось в глаза. Вообще! Воткните туда взамен ошибочных команд нопов поболее, затем в дебагере ежели что код можно будет поправить и посмотреть, что-же реально туда заносится в si этот. Как то так. По крайней мере я бы с этого начал.
077
Участник
Offline3.3
с апр 2008
Шамбала
Сообщений: 2967

Дата: 30 Мар 2010 15:00:02 #  

Valx
для ускорения процесса
Очень нужно что-то, закрытое DES-ом, циклически быстро перебрать? (-:
Если Вы думаете, что вставка на asm-е сильно ускорит процесс, то зря.
Я писал всё это на Делфи без ассемблера.
Могу отдать работающий модуль. Пишите в ЛС.
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.040; miniBB ®