Обработка целочисленного массива (поиск минимума, удаление элемента и т.д.) - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д