Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.04.2018
Сообщений: 2
1
emu8086

Два одномерных массива поэлементно сложить между собой - третий - сложить каждый элементы - вывести на экран

18.04.2018, 19:34. Показов 1532. Ответов 1

2 одномерных массива - сложить между собой - третий - сложить каждый элементы - вывести на экран.
Помогите написать программу на эмуляторе (emu8086).
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2018, 19:34
Ответы с готовыми решениями:

Поэлементно сложить два одномерных массива
нужно поэлементно сложить два одномерных массива Private Sub CB_Summ_Click() Dim A() As Integer...

Как сложить поэлементно два массива и заполнить суммами третий.
Нашел очень хорошее пособие по VB 6.0 После теории, как правило, стал заниматься практикой. Начал...

Сравнить между собой два одномерных массива поэлементно
сравнить между собой два одномерных массива поэлементно (т.е a-b, a-b) и передать в третий min...

Поэлементно сложить два массива
Всем привет, сижу делаю задание: суть такова: надо поэлементно сложить 2 массива, но при этом...

1
Модератор
Эксперт по электронике
7589 / 3767 / 1470
Регистрация: 01.02.2015
Сообщений: 11,716
Записей в блоге: 2
18.04.2018, 20:27 2
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
_STACK  segment para stack
        db      1024 dup(?)
_STACK  ends
 
_DATA   segment
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
        msg1st          db      0Dh, 0Ah, '1st array:', 0Dh, 0Ah, '$'
        msg2nd          db      0Dh, 0Ah, '2nd array:', 0Dh, 0Ah, '$'
        msg3rd          db      0Dh, 0Ah, '3rd array (1st + 2nd):', 0Dh, 0Ah, '$'
        msgSum          db      0Dh, 0Ah, 'Summa (3rd): ', '$'
        N               dw      8
        _1st            dw      -40, 29, 84, -66, 10, -62, 95, 82, -67, -90
        _2nd            dw      20, 100, 75, 5, -46, 95, 52, -104, -30, -109
        _3rd            dw      10 dup(?)
        Sum             dw      ?
 
_DATA   ends
 
_TEXT   segment
        assume  cs:_TEXT, ds:_DATA, ss:_STACK
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     _DATA
        mov     ds,     ax
        ;вывод исходных данных
        ; - 1-й массив
        mov     ah,     09h
        lea     dx,     [msg1st]
        int     21h
        lea     dx,     [_1st]
        mov     cx,     [N]
        call    ShowArray
        ; - 2-й массив
        mov     ah,     09h
        lea     dx,     [msg2nd]
        int     21h
        lea     dx,     [_2nd]
        mov     cx,     [N]
        call    ShowArray
        ;поэлементное суммирование
        lea     si,     [_1st]
        lea     di,     [_2nd]
        lea     bx,     [_3rd]
        mov     cx,     [N]
        @@For:
                mov     ax,     [si]
                add     ax,     [di]
                mov     [bx],   ax
                add     si,     2
                add     di,     2
                add     bx,     2
        loop    @@For
        ; - 3-й массив
        mov     ah,     09h
        lea     dx,     [msg3rd]
        int     21h
        lea     dx,     [_3rd]
        mov     cx,     [N]
        call    ShowArray
        ;сложить все элементы третьего массива
        lea     si,     [_3rd]
        mov     cx,     [N]
        mov     dx,     0
        @@For3:
                lodsw
                add     dx,     ax
        loop    @@For3
        mov     [Sum],  dx
        ;вывод суммы
        mov     ah,     09h
        lea     dx,     [msgSum]
        int     21h
        mov     ax,     [Sum]
        call    Show_AX
 
        ;завершение программы
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
        mov     ah,     0
        int     16h
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
;Вывод массива слов (word)
;cx - количество выводимых элементов
;ds:dx - адрес массива слов
ShowArray       proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        jcxz    @@Exit          ;если массив пустой - завершить
 
        mov     si,     1       ;индекс элемента массива
        mov     di,     dx      ;адрес текущего элемента массива
        @@ForI:
                mov     ax,     [di]
                call    Show_AX
                mov     ah,     02h
                mov     dl,     ' '
                int     21h
                ;переход к следующему элементу
                inc     si
                add     di,     2
        loop    @@ForI
@@Exit:
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
ShowArray       endp
 
; выводит знаковое 16-разрядное число из регистра AX на экран
; с выравниванием на 8 позиций по правому краю
; входные данные:
; ax - число для отображения
Show_AX proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        mov     cx,     10      ;основание системы счисления
        xor     di,     di      ; di - кол. цифр в числе
        xor     si,     si      ; si - признак отрицательного числа
        ; если число в ax отрицательное, то
        ;1) напечатать (запомнить в стеке) символ '-'
        ;2) сделать ax положительным
        or      ax,     ax
        jns     @@Conv
        mov     si,     1
 
        neg     ax
 
@@Conv:
        xor     dx,     dx
        div     cx              ; dl = num mod 10
        add     dl,     '0'     ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стек
        or      ax,     ax
        jnz     @@Conv
        ;если число отрицательное - помещаем символ "-" в строку
        or      si,     si
        jz      @@Positive
        mov     dx,     '-'
        push    dx
        inc     di
@@Positive:
        ; выводим из стека на экран
        ; - сначала пробелы для выравнивания по правому краю
        mov     cx,     8
        sub     cx,     di
        mov     ah,     02h
        mov     dl,     ' '
@@LeftPad:
        int     21h
        loop    @@LeftPad
        ;сохранённые символы цифр
@@Show:
        pop     dx              ; dl = очередной выводимый символ
        mov     ah,     2       ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Show_AX endp
 
_TEXT   ends
 
        end     main
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2018, 20:27

Сложить поэлементно два массива
Помогите пожалуйста, в чем ошибка. Некорректно складывает, в итоге получается неправильный ответ...

Сложить два массива поэлементно
Необходимо базовый класс Array: массив и поле для хранения количества элементов массива......

Поэлементно сложить два массива размерностью [1..5]
Поэлементно сложить два массива размерностью

Сложить поэлементно два однобайтовых массива (КР580ВМ80)
Нужно сложить поэлементно два однобайтовых массива , первый начинается с ячейки 0050h , второй с...


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

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

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