Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2011, 13:08   #1
Алинка
 
Регистрация: 25.05.2010
Сообщений: 4
По умолчанию Ассемблер.Задачки.

Помогите пожалуйста разобраться с этой задачкой:
Дан массив из десяти знаковых чисел (слов или байт).Надо найти среднее арифметическое чисел. Массив слов.
что-то я походу тут начудила не то....

Текст программы:
Код:
data segment

mass dw 10,24,76,479,-347,281,-24,70,124,97
Sred_ar dw ?
data ends
code segment
assume cs: code, ds: data
start: 	mov ax, data
mov ds, ax 		; Загрузить сегментный адрес данных
  		lea bx, mass 	; Загрузить адрес смещения массива
 		mov cx, 10 		; Установить счетчик повторений цикла
 		mov ax, [bx] 	; Первый элемент массива в Аккумулятор
  	beg: 	add [bx], ax 	;
                mov ax, [bx]	
 	no: 	inc bx 		; Следующий элемент
		inc bx		; массива
		loop beg 		
		mov max, ax
                idiv max,cx
                mov sred_ar,max
 	quit:	mov ax,4C00h 	; Код завершения 0
         int 21h 		; Выход в DOS
1.	code ends
2.	end start

Последний раз редактировалось Stilet; 17.09.2011 в 16:39.
Алинка вне форума Ответить с цитированием
Старый 17.09.2011, 16:46   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
        ...
         mov ax,0 ;сумма элементов
         mov cx, 10 ; Установить счетчик повторений цикла 
 beg: 
         add ax,[bx]     ; было add [bx], ax 
 ;no: - зачем? вы ведь сюда не переходите
         inc bx ; Следующий элемент
         inc bx ; массива
         loop beg 
;после выхода из цикла СХ=0
         mov cx,10
; mov max, ax - зачем заносить в память если оно является промежуточным и объявление max отсутствует
         cwd     ;при делении на слово используется регистровая пара DX:AX
; idiv max,cx - узнаем сколько операндов у данной команды
         idiv cx
         mov sred_ar,ax ; mov sred_ar,max 
         ...
на неконкретные вопросы даю неконкретные ответы ...

Последний раз редактировалось Step_UA; 17.09.2011 в 16:48.
Step_UA вне форума Ответить с цитированием
Старый 17.09.2011, 16:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы так делал:
Код:
 mov cx,9 ;Цикл по элементам
 push cx ; Запомним счетчик цикла
 xor ax,ax ; Очистим аккому
 aga:
  add ax, [mass+cx*2] ;просуммируем массив
 loop aga
 pop cx ; вспомним сколько у нас было элементов
 div cl ; разделим на кол-во
 mov [Sred_ar],ax ; Вуаля!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2011, 16:54   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А я бы так делал:
Код:
 mov cx,9 ;Цикл по элементам
 push cx ; Запомним счетчик цикла
 xor ax,ax ; Очистим аккому
 aga:
  add ax, [mass+cx*2] ;просуммируем массив
 loop aga
 pop cx ; вспомним сколько у нас было элементов
 div cl ; разделим на кол-во
 mov [Sred_ar],ax ; Вуаля!
Не соглашусь ...
1.по вашему коду просуммируется только 9 элементов
2. числа знаковые, этого у вас не учитывается при делении
3. результат будет байт, а не слово

индексация по cx не пройдет ...
на неконкретные вопросы даю неконкретные ответы ...

Последний раз редактировалось Stilet; 17.09.2011 в 17:37.
Step_UA вне форума Ответить с цитированием
Старый 17.09.2011, 17:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
индексация по cx не пройдет ...
Пройдет еще как. Просто код нужно поправить слегка:
Код:
add ax, [mass+ecx*2-2] ;просуммируем массив
и
Код:
 mov ecx,10 ;Цикл по элементам
Цитата:
этого у вас не учитывается при делении
Это должно учитываться у Алины. Я не собирался за нее код писать, я идею подал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер в С++ JeyKip Общие вопросы C/C++ 3 05.11.2010 14:34
Ассемблер в С++ JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.11.2010 19:09
Ассемблер Demiurg-kun Помощь студентам 1 31.10.2010 09:11
Ассемблер Artur95 Помощь студентам 2 11.09.2009 22:30
Задачки на Паскале помогите пожалуйста решить 2 задачки, а то отчислят. плиз VADOS2009-1 Помощь студентам 0 03.06.2009 18:11