Определить количество элементов, больших среднего арифметического - Assembler

Формулировка задачи:

Дан массив размерностью 10 элементов типа dw. Определить количество элементов, больших среднего арифметического.

Код к задаче: «Определить количество элементов, больших среднего арифметического - Assembler»

textual
LOCALS
 
.model small
 
.stack 100h
 
.data
 
    A   dw  100, 123, 234, 456, 567, 678, 789, 890, 901, 999
    N   dw  10
    Count   dw  0
    CrLf    db  0Dh, 0Ah, '$'
 
.code
 
main    proc
    mov ax,     @data
    mov ds, ax
 
    ;вычисление среднего арифметического
    lea si, [A]
    mov cx, N
    mov ax, 0   ;(dx:ax) - сумма элементов массива
    mov dx, 0
@@Average:
    add ax, [si]
    adc dx, 0
    add si, 2
    loop    @@Average
    idiv    N
    ;т.к. нужно искать больше среднего, то
    ;придётся учесть случай наличия отстатка
    ;если остатка нет, то нужно искать числа на 1 больше частного,
    ;а если остаток есть - то достаточно искать больше частного
    cmp dx, 0
    jnz @@PresentRemainder
    inc ax
@@PresentRemainder:
 
    ;подсчёт количества элементов массива, больших среднего арифметического
    lea si, [A]
    mov cx, N
    mov bx, 0   ;количество элементов массива, больших среднего
@@Count:
    cmp ax, [si]
    adc bx, 0
    add si, 2
    loop    @@Count
    mov Count,  bx
 
    mov ax, 4C00h
    int 21h
main    endp
 
end main

9   голосов, оценка 4.111 из 5


СОХРАНИТЬ ССЫЛКУ