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

Сложение двух матриц

06.06.2017, 08:42. Просмотров 960. Ответов 1
Метки нет (Все метки)

Кто сможет написать код программы на TASM , в которой две матрицы(заданные в коде) будут складываться,а результат будет выводится на экран?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 08:42
Ответы с готовыми решениями:

Сложение элементов двух матриц
необходимо сложить елементы двух массивов. VS выдаёт ошибку на строку mov sum, bl :improper operand...

Структура с полями. Реализовать сложение, умножение матриц, а также нахождение определителя
Здравствуйте, дорогие форумчане. Необходимо представить матрицу 3х3 как структуру с полями,...

Сложение двух матриц
Даны две матрицы 2х2: а и е, которые нужно сложить. У меня при сложении в результате выводит только...

Сложение двух матриц
есть класс, в котором создаётся матрица посредством рандомного заполнения чисел или рандомного...

1
Модератор
Эксперт по электронике
6971 / 3474 / 1369
Регистрация: 01.02.2015
Сообщений: 10,889
Записей в блоге: 1
06.06.2017, 21:08 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
191
192
193
194
195
196
197
198
199
200
LOCALS
 
.model small
 
.stack 100h
 
.data
        CrLf    db      0Dh, 0Ah, '$'
        M       equ     4
        N       equ     7
 
        A       dw      -100, 123, 777, -561, 891, -222, -99
                dw       147, 564, -85, -753, 243,  478, 557
                dw        72,  64,  11,   88, -49,   69,  57
                dw       951, -22, -33, -210,  79,  111, 232
        B       dw         1,   2,   3,    5,   4,    7,   9
                dw        -4,  -8, 100, -645, 555, -222,  88
                dw        36,  36, -36,  366, 362,  542,  36
                dw       -77, 444, 333, -111, -54,  444, 361
        C       dw      M*N dup(?)
 
        String  db      256 dup(?)
        Pads    db      10 dup(' ')     ;пробелы для выравнивния выводимых чисел
        RPad    equ     7               ;выравнивание чисел вправо на 7 позиций
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        lea     si,     A
        lea     di,     B
        lea     bx,     C
        mov     cx,     M*N
ForIJ:
        mov     ax,     [si]
        add     ax,     [di]
        mov     [bx],   ax
        add     si,     2
        add     di,     2
        add     bx,     2
        loop    ForIJ
 
        lea     dx,     C
        call    ShowMatrix
 
        mov     ax,     4C00h
        int     21h
main    endp
 
; преобразует число из регистра AX в строку
; входные данные:
; ax - число для отображения
; ds:dx - адрес для результирующей строки Pascal типа
Int16ToStr      proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    di
        push    si
 
        mov     si,     dx
        mov     [si],   byte ptr 0      ;текущая длина строки равна 0
 
        mov     cx, 10
        xor     di, di          ; di - кол. цифр в числе
 
        ; если число в ax отрицательное, то
        ;1) увеличить длину строки на 1
        ;2) первый символ в строке '-'
        ;3) сделать ax положительным
        or      ax, ax
        jns     @@Conv
        inc     byte ptr [si]
        mov     [si+1], byte ptr '-'
 
        neg     ax
 
@@Conv:
        xor     dx, dx
        div     cx              ; dl = num mod 10
        add     dl, '0'         ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стек
        or      ax, ax
        jnz     @@Conv
        ; выводим из стека в строку
        mov     ax,     0
        mov     al,     [si]    ;в ячейку с длиной записываем длину строки
        add     [si],   di      ;с учётом возможного символа знака
        inc     si              ;устанавливаем указатель на первую свободную ячейку
        add     si,     ax
@@Show:
        pop     dx              ; dl = очередной символ
        mov     [si],   dl
        inc     si
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     si
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Int16ToStr      endp
 
; На входе
;m     - количество строк
;n     - количество столбцов
;ds:dx - адрес матрицы слов
ShowMatrix PROC
        push    ax
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        mov     si, 0  ; строка
        mov     di, 0  ; столбец
        mov     cx, dx
 
@@ShowRow:
        mov     dx, 0
        mov     ax, n*2
        mul     si
        mov     bx, ax
        add     bx, cx
 
        mov     ax, [bx+di]
 
        push    si
        push    cx
        ;преобразование числа в строку
        lea     dx, String
        call    Int16ToStr
        ;вывод выравнивающих пробелов
        mov     cl, RPad
        sub     cl, [String]
        mov     ch, 0
        lea     si, Pads
        call    ShowSubStr
        ;вывод строки с числом
        lea     si, String+1
        mov     cl, String
        mov     ch, 0
        call    ShowSubStr
        pop     cx
        pop     si
 
        add     di, 2
 
        cmp     di, n*2
        jb      @@ShowRow
 
        lea     dx, CrLf
        mov     ah, 09h
        int     21h
 
        mov     di, 0
 
        inc     si
 
        cmp     si, m
        jb      @@ShowRow
 
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
ShowMatrix ENDP
 
;процедура вывода подстроки
;на входе:
;  ds:si - адрес первого символа подстроки
;  cx    - длина выводимой подсторки
ShowSubStr      proc
        push    ax
        push    bx
        push    cx
        push    dx
        mov     ah,     40h     ;вывод в файл
        mov     bx,     1       ;файл - консоль
        mov     cx,     cx      ;количество символов
        mov     dx,     si      ;адрес первого символа
        int     21h
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
ShowSubStr      endp
 
end     main
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2017, 21:08

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

Сложение двух матриц
В задании матрицы записываются в файл (файлы), считываются из файла (-ов) и результат выводится в...

Сложение двух матриц
Здраствуйте помогите с решением программы Сложение двух матриц в WinForm C#.

Сложение двух матриц
В общем скажу сразу: обращаюсь я к вам не из-за лени, а из-за недостатка идей и соответсвенно...

Сложение двух матриц
Нужно составить программу сложения двух матриц произвольной размерности и предусмотреть проверку...


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

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

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