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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2012, 10:34   #1
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
Вопрос fasm : loop

Не вполне понятно, почему этот код работает
Код:
format PE GUI 5.0

include 'win32ax.inc'

MsgBoxCaption  db 'Iczelion Tutorial No.2',0
MsgBoxText     db 'Assembly is Great!',0

start:
        mov esi, 5d;
@@loop:
        invoke MessageBox,NULL,MsgBoxText,MsgBoxCaption,MB_OK
        dec esi
        cmp esi, 0
        ja @@loop
        invoke ExitProcess,NULL
.end start
Этот тоже работает, но похоже вечно

Код:
format PE GUI 5.0

include 'win32ax.inc'

MsgBoxCaption  db 'Iczelion Tutorial No.2',0
MsgBoxText     db 'Assembly is Great!',0

start:
        mov ecx, 5d;
@@loop:
        invoke MessageBox,NULL,MsgBoxText,MsgBoxCaption,MB_OK
        dec ecx
        cmp ecx, 0
        ja @@loop
        invoke ExitProcess,NULL
.end start
В чем тут подвох?
Если ecx - счетчик для циклов не работает, а esi - сорс индекс для масс обработки, данных каким-то боком заработал?
Warn вне форума Ответить с цитированием
Старый 27.04.2012, 10:40   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

наверно M e s s a g e B o x изменяет еcx. Попробуйте сохранять его перед вызовом. Ну и работает этот регистр с командой loop а не просто с переходами
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 27.04.2012, 10:41   #3
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Warn, при вызовах апи сохраняются значения регистров esi,edi,ebx,ebp. Сохранность ecx,edx не гарантируется. В eax, как правило, возвращается результат работы функции. Goodwin98, второй раз за сегодня не успеваю за Вами.
vadimych вне форума Ответить с цитированием
Старый 27.04.2012, 16:39   #4
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

ясно, спасибо.
Warn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы циклов DO LOOP и FOR NEXT Дмитрий 71 Помощь студентам 0 11.02.2012 16:53
Проблема с ошибкой.FOR-Loop variable 'i' may be undefined after loop Loadgame Помощь студентам 1 15.11.2011 23:08
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00
Вычитание и LOOP lordus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.11.2009 17:20
Assignment to FOR-Loop variable zotox Помощь студентам 4 24.03.2009 11:32