Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
NIK007
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 48
#1

Сформировать третий массив, записав в него суммы соответствующих элементов первого и второго массива

26.04.2015, 13:14. Просмотров 507. Ответов 2
Метки нет (Все метки)

Доброго времени!
Не могу решить задачку:

Ввести два массива одинаковой длины.
Сформировать третий массив, записав в него суммы соответствующих элементов первого и второго массива.
В полученном массиве найти максимальный элемент.
при этом размер массива задавать с клавиатуры, как и его элементы.
Написать на tasm или fasm . и на win7

Был один вариант, но препод сказал сделать иначе.
Помогите, пожалуйста

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2015, 13:14
Ответы с готовыми решениями:

дано два массива по 10 значений . получить третий массив 10 с суммой соответствующих значений
помогите кто чем может, срочно нужно)

Сформировать новый массив, включив в него все неповторяющиеся элементы исходного массива
Сформировать новый массив, включив в него все неповторяющиеся элементы...

Сформировать новый массив, элементами которого будут суммы одноименных элементов двух массивов [tasm]
Надо решить задачу Задать с клавиатуры два массива из 10 элементов каждый....

Сформировать массив B из четных элементов массива A
Добрый день, есть реализация подсчёта суммы нечётных элементов. Но никак не...

Нужно сформировать массив В из элементов массива А по формуле ...
Сформировать массив В из элементов массива А по формуле B=A OR A XOR (0FFh)....

2
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,036
Завершенные тесты: 1
27.04.2015, 07:13 #2
Показывай свой вариант как делать не нужно.
0
NIK007
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 48
23.05.2015, 18:18  [ТС] #3
Цитата Сообщение от alexcoder Посмотреть сообщение
Показывай свой вариант как делать не нужно.
вот
Кликните здесь для просмотра всего текста
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
;sum312.asm
;Ввести два массива одинаковой длины. Сформировать третий массив, записав в ;него суммы соответствующих элементов первого и второго массива. В полученном ;массиве найти максимальный элемент
model small
SZ equ 10 ; размеры массивов 1,2
.stack 256
.data
ar1 dw SZ dup (0) ;память для массива 1
ar2 dw SZ dup (0) ;память для массива 2
ar3 dw SZ dup (0) ;память для массива 3
buf db 7,10 Dup(?) ; допуск-ся ввод всего 5 символов, минус и 1 служебный
first dw(0) ; всп. переменная для нахождения макс эл-та
mes11 db 13,10,"Vvedite chislo massiva 1 $"
mes12 db 13,10,"Vvedite chislo massiva 2 $"
mes6 db 13,10, "Massiv N1 = $"
mes7 db 13,10, "Massiv N2 = $"
mes8 db 13,10, "Oshibka pri vvode! Povtorite vvod = $"
mes9 db 13,10, "Max element 3-go massiva = $"
mes10 db 13,10, "Massiv N3 = $"
newl db 13,10,'$' ; перевод на новую строку
.code
print macro ad ; макро вывода строки ad на экран
push ax
push dx
mov ah,9
mov dx,offset ad
int 21h
pop dx
pop ax
endm
putc macro a ; макро вывода символа а на экран
push ax
push dx
mov ah,2
mov dl,a
int 21h
pop dx
pop ax
endm
;
inp5z proc near ; процедура ввода числа (слова) через буфер со знаком
push cx
push bx
push si
push di
mov ah,0ah
xor di,di
mov dx,offset buf ; адрес буфера
int 21h ; принимаем строку
; обрабатываем содержимое буфера
xor cx,cx
mov si,offset buf+2 ; берем адрес начала строки
cmp byte ptr [si],"-" ; если первый символ минус
jnz ii1
mov di,1 ; устанавливаем флаг
inc si ; и пропускаем его
ii1:
xor ax,ax
mov bx,10 ; основание сc (10)
ii2:
mov cl,[si] ; берем символ из буфера
cmp cl,0dh ; проверяем не последний ли он
jz endin
 
; если символ не последний, то проверяем его на правильность
cmp cl,'0' ; если введен неверный символ <0
jl er2
cmp cl,'9' ; если введен неверный символ >9
ja er2
 
sub cl,'0' ; делаем из символа число 
mul bx ; умножаем на 10
jo er2 ; проверка на возможное переполнение
jc er2
add ax,cx ; прибавляем к остальным
test ax,8000h ; число должно быть положительным ( у нас же модуль)
jnz er2 
inc si ; указатель на следующий символ
jmp ii2 ; повторяем до символа 0dh в строке
 
er2: ; если была ошибка, то выводим сообщение об этом и выходим
; soob errv
stc
jmp ii3
 
; все символы из буфера обработаны число находится в ax
endin:
cmp di,1 ; если установлен флаг знака, то
jnz ii8
neg ax ; делаем число отрицательным
ii8: clc
jmp ii7
ii3: nop
ii7: pop di
pop si
pop bx
pop cx
ret
inp5z endp
 
outint proc near ; процедура вывода числа из ax со знаком
push cx
push bx
; Проверяем число на знак.
test ax, ax
jns oi1
 
; Если оно отрицательное, выведем минус и оставим его модуль.
mov cx, ax
mov ah, 02h
mov dl, '-'
int 21h
mov ax, cx
neg ax
; Количество цифр будем держать в CX.
oi1: 
xor cx, cx
mov bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
xor dx,dx
div bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
push dx
inc cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
test ax, ax
jnz oi2
; Теперь приступим к выводу.
mov ah, 02h
oi3:
pop dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
add dl, '0'
int 21h
; Повторим ровно столько раз, сколько цифр насчитали.
loop oi3
pop bx
pop cx
ret
outint endp 
 
; *****************************************************************
 
start: ; точка входа в программу
mov ax,@data ; инициализация DS
mov ds,ax
mov cx, SZ ; инициализация счетчика цикла ввода в массив 1 
mov bx,offset ar1 ; bx = адрес массива 1
lp21: print mes11 ; приглашение к вводу очередного эл-та массива 1
call inp5z ; ввод очередного числа
jc olu1 ; если ошибка при вводе, то на выход из цикла
mov word ptr [bx],ax ; иначе - вводим число в массив 1
dt1: add bx,2 ; переход на адрес след эл-та массива 1
loop lp21 ; цикл ввода в массив 1
jmp vvvm2
olu1: print mes8 ; печать
сообщения об ошибке при вводе
jmp lp21 ; повтор ввода
; ************************вывод массива 1 на экран **************
vvvm2: print mes6 ; сообщение о содержимом массива 1
mov cx, SZ
mov bx, offset ar1 ; в bx адрес начала массива 1
print newl ; переход на новую строку
omas1: mov ax, [bx] ; ax = текущий выводимый элемент массива 1
call outint ; вывод текущего элемента массива 1 на экран из ax
putc ' ' ; вывод разделителя (пробел)
add bx,2 ; инкремент на следующий элемент массива 1 
loop omas1 ; цикл вывода массива 1 на экран
; *********************** ввод в массив 2
vvv2: mov cx,SZ ; инициализация счетчика цикла ввода в массив 2
mov first,0
mov bx,offset ar2 ;bx = адрес массива 2
lp22: print mes12 ; приглашение к вводу очередного эл-та массива 2
call inp5z ; ввод очередного числа
jc olu2 ; если ошибка при вводе, то на выход из цикла
mov word ptr [bx],ax ; иначе - вводим число в массив 2
dt2: add bx,2 ; переход на адрес след эл-та массива 2
loop lp22 ; цикл ввода в массив 2
jmp xx2
olu2: print mes8 ; печать сообщения об ошибке при вводе
jmp lp22 ; повтор ввода
; ************************вывод массива 2 на экран **************
xx2: print mes7 ; сообщение о выводе массива 2
mov cx, SZ
mov bx, offset ar2 ;bx = адрес массива 2
print newl ; переход на новую строку
omas2: mov ax, [bx] ; ax = текущий выводимый элемент массива 2
call outint ; вывод текущего элемента массива 2 на экран из ax
putc ' ' ; вывод разделителя (пробел)
add bx,2 ; инкремент на следующий элемент массива 2
loop omas2 ; цикл вывода массива 2 на экран
nop
nop ; nop для отладки
mov cx,SZ 
mov bx,offset ar1 ; bx = индекс массива №1
mov si,offset ar2 ; si = индекс массива №2
mov di,offset ar3 ; di = индекс массива №3
sum3: mov ax,[bx] ; суммирование элементов массива 1,2 с одинаковыми ;индексами
add ax,[si]
mov ds:[di],ax ; и запись сумм в 3-й массив
add bx,2 ; наращивание индексов всех массивов
add si,2
add di,2
loop sum3 ; цикл
; ***********************вывод массива 3 на экран
print mes10 ; сообщение о выводе массива 3
mov cx, SZ
mov bx, offset ar3 ;bx = адрес массива 3
print newl ; переход на новую строку
omas3: mov ax, [bx] ; ax = текущий выводимый элемент массива 3
call outint ; вывод текущего элемента массива 3 на экран из ax
putc ' ' ; вывод разделителя (пробел)
add bx,2 ; инкремент на следующий элемент массива 3
loop omas3 ; цикл вывода массива 3 на экран
; определение макс эл-та массива 3
mov cx,SZ 
mov bx,offset ar3
wsum: mov ax,[bx]
cmp first,1 ; если вход в массив не первый, то на сравнение
je srav
mov bp,ax ; в bp = max (?)
mov first,1 ; инверсия признака "первый" вход
jmp dt11
srav: cmp ax,bp ; нахождение максимума
jng dt11
mov bp,ax ; очередной максимум в bp
dt11: add bx,2 
loop wsum ;цикл
; вывод максимума массива 3 на экран 
print mes9
mov ax,bp
call outint
vixx: mov ax, 0 ; ожидание нажатия любой клавиши
int 16h
mov ax, 4c00h
int 21h ; выход из программы
end start
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2015, 18:18

Поменять местами D2DFE из первого массива и R2D2 из второго массива, используя несколько разных способов адресации
Ассемблер Даны два массива z1 DW 0EFE1 D2DFE 32ABC z2 DW 1EFEA A2EF R2D2 ...

Сформировать одномерный массив, состоящий из отрицательных элементов двумерного массива
Как сформировать одномерный массив состоящий из отрицательных элементов...

Определить логическое произведение элементов первого и второго столбца матрицы
Доброго времени суток! Помогите пожалуйста с решением задачи: Дана...


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

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

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