Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
030
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 2
1

В массиве слов найти среднее арифметическое чисел, больших 10

30.10.2012, 19:31. Просмотров 3790. Ответов 1
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста, не понимаю, в чем ошибка! Найти среднее арифметическое чисел,больших 10. Массив слов. Когда ответ получается дробный(в примере ответ должен быть 27,8)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
data    segment         
                    
mas dw 12,20,-12,40,56,5, 6,11     ;массив слов
data    ends                ;конец сегмента
 
code    segment             ;СЕГМЕНТ КОДА
    assume cs:code,ds:data      ;ассоциируем регистры с сегментами
 
start:  mov ax,data         ;загружаем адрес сегмента данных
    mov ds,ax           ;загружаем адрес сегмента в сегментный регистр даннных
 
    mov cx,8            ;загружаем счетчик слов
    lea si,mas          ;загружаем начальный адрес массива слов
    xor ax,ax           ;обнуляем значение сумму чисел больших 10
    xor bl,bl           ;обнуляем счетчик чисел больших 10
 
 
m1: cmp word ptr [si],10        ;сравниваем слово из массива с 10
    jle m2              ;если число не превышает 10, то переходим далее
 
    add ax,[si]         ;иначе - прибавляем число к сумме
    inc bl              ;инкрементируем счетчик чисел
 
m2: add si,2                       ;переходим к следующему слову в массиве
    loop m1             ;выполняем цикл для оставшихся слов массива
    ;-------------
 
    cmp bl,0            ;если счетчик чисел больших 10 нулевой, то
    je quit             ;переходим к выходу из программы
    div bl  ;иначе - находим среднее арифметическое чисел больших 10 (AX / BL)
    ;-------------
 
    ;если числа более 10 найдены, то получаем среднее арифметическое в регистрах:
    ;AL - целая часть
    ;AH - остаток от деления
 
    ;-------------
quit:   mov ax, 4c00h           
    int 21h             
code    ends            
 
end start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 19:31
Ответы с готовыми решениями:

Среднее арифметическое элементов в массиве чисел (двойных слов)
От всей души прошу вас парни! выручайте пожалуйста!! в программировании не очень понимаю. а до...

В массиве определить среднее арифметическое положительных чисел, все отрицательные элементы увеличить на это среднее
Добрый день. Нужно написать программу которая создаёт массив А . Которая определяет среднее...

В матрице A[1..N,1..M] определить среднее арифметическое значение чисел в столбцах, находящихся до среднего столбца (SR1) и среднее арифметическое зна
Написать прогу на паскале со вставкой ассемблера, т.е. создание и вывод матрицы и средних сделать в...

Среднее арифметическое чисел, находящихся в массиве и представленных в формате с фиксированной точкой
Всем привет, ребят. Помогите пожалуйста написать программку. В ассемблере полный нубяра. Вот сама...

Найти в массиве из 5-ти переменных среднее арифметическое отрицательных элементов
Условие - Найти в массиве из 5-ти переменных среднее арифметическое отрицательных элементов...

1
Mikl___
Автор FAQ
13487 / 6418 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
31.10.2012, 05:00 2
030, как-то так
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
; masm dos exe #
.286
.MODEL small
.data                    
mas dw 12,20,-12,40,56,5, 6,11     ;массив слов
mes db 'среднее арифметическое чисел, больших 10 равно '
x   db 'xx,xx$'
.code
start:  mov ax, [@]data       ;загружаем адрес сегмента данных
    mov ds,ax           ;загружаем адрес сегмента в сегментный регистр данных 
    mov cx,8            ;загружаем счетчик слов
    mov si,offset mas          ;загружаем начальный адрес массива слов
    xor di,di           ;обнуляем значение сумму чисел больших 10
    xor bx,bx           ;обнуляем счетчик чисел больших 10 
m1: lodsw
    cmp ax,10        ;сравниваем слово из массива с 10
    jle m2              ;если число не превышает 10, то переходим далее 
    add di,ax         ;иначе - прибавляем число к сумме
    inc bx              ;инкрементируем счетчик чисел 
m2:  loop m1             ;выполняем цикл для оставшихся слов массива    
    or bx,bx            ;если счетчик чисел больших 10 нулевой, то
    je quit             ;переходим к выходу из программы
    xor dx,dx   
    mov ax,di
    div bx  ;иначе - находим среднее арифметическое чисел больших 10 (DX:AX / BX)
    aam
    xchg ah,al
    or ax,'00'
    mov word ptr x,ax;целая часть результата
    imul dx,100; dx/bx=остаток/100       остаток=dx*100/bx
    mov ax,dx
    xor dx,dx
    div bx
    aam
    xchg ah,al
    or ax,'00'
    mov word ptr x+3,ax;остаток от результата с точностью до сотых
    mov ah,9; вывод результата
    mov dx,offset mes
    int 21h
    mov ah,0
    int 16h
quit: mov ah,4Ch           
    int 21h             
end start
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2012, 05:00

Найти среднее арифметическое чисел
Здравствуйте, уважаемые программисты! Помогите, пожалуйста, решить задачку: нужно найти среднее...

Найти среднее арифметическое чисел
Здравствуйте, мне задали задачи по асемблеру и я не могу её решить. Помогите пожалуйста. Вот...

Найти среднее арифметическое отрицательных чисел
.model tiny .code .startup Org 100h Jmp Short Start Vector Dw -2,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru