Массив: Получить сумму членов последовательности, принадлежащих [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
- Определение числа, встречающегося максимальное количество раз:
- Подсчитывается количество вхождений каждого элемента в массив
- Находится число, которое встречается максимальное количество раз
- Вывод результата на экран:
- Полученное число выводится на экран
- Завершение программы:
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д