Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2014, 15:28   #1
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию Использование встроенного ассемблера

Здравствуйте! Есть задача создать через Windows Forms программу симметричного шифрования с использованием ассемблера. Вот так выглядит форма программы:

Безымянный.jpg

Вот код кнопки "Зашифровать сообщение":

Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             string key = textBox1.Text;
             string message = richTextBox1.Text;
             int count = richTextBox1.TextLength;
             string res = Coding(key[0],message,count);
             richTextBox3.Text = res;
         }
Функция Coding предназначена для кодирования строки (поочередно каждый символ) по модулю 2. Вот код функции Coding:

Код:
string Coding(char key, string message, int count)
        {
            string res;
            char temp;
            __asm {
                xor eax, eax
                xor ebx, ebx
                mov ax, key
                lea esi, message
                lea edi, res
                mov ecx, count
M1:
                xor ax, [esi]     ;сложение по модулю 2
                mov [edi], ax ;запись зашифрованного символа в результирующую строку
                add esi, 2
                add edi, 2
                xor eax, eax
                mov ax, key
                loop M1
            }
            return res;
        }
К сожалению, при запуске выдает много ошибок.
Вот некоторые из них:
error C3862: 'курсовая::Form1::Coding': cannot compile an unmanaged function with /clr : pure or /clr:safe
error C2443: operand size conflict (это относится к строке mov ax, key и mov eax, temp)
error C2370: 'res' : redefinition; different storage class
и т.д.

Подскажите пожалуйста, в чем проблема.

Последний раз редактировалось Jeckor; 23.11.2014 в 09:10.
Jeckor вне форума Ответить с цитированием
Старый 22.11.2014, 17:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

В том, в чем вам и написали. Асм функция это нативный неуправляемый код и компилировать его как дот нет незя. Выносите и вызывайте как неуправляемый.
p51x вне форума Ответить с цитированием
Старый 23.11.2014, 09:08   #3
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
В том, в чем вам и написали. Асм функция это нативный неуправляемый код и компилировать его как дот нет незя. Выносите и вызывайте как неуправляемый.
В смысле? Добавить асм функцию в .dll файл и подключить к проекту на Visual Studio?
Jeckor вне форума Ответить с цитированием
Старый 23.11.2014, 09:16   #4
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Я понял. В проекте CLR работать с неуправляемым кодом нельзя. Спасибо.
Jeckor вне форума Ответить с цитированием
Старый 23.11.2014, 09:22   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В смысле?
В смысле тебе нужно рассмотреть такое понятие как Unmanaged Code. Т.е. код не подчиняющийся машине CLR. Чистый ассемблер туда входит.
Попробуй поищи статьи на эту тему, как маркировать и вызывать такие коды.
Типа такого: http://msdn.microsoft.com/ru-ru/magazine/cc164193.aspx
Цитата:
В проекте CLR работать с неуправляемым кодом нельзя.
Можно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2014, 09:28   #6
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Спасибо. Буду смотреть)
Jeckor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование команд пересылки, арифметических команд и команд переходов языка ассемблера. Zazug Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 24.05.2013 12:52
Использование команд пересылки, арифметических команд и команд переходов языка ассемблера. Zazug Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 17.05.2013 16:30
Вывод графики в Pascal с использованием встроенного ассемблера иванлеон Помощь студентам 1 17.04.2012 12:44
ИСПОЛЬЗОВАНИЕ АССЕМБЛЕРА В ДЕЛФИ! IIIeneJI Помощь студентам 2 09.02.2010 17:12