Форум программистов, компьютерный форум CyberForum.ru

Массив в функцию (ассемблер вставка) ошибка чтения - C++

Восстановить пароль Регистрация
 
AlexeyWorking
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 7
30.09.2012, 18:06     Массив в функцию (ассемблер вставка) ошибка чтения #1
Вообщем такая проблема,передаю указатель на массив в функцию
в функции надо заменить последние 3 элемента массива на первые 3,массив из unsigned char
реализация должна быть асм вставкой

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main(int argc, char* argv[])
{
    unsigned char arr[24]={
        1,2,3,4,5,6,
        7,8,9,10,11,12,
        13,14,15,16,17,18,
        19,20,21,22,23,24
        };// как пример,там другие значения,это не суть
 
        AsmFlipVertical(arr);
};
void AsmFlipVertical(unsigned char  *arr)
{
_asm
    {
        les esi,arr ; esi=адресс начального элемента
        mov eax,esi
        add eax,21  
        mov edi,eax ; edi=адресс начального элемента+21, получаем 21 элем массива
        cld 
        mov ecx,3
        rep movsb ; перемещаем 0 элемент в 21,перемещаем 1 элемент в 22 и тд
    }
}
movsb от esi до edi
Выкидывает ошибку чтения памяти при выполнении rep movsb
что не так? помогите пожалуйста,уже день сижу,если написать асм вставку в main то ВРОДЕ работает без ошибок,но надо в функции которой передается указатель
Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 18:06     Массив в функцию (ассемблер вставка) ошибка чтения
Посмотрите здесь:

C++ ошибка чтения из файла
C++ Ошибка чтения параметра из реестра
C++ Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
Ошибка чтения из потока C++
Как передать файл в функцию для записи/чтения (разные функции) C++
Написать функцию чтения н строк текста из файла C++
Ошибка чтения из файла C++
Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,293
Завершенные тесты: 1
01.10.2012, 08:42     Массив в функцию (ассемблер вставка) ошибка чтения #2
вместо les написать mov esi,arr
либо так:
Assembler
1
2
3
4
mov esi,arr
lea edi,[esi+21]
mov ecx,3
rep movsb
Yandex
Объявления
01.10.2012, 08:42     Массив в функцию (ассемблер вставка) ошибка чтения
Ответ Создать тему
Опции темы

Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru