Массив: Получить сумму членов последовательности, принадлежащих [2;9] - Assembler
Формулировка задачи:
Снова я , помогите с программой ( говоря простым языком , кто не занят ,или кого не затруднит , напишите ее -_-)
Даны целые числа a1, a2, ..., a10.. В этой последовательности все члены последовательности, больше 2, заменить 0. Получить сумму членов последовательности, принадлежащих [2;9].
В целочисленном массиве A(N) определить число, встречающееся максимальное количество раз. Если их несколько, то вывести одно из них.
Спасибо.
Решение задачи: «Массив: Получить сумму членов последовательности, принадлежащих [2;9]»
textual
Листинг программы
LOCALS .model small .stack 100h .data A db 3, 2, 9, 0, 8, 4, 7, 1, 9, 5 Sum dw ? .code main proc mov ax, @data mov ds, ax ;все члены последовательности, больше 2, заменить 0 lea si, A mov cx, 10 @@1: cmp byte ptr [si], 2 jbe @@Next1 mov byte ptr [si], 0 @@Next1: add si, 1 loop @@1 ;Получить сумму членов последовательности, принадлежащих [2;9]. lea si, A mov cx, 10 mov bx, 0 ;сумма @@2: mov al, [si] cmp al, 2 jb @@Next2 cmp al, 9 ja @@Next2 add bl, al adc bh, 0 @@Next2: add si, 1 loop @@2 mov Sum, bx ;определить число, встречающееся максимальное количество раз. ;Если их несколько, то вывести одно из них. lea si, A mov cx, 10-1 mov dl, 0 ;искомое число mov dh, 0 ;количество в массиве @@3: mov al, [si] add si, 1 mov bh, 1 mov di, si add di, 1 push cx @@ForJ: cmp al, [di] jne @@NextJ inc bh @@NextJ: add di, 1 loop @@ForJ pop cx cmp bh, dh jbe @@Next3 mov dh, bh mov dl, al @@Next3: loop @@3 mov al, dl aam add ax, '00' mov dl, ah mov dh, al mov ah, 02 int 21h mov dl, dh int 21h mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Создаются переменные:
A
- массив данных3, 2, 9, 0, 8, 4, 7, 1, 9, 5
Sum
- двойное слово для хранения суммы
- Инициализация сегментов:
- Устанавливается размер стека
- Устанавливается размер сегмента данных
- Начало процедуры:
- Устанавливается указатель на начало массива
A
- Устанавливается количество элементов в массиве (10)
- Устанавливается указатель на начало массива
- Члены последовательности, больше 2, заменяются на 0:
- Перебираются все элементы массива
- Если элемент меньше или равен 2, то он заменяется на 0
- Получение суммы членов последовательности, принадлежащих [2;9]:
- Считается сумма всех элементов массива, которые находятся в диапазоне от 2 до 9
- Определение числа, встречающегося максимальное количество раз:
- Подсчитывается количество вхождений каждого элемента в массив
- Находится число, которое встречается максимальное количество раз
- Вывод результата на экран:
- Полученное число выводится на экран
- Завершение программы:
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д