Найти количество чисел двумерного массива А=[е][у] удовлетворяющие условие с<=[е][у]<=р (Си+ассемблер) - Assembler
Формулировка задачи:
Доброго всем времени суток! Предо мной появилась стеночка которая мешает дальше топать по дороге, нужно написать программу которая находит количество чисел двумерного массива А=[е][у] которые удовлетворяются условию с<=[е][у]<=р, на си + ассемблер, тоесть массив задать на си, всё остальное на асм. Сидел я сидел и что-то не понимаю, ассемблером занимался последний раз год назад, забыл всё)) Люди добрые, помогите разбить стеночку то_)
Решение задачи: «Найти количество чисел двумерного массива А=[е][у] удовлетворяющие условие с<=[е][у]<=р (Си+ассемблер)»
textual
Листинг программы
#include <iostream>
#include <ctime>
int main()
{
srand(time(NULL));
const size_t MAX_N = 4;
int a[MAX_N][MAX_N];
int c, d;
do {
std::cout << "Enter c and d : \n";
std::cin >> c;
std::cin >> d;
if (c >= d)
std::cout << "Wrong!\n";
} while (c >= d);
int n = MAX_N * MAX_N;
int res = 0;
for (int i = 0; i < MAX_N; i++) {
for (int j = 0; j < MAX_N; j++)
{
a[i][j] = rand() % 10;
std::cout << a[i][j] << " ";
}
std::cout << std::endl;
}
__asm
{
mov ecx, n
lea esi,a
next_1:
lodsd
cmp eax, c
jl next_2
cmp eax, d
jg next_2
inc res
next_2:
loop next_1
}
std::cout << res << std::endl;
system ("pause");
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Инициализируется генератор случайных чисел.
- Определяется размер массива.
- Переменная
resинициализируется нулем. - Заполняется массив
aслучайными числами от 0 до 9. - Демонстрируется заполненный массив
a. - Выполняется ассемблерный блок кода, который ищет числа в массиве
aудовлетворяющие условию c <= a[i][j] <= d. - Результат подсчета выводится на экран.
- Программа ожидает нажатия клавиши
pauseдля завершения работы.