0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 1
1

Найти минимальный(чет) и максимальный(нечет) элемент в массиве Ассемблерная вставка

15.12.2022, 15:03. Показов 589. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Нужно написать код на c++ с ассемблерной вставкой для нахождения минимального(чет) и максимального(нечет) элемента в массиве

Ввод/вывод организовать на языке высокого уровня.
Обработку ассемблерной вставкой.



После долгих попыток получилось написать это:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
 
const int n = 5;
 
int main()
{
    int min, max;                          
    int m[10];
 
    for (int i = 0; i < n; i++) {     //ввод массива
        cin >> m[i];
    }
 
    for (int i = 0; i < n; i++) {     //вывод массива
        cout << m[i] << " ";
    }
 
    cout << endl;
 
    __asm {
        mov esi, m                   //в esi поместить массив
        mov ebx, -1000               //для нахождния максимального ebx = -1000 принять за абсолютный минимум
        mov edx, 1000               //для нахождения минимального edx = 1000 абсолютный максимум(Диапазон)
        mov ecx, n                  //ecx - счетчик. помещается кол-во элементов в массиве (const int n = 10)
        m1:                         
        lodsd                       //eax = 1 элемент esi
            test eax,1              //проверка на четность
            jnz fun1                //если нечет переход на метку fun1
            jz fun2                 //если чёт переход на метку fun2
            fun2:
        cmp edx, eax                //сравнение для минимального числа
            jge funmin1             //если меньше переход funmin1
            jl funmin2              //если больше переход funmin2
            funmin1:        
        mov edx, eax                //edx = текущее число в массиве
            mov min, edx            //min = edx
            jmp funend              //переход на функцию которая выполняет цикл
            funmin2:
        jmp funend                  //переход на функцию цикла
            fun1:
        cmp ebx, eax                //если число чет
            jle funmax1             // выполняются те же действия но:
            jg funmax2              // находит максимальное число
            funmax1:
        mov ebx, eax
            mov max, eax
            jmp funend
            funmax2:
        jmp funend
            funend:                               //метка цикла(loop выполняет уменьшение регистра ecx на 1)
        loop m1
    }
    cout << "Максимальное нечетное = " << max << endl;
    cout << "Минимальное четное = " << min << endl;
    system("pause");
}

после выполнения ввода и вывода программа выдаст ошибку на строке
mov ecx, n

с надписью:

Вызвано исключение по адресу 0x0011612E в assembler1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000003.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2022, 15:03
Ответы с готовыми решениями:

Ассемблерная вставка. Найти минимальный и максимальный элементы в массиве и их сумму
как мне переделать на то что бы находило минимальный елемент и максимальный, с массива и узнать...

Ассемблерная вставка: найти минимальный и максимальный элемент массива
Как правило вставить ассемблер в делфи Примерно набросал А как правильно не знаю Условие...

В матрице найти максимальный элемент под побочной диагональю (ассемблерная вставка С++)
Очень прошу помощи. В массиве А нужно найти максимальный элемент под побочной диагональю. В...

Определить минимальный и максимальный элементы массива (ассемблерная вставка в Pascal)
Дан массив из 10 слов. Определить минимальный и максимальный элементы массива. Как написать код на...

Ассемблерная вставка: все отрицательные элементы массива поделить на его максимальный элемент
али задание на ассемблер. найти максимум и все отрицательные числа поделить на максимум. Максимум...

0
15.12.2022, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2022, 15:03
Помогаю со студенческими работами здесь

Найти в массиве максимальный элемент и минимальный элемент, и поменять их местами
Привет) помогите пожалуйста решить задачу. Дан целочисленный массив из m элементов. Найдите в нем...

Дан массив целых чисел. Найти в этом массиве минимальный элемент т и максимальный элемент М.
Помогите плз А) Дан массив целых чисел. Найти в этом массиве минимальный элемент т и...

Найти в этом массиве минимальный элемент N и максимальный элемент M
Ввести с клавиатуры массив целых чисел. Найти в этом массиве минимальный элемент N и максимальный...

Найти максимальный и минимальный элемент в массиве
нужно создать динамический и статический массив (тип элементов -char), способ заполнения массива -...

Найти максимальный и минимальный элемент в массиве
здравствуйте! у меня несложное задание: найти максимальный и минимальный элемент в массиве. всё...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru