Поиск:

Ответ в темуСоздание новой темы Создание опроса
> __asm loop, проблемы 
V
    Опции темы
DragonFire
Дата 18.5.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Делаю вставку в с++ такую:
Код

int a=1;b=2;c=0;
__asm{
        mov CX,2
        _for:
        mov eax,a
        add eax,b
        add c,eax
        loop _for 
    }

В с получается -37172005 о_О
Почему loop при CX=0 не выходит а перескакивает на 65тыщ с чем то?)


--------------------
PM MAIL ICQ   Вверх
ФедосеевПавел
Дата 18.5.2009, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 4
Всего: 10



попробуй
Код

  mov ecx, 2

PM   Вверх
DragonFire
Дата 19.5.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Спасибо!)
Глупая ошибка....

Добавлено через 2 минуты и 20 секунд
А, кстати, сразу вопрос - а как быть со вложенным циклом? 
Что-то вроде for() for() {} ?

Добавлено через 8 минут и 27 секунд
А, сам догадался. Если ому надо должно работать примерно так (сейчас проверю): 
Код

mov ecx,N    //Запускаем первый цикл i
_for1:        //Место входа в первый цикл 
mov ebx,ecx    //Запоминаем счетчик первого цикла в ebx
mov ecx,N    //Запускаем второй цикл j
_for2:        //Место входа во второй цикл
    //ТЕЛО
loop _for2 
mov ecx,ebx    //Восстанавливаем счетчик первого цикла из ebx
loop _for1 



--------------------
PM MAIL ICQ   Вверх
Mikl_
Дата 19.5.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



DragonFire, 
вложенные циклы делаются скорее так 
Код
mov ecx,N    //Запускаем первый цикл i
_for1:        //Место входа в первый цикл 
push ecx    //Запоминаем счетчик первого цикла в стеке
mov ecx,N    //Запускаем второй цикл j
_for2:        //Место входа во второй цикл
    //ТЕЛО
loop _for2 
pop ecx    //Восстанавливаем счетчик первого цикла из стека
loop _for1
иначе регистров не напасешся

Это сообщение отредактировал(а) Mikl_ - 19.5.2009, 11:33
PM MAIL   Вверх
DragonFire
Дата 19.5.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Mikl_, Вай спасибо!)


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.