Обработка целочисленного массива (поиск минимума, удаление элемента и т.д.) - Assembler
Формулировка задачи:
Помогите кто может, работа с массивами
1) найти минимальный нечетный элемент;
2) удалить все такие элементы;
3) подсчитать количество повторяющихся элементов массива.
4) найти среднее арифметическое нечетных элементов;
5) удалить элемент, наиболее удаленный от среднего арифметического;
6) найти максимальный неповторяющийся элемент.
Решение задачи: «Обработка целочисленного массива (поиск минимума, удаление элемента и т.д.)»
textual
Листинг программы
org 100h push arr decOut start ret align 16 arr db 16 dup(0) start: ; заполняем массив случайным образом (max.99d) mov cx,16 pop si di push cx di @@: lodsb cmp al,99 ja @b stosb loop @b ; выводим его на экран mov dx,m0 call message pop si cx push cx si @@: cbw lodsb call decOut loop @b ; 1) найти минимальный нечетный элемент; ------------ mov dx,m1 call message pop si cx push cx si cbw dec ah @@: lodsb cmp ah,al jb @1 test al,1 jz @1 xchg ah,al @1: loop @b shr ax,8 call decOut ; 2) удалить все нечётные элементы; ----------------- mov dx,m2 call message pop si cx push cx si @@: lodsb test al,1 jnz @2 call decOut @2: loop @b ; 4) найти средне/арифметическое нечетных элементов; mov dx,m3 call message pop si cx xor ax,ax cwd @@: lodsb test al,1 jz @3 inc bp add dx,ax @3: loop @b xchg ax,dx xor dx,dx div bp call decOut ;------------------------------------ xor ax,ax int 16h ret m0 db 13,10,' Array: $' m1 db 13,10,'Odd Min: $' m2 db 13,10,'Del odd: $' m3 db 13,10,'Average: $' ;ннннннннннннннннннннннннннннннннннннннннннннннннн message: mov ah,9 int 21h ret decOut: aam add ax,3030h xchg ah,al int 29h shr ax,8 int 29h mov al,' ' int 29h ret
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д