Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68
1

Некорректно работает программа

01.11.2010, 19:29. Просмотров 656. Ответов 1
Метки нет (Все метки)

Добрый вечер !
мне нужно найти произведение всех нечетных элементов массива , но почему то программа с произведением не работает (в отличии от суммы , разности ..
вот код :

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
25
26
int k,i,s, a[10];
 for(i=0;i<10;i++)
  a[i]=StrToInt(Memo1->Lines->Strings[i]);
 k=sizeof(a)/4;
 
 asm{
 pusha
 mov edx,0
 mov eax,0
 mov ecx,k
 
 @m2:
 mov esi,dword ptr a + edx          // помещаем первый адрес
 and esi,1                       
 
 jp @m1                           //если нечетное то выполняем действие после метки , или переходим на метку
 imul eax,dword ptr a + edx  // c add работает , с imul нет , почему ?
 @m1:
 add edx,4                        // новый адрес + 4 байта
 loop @m2                         // повтор
 
 mov s,eax
 popa
 }
 
 Edit1->Text=IntToStr(s);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2010, 19:29
Ответы с готовыми решениями:

При нажатии кнопки мыши - на экране, в том месте установить символ "l"
Здравствуйте господа! У меня проблема с программой, очень нужна помощь . Программа должна...

Программа некорректно выводит увеличенное на ед первоначальное число и завершается
Пользователь вводит с клавиатуры начальное и конечное значения диапазона десятичных беззнаковых...

Некорректно работает компилятор
Есть программа, которая вычисляет значение (1+c-2a^2)/2b^4. Если ввожу большие числа (20 1 999),...

Почему программа некорректно завершается?
Задачей было написать резидентную программу для DOS, которая проигрывает ноты из массива (1сек на...

1
1765 / 743 / 153
Регистрация: 03.06.2009
Сообщений: 5,008
01.11.2010, 20:55 2
Лучше сделать так:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 pusha
 mov edi,0
 mov eax,1
 mov ecx,k
 
 @m2:
 mov esi,dword ptr a + edi          // помещаем первый адрес
 and esi,1                       
 
 jp @m1                           //если нечетное то выполняем действие после метки , или переходим на метку
 imul eax,dword ptr a + edi  // c add работает , с imul нет , почему ?
 @m1:
 add edi,4                        // новый адрес + 4 байта
 loop @m2                         // повтор
 
 mov s,eax
 popa
При произведении нужно в eax заносить 1, иначе при умножении любого числа на 0 будет 0
mov eax,1
и edx лучше не использовать, поскольку imul его изменяет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2010, 20:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программа работает в консоли xp, но не работает в dosbox в 7ке
Добрый день, проблему описал в заголовке, код: .286 DSEG SEGMENT STR_ALRLOADED...

Некорректно работает программа на С/С++
Программа написанная на С++ должна вычислять факториал числа а в итоге не делает ничего кроме как...

Программа работает некорректно
Помогите исправить ошибку. плиззз... Программа в гостевом каталоге не выдает ошибки.... Это как то...

Некорректно работает программа
Есть программа с использованием множеств. Задание: напечатайте все целые числа, лежащие в диапазоне...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.