Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
ArtGoN
0 / 0 / 0
Регистрация: 17.04.2010
Сообщений: 15
#1

Сума элементов массива

01.07.2010, 20:34. Просмотров 420. Ответов 0
Метки нет (Все метки)

Помогите кто шарит в АСМ переделать нахождение среднего арифметического элементов массива на нахождение сумы элементов которые имеют чётные индексы.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
; среднее арифметическое положительных четных
.model tiny ; COM-файл нежно получить
.386
.code
org 100h
start:
   mov ax, 3
   int 10h
   
; Не написали, как вводить массив - заполню псевдослучайными (на автомат!!)
; прочитаем текущие тики в качестве затравки
; получается типа RANDOMIZE в Паскале   
 
    mov  CX, 50 ; будем использовать цикл - настроим СХ
    push es
    push 040h
    pop  es
    mov  DX, es:[6ch]
    pop  es
 
; заполнение
          lea si, ar    
          mov cx, ar_len
fill_random:
    imul DX, 4e35h
    mov  [si], dl
    inc  SI
          LOOP fill_random
; покажем, воспринимая числа как знаковые
          lea si, ar
          mov cx, ar_len
          cld
@@_show_next:
          lodsb
          cbw ; я написал процедуру для слов, а здесь байты -> Convert Byte to Word
          CALL WriteWordDEC_signed
          ; два пробела для разделения
          mov al, ' '
          int 29h
          int 29h
        LOOP @@_show_next  
        
; вычисление суммы
          lea si, ar
          mov cx, ar_len
          shr cx, 1  ; эффективное деление на 2        
          xor bx, bx ; будет сумма  
@@_next:
          lodsb        
          or al, al
          js negative ; знак устновлен - отрицательное
              cbw
              add summ, ax
              inc bx
negative:          
          lodsb ; прочитываем зря нечетное
         LOOP @@_next 
 
         or  bx, bx
         jnz mid
            lea dx, msg_no_pos
            mov ah, 9
            int 21h
            jmp @@_exit
mid:          
         lea dx, msg_mid
         mov ah, 9
         int 21h
         
         mov  ax, summ
         xor  dx, dx
         idiv bx
         CALL WriteWordDEC_signed
 
@@_exit:         
  lea dx, PressKey
  mov ah,9
  int 21h
 
  xor ax, ax
  int 16h
 
  int 20h
 
writeWordDEC proc near
; вывод на экран слова в AX, воспринимается как беззнаковое
 push ax
 push bx
 push dx
 push cx
   mov bx, 10
   xor cx, cx
@@1:
   xor dx, dx
   div  bx
   push dx
   inc cx
   or ax, ax
   jnz @@1
 @@2:
   pop ax
   add al, '0'
   int 29h
   LOOP @@2    
 pop  cx
 pop  dx
 pop  bx
 pop  ax
 ret
writeWordDEC endp
 
WriteWordDEC_signed proc
; вывод на экран слова в AX как знакового
 or ax, ax
 jns @@_no_sign 
   push ax
   mov al, '-'
   int 29h
   pop ax
   neg ax ; изменение знака на +
@@_no_sign:
 CALL writeWordDEC     
 ret
WriteWordDEC_signed endp   
 
PressKey db   13,10,'Press any key ...$'
msg_mid  db   13,10,'Seredn`e Arefmeti4eskoe = $'
msg_no_pos db 13,10,'Положительных с четным индексом нет$'
 
summ   dw    0 ; размер больше байта для суммы
ar_len equ 10 ; так объявляются константы - здесь длина массива
ar     db    ar_len dup (?)  
end start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 20:34
Ответы с готовыми решениями:

сума превышающая число 65535
xor si,si mov cx,long dec cx mov eax,mass add si,4 w2: mov ebx,mass...

Привести алгоритм и программу формирования массива B из элементов массива А, в которых биты 0,2 и 5 имеют нули
Задано массив А из N элементов. Привести алгоритм и программу формирования...

Деление элементов массива
Здраствуйте, у меня возникла проблема с делением элементов массива.Прочесывал...

Пересылка элементов массива
Добрый вечер. Задача: Дан одномерный массив A(n).Переслать в массив B(n) его...

Суммирование элементов массива
Для заданного сегмента данных .data arrayW1*dw10h,20h,30h,40h,50h...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2010, 20:34

Произведение элементов массива
Найти произведение элементов массива A = {a }, удовлетворяющих условию: с <= a ...

Произведение элементов массива
Найти произведение элементов массива и вывести результат. Вот исходник, но...

Сумма элементов массива
Всем привет! S=сумма (y), i=1,7 y=x^2+модуль(x) Написал под masm32 без...


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

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

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