Обработка целочисленного массива (поиск минимума, удаление элемента и т.д.) - 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

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы