Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 49

Подсчитать количество элементов массива по заданому условию

08.09.2015, 21:25. Показов 1374. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие: C <= Arr[i] <= D
Подсчитать кол-во элементов по заданому условию
Вот код:
Assembler
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
.586
.model flat, stdcall
option casemap: none
 
include\masm32\include\user32.inc
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\masm32.inc
include\masm32\include\debug.inc
 
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\masm32.lib
includelib\masm32\lib\debug.lib
 
.data
Arr dd 1,2,3,4,5,6,7,8
C1 dd 2
D1 dd 7
Count dd 0
 
.code
start:
    mov ecx , 8
    mov eax, [Arr + ecx*4]
point:
    cmp eax, C1
    jnb point2
    dec ecx
    cmp ecx , 0
    jnz point
    jz exit
point2:
    cmp eax, D1
    jna point3
    dec ecx
    cmp ecx , 0
    jnz point
    jz exit
point3:
    inc Count
    dec ecx
    cmp ecx , 0
    jnz point
    jz exit
exit:
    mov edx, Count
    PrintDec edx, "Count"
    invoke ExitProcess, NULL
end start

Результат - 8, а должно быть 6... Может кто знет где ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2015, 21:25
Ответы с готовыми решениями:

Подсчитать количество элементов массива х ,удовлетворяющих условию (-1<=x<=1)
массив=x(70) Нужно подсчитать количество элементов массива х ,удовлетворяющих условию (-1&lt;=x&lt;=1)

Подсчитать количество элементов массива х ,удовлетворяющих условию (-1<=x<=1)
Подскажите как быстро изучить этот паскаль?

Подсчитать количество элементов массива, удовлетворяющих условию
Дан массив R (N,М). Подсчитать количество элементов массива, удовлетворяющих условию I R(I, J) I &lt; 8, среди этих элементов найти...

4
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
08.09.2015, 22:45
Лучший ответ Сообщение было отмечено Svyatosl@v как решение

Решение

первое хочу сказать, что ваша программа некомпактна. следующий участок кода повторяется три раза
Цитата Сообщение от Svyatosl@v Посмотреть сообщение
dec ecx
cmp ecx , 0
jnz point
jz exit
второе. в начале программы вы хотите указать адрес, как я понял, на последний элемент массива. а указываете на адрес вне массива.
Цитата Сообщение от Svyatosl@v Посмотреть сообщение
mov eax, [Arr + ecx*4]
чтобы указать на последний элемент нужно помнить, что адресация массива начинается с нуля.
тогда будет, к примеру, так
Assembler
1
mov eax,[arr + (ecx-1)*4]
к тому же в цикле постоянно сравнивается один и тот же элемент массива. нужно перемещаться к началу массива после каждого прохода цикла

посмотрите вот это измененный код
Assembler
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
    mov ecx,8
    
    point:
    mov eax,[arr + (ecx-1)*4]
    
    cmp eax,c1
    jnb point2
    
    jmp change
    
    point2:
    cmp eax,d1
    jna point3
    
    jmp change
    
    point3:
    inc count
    
    change:
    dec ecx
    cmp ecx,0
    jnz point
    
    exit:
    mov edx,count
1
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 49
08.09.2015, 23:01  [ТС]
Спасибо))))
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
09.09.2015, 03:47
proc3nt,
вот это
Assembler
1
2
3
 dec ecx
    cmp ecx,0
    jnz point
эквивалент вот этого
Assembler
1
2
dec ecx
    jnz point
и вот этого
Assembler
1
loop point


и вот это
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
    cmp eax,c1
    jnb point2
    
    jmp change
    
    point2:
    cmp eax,d1
    jna point3
    
    jmp change
    
    point3:
эквивалент этого
Assembler
1
2
3
4
5
    cmp eax,c1
    jb change    
point2:cmp eax,d1
    ja change    
point3:
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
09.09.2015, 10:37
Mikl___, это то верно. я просто старался соответствовать коду, написанному [ТС]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.09.2015, 10:37
Помогаю со студенческими работами здесь

Подсчитать количество элементов массива, удовлетворяющих условию
Дан массив B(M,N)M&lt;=10, N&lt;=10. Подсчитать количество элементов массива, удовлетворяющих условию B(I,J) &gt;10. напечатать все такие...

Подсчитать количество элементов массива, удовлетворяющих условию
Здравствуйте! Мне срочно нужно выполнить работу по информатике (для девушки), а в Паскале не бум-бум. Может кто-нить помочь? Дан...

Подсчитать количество элементов массива удовлетворяющих условию
Подсчитать количество элементов массива, больших а, больших b с четными номерами. Через одмерный масив

Подсчитать количество элементов массива, которые принадлежат условию
Даны действительные массивы A(n) и B(n). Подсчитать количество элементов, которые принадлежат условию: A(I) и B(I). Заранее спасиб)

Подсчитать произведение и количество элементов массива X[30], которые удовлетворяют условию
Народ, помогите сделать к завтрашнему утру. Подсчитать произведение и количество элементов массива X, которые удовлетворяют условию. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru