Другие языки программирования и технологии

Можете помочь дополнить код в ассемблере. Что-то не получается до конца сделать.

Подсчитать количество элементов, меньших среднего
арифметического. Вот я нашел среднее арифметическое, а сравнить не получается никак и вывести элементы:

data segment

mass dw 2,1,0,2,4,0,1,3,6,1,4,1

Sred_ar dw ?

Kolichestvo dw ?

code segment

start:

mov ax,data

mov ds,ax;

lea bx,mass;

mov cx,12;

xor ax,ax;

L1:add ax,[bx];

inc bx;

inc bx;

loop L1

xor dx,dx;

mov cx,12;

idiv cx;

mov sred_ar,ax;







exit:

mov ax, 4c00h

int 21h

end start
Можете доделать прогу? Подсчитайте пожалуйста количество элементов, меньших среднего арифметического.
Вы нашли не среднее арифметическое, а только его целую часть.
Чтобы получить правильный результат, нужно проверить остаток от деления на равенство нулю. Если он ненулевой, то необходимо увеличить целую часть среднего арифметического на единицу, иначе при сравнении программа будет выдавать количество элементов, удовлетворяющих условию, меньше, чем это есть в действительности.
Например среднее арифметическое вашего массива 2,083. Вы сохраняете только целую часть, поэтому получите в результате 6, хотя на самом деле элементов, меньших среднего арифметического, 8.

data segment
  Array dw 2,1,0,2,4,0,1,3,6,1,4,1
  LenArr equ ($ - Array) shr 1
  Average dw ?
  Counter dw ?
data ends

code segment
    assume cs: code, ds: data
start:
    mov ax, data
    mov ds, ax
    lea bx, Array
    mov cx, LenArr
    xor ax, ax
L1:
    add ax, [bx]
    add bx, 2
    loop L1
    xor dx, dx
    mov Counter, dx
    mov cx, LenArr
    div cx
    test dx, dx
    jz Integer
    inc ax
Integer:
    mov Average, ax

    mov cx, LenArr
    lea si, Array
Repeat:
    lodsw
    cmp ax, Average
    jae NotLess
    inc Counter
NotLess:
    loop Repeat

    xor cx, cx
    mov bx, 10
    mov ax, Counter
Prepare:
    xor dx, dx
    div bx
    push dx
    inc cx
    test ax, ax
    jnz Prepare
PutChar:
    pop ax
    or al, 30h
    int 29h
    loop PutChar

    mov ah, 8
    int 21h
    mov ax, 4C00h
    int 21h
code ends
    end start
Алексей Железнов
Алексей Железнов
51 590
Лучший ответ
получили среднее и снова гоните цикл и сравниваете со средним
Lexa_The_Best Ccccc
Lexa_The_Best Ccccc
306