Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Определить, сколько слов во введенном тексте начинаются и заканчиваются одной и той же буквой https://www.cyberforum.ru/ asm-beginners/ thread2080355.html
Определить, сколько слов во введеном тексте начинаются и заканчиваются одной и той же буквой.(Слова разделены проблемами)
Assembler Преобразование строки двоичных цифр в эквивалентное ей целое десятичное число
2. Написать и протестировать функцию, которая преобразует строку двоичных цифр в эквивалентное ей целое десятичное число.На Ассемблере
Определить третью справа цифру данного натурального числа Assembler
1. Дано натуральное число N. Определить третью справа его цифру. на Асемблере
Assembler Функция: преобразовать целое без знака в его восьмеричное символьное представление Написать и протестировать функцию, которая преобразует целое без знака в его восьмеричное символьное представление. https://www.cyberforum.ru/ asm-beginners/ thread2080349.html
Assembler Функция: по заданному натуральному числу определить его первую и последнюю цифры https://www.cyberforum.ru/ asm-beginners/ thread2080348.html
Написать и протестировать функцию, которая по заданному натуральному чтслу определяет его первую и последнюю цифры. Помогите срочно
Написать и протестировать функцию, которая определяет, входит ли каждая буква в заданную строку не более двух раз Assembler
Написать и протестировать функцию, которая определяет, входит ли каждая буква в заданную строку не более двух раз, на emu8086
Assembler Какие цифры надо приписать к числу 1022, чтобы полученное число делилось на 7, 8, 9?
Выяснить, какие цифры (по одной справа и слева) надо приписать к числу 1022, чтобы полученное число делилось на 7, 8, 9.
Assembler Являются ли симметричными в квадратной матрице главная и побочная диагонали Написать и протестировать функцию, которая определяет, являются ли симметричными в заданной квадратной матрице главная и побочная диагонали. https://www.cyberforum.ru/ asm-beginners/ thread2080343.html
Assembler Найти сумму цифр числа на нечетных позициях (Emu8086) https://www.cyberforum.ru/ asm-beginners/ thread2080339.html
Помогите плс написать программу , или хотябы просто сумму цифр числа.
Assembler Определить, является ли заданная матрица симметричной относительно главной диагонали 1. Сформировать матрицу порядка n по заданному образцу: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 2. Определить, является ли заданная целая квадратная матрица n-го порядка симметричной... https://www.cyberforum.ru/ asm-beginners/ thread2080330.html
Модератор
Эксперт по электронике
7475 / 3676 / 1443
Регистрация: 01.02.2015
Сообщений: 11,449
Записей в блоге: 2
16.10.2017, 21:57 0

Найти максимальный по модулю элемент матрицы, переставить строки/столбцы матрицы по условию

16.10.2017, 21:57. Просмотров 778. Ответов 3
Метки (Все метки)

Ответ


Не очень красивое решение, но для учёбы - сойдёт.
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
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        N       dw      4
        M       dw      5
        K       dw      3
        Matrix  dw       12,  88,  64,  52, -17
                dw      -52,  -7, -14,  98,  18
                dw       78, -16,  17, -91, -99
                dw       10,  87,  62,  63, -67
        RowMax  dw      ?
        ColMax  dw      ?
        MaxAbs  dw      ?
        MsgIMtr db      'Initial matrix:', 0Dh, 0Ah, '$'
        MsgMax  db      'Max abs:', '$'
        MsgRow  db      'Row:    ', '$'
        MsgCol  db      'Column: ', '$'
        MsgK    db      'K:      ', '$'
        MsgRMtr db      'Result matrix:', 0Dh, 0Ah, '$'
        CrLf    db      0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
 
        ;поиск максимального по модулю элемента матрицы
        mov     si,     [N]
        mov     di,     [M]
        lea     dx,     [Matrix]
        call    GetMaxAbs
 
        mov     [MaxAbs],ax
        mov     [RowMax],si
        mov     [ColMax],di
 
        ;вывод результата
        mov     ah,     09h
        lea     dx,     [MsgIMtr]
        int     21h
        lea     dx,     [Matrix]
        mov     bx,     [M]
        mov     cx,     [N]
        call    ShowMatrix
        mov     ah,     09h
        lea     dx,     [MsgMax]
        int     21h
        mov     ax,     [MaxAbs]
        call    Show_AX
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        mov     ah,     09h
        lea     dx,     [MsgRow]
        int     21h
        mov     ax,     RowMax
        call    Show_AX
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        mov     ah,     09h
        lea     dx,     [MsgCol]
        int     21h
        mov     ax,     [ColMax]
        call    Show_AX
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        mov     ah,     09h
        lea     dx,     [MsgK]
        int     21h
        mov     ax,     [K]
        call    Show_AX
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        call    SwapRows
        call    SwapColumns
 
        mov     ah,     09h
        lea     dx,     [MsgRMtr]
        int     21h
        lea     dx,     [Matrix]
        mov     bx,     [M]
        mov     cx,     [N]
        call    ShowMatrix
 
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
 
;Поиск максимального по модулю элемента матрицы
;на входе:
;  ds:dx - адрес матрицы
;  si    - количество строк
;  di    - количество столбцов
;на выходе:
;  ax    - максимальный по модулю элемент
;  si    - номер строки  (от 0) с максимальным по модулю элементом
;  di    - номер столбца (от 0) с максимальным по модулю элементом
GetMaxAbs       proc
        ;push    ax
        push    bx
        push    cx
        push    dx
        ;push    si
        ;push    di
 
        push    dx
        push    di
        mov     bx,     dx
 
        mov     ax,     si      ;cx:=N*M
        mul     di
        mov     cx,     ax
 
        mov     dx,     0       ;MaxAbs:=0
        mov     si,     0       ;i:=0
        mov     di,     si      ;Imax:=0
        @@ForI:
                mov     ax,     [bx]
                neg     ax
                jl      $-2
 
                cmp     ax,     dx
                jbe     @@Next
                mov     dx,     ax
                mov     di,     si
        @@Next:
                add     bx,     2
                inc     si
        loop    @@ForI
 
        pop     cx              ;cx:=M
        mov     ax,     di
        mov     dx,     0
        div     cx
 
        mov     cx,     di      ;cx:=Imax
        mov     di,     dx
        mov     si,     ax
 
        pop     bx
        shl     cx,     1
        add     bx,     cx
        mov     ax,     [bx]
        ;pop     di
        ;pop     si
        pop     dx
        pop     cx
        pop     bx
        ;pop     ax
        ret
GetMaxAbs       endp
 
SwapRows        proc
        lea     bx,     [Matrix]
        mov     ax,     [K]
        cmp     ax,     [RowMax]
        je      @@srExit
        mov     ax,     [M]
        shl     ax,     1
        mov     cx,     ax
        mul     [K]
        mov     si,     ax
        mov     ax,     [RowMax]
        mul     cx
        mov     di,     ax
 
        mov     cx,     [M]
        @@srFor:
                mov     ax,     [bx+si]
                xchg    ax,     [bx+di]
                mov     [bx+si],ax
                add     si,     2
                add     di,     2
        loop    @@srFor
@@srExit:
        ret
SwapRows        endp
 
SwapColumns     proc
        lea     bx,     [Matrix]
        mov     ax,     [K]
        cmp     ax,     [ColMax]
        je      @@scExit
 
        mov     ax,     [M]
        shl     ax,     1
        mov     dx,     ax
 
        mov     si,     [K]
        shl     si,     1
        mov     di,     [ColMax]
        shl     di,     1
 
        mov     cx,     [N]
        @@scFor:
                mov     ax,     [bx+si]
                xchg    ax,     [bx+di]
                mov     [bx+si],ax
                add     si,     dx
                add     di,     dx
        loop    @@scFor
@@scExit:
        ret
SwapColumns     endp
 
;Вывод на экран матрицы слов
;на входе:
;  ds:dx - адрес матрицы
;  bx    - количество столбцов в матрице
;  cx    - количество строк в мматрице
;на входе:
;  -
ShowMatrix      proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    si
        push    di
        pushf
 
        jcxz    @@smExit
        or      bx,     bx
        jz      @@smExit
 
        cld
        mov     cx,     cx
        mov     si,     dx
        @@smForI:
                push    cx
                push    bx
                mov     cx,     bx
                @@smForJ:
                        lodsw
                        call    Show_AX
                loop    @@smForJ
                mov     ah,     09h
                lea     dx,     [CrLf]
                int     21h
                pop     bx
                pop     cx
        loop    @@smForI
 
@@smExit:
        popf
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
ShowMatrix      endp
 
; выводит знаковое 16-разрядное число из регистра AX на экран
; входные данные:
; 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
 
@code   ends
 
        end     main


Вернуться к обсуждению:
Найти максимальный по модулю элемент матрицы, переставить строки/столбцы матрицы по условию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2017, 21:57
Готовые ответы и решения:

[emu8086] Найти максимальный по модулю элемент матрицы. Удалить строку и столбец матрицы.
Найдите наибольший элемент по модулю в целочисленной квадратной матрице n-го порядка. Получить...

Найти сумму элементов столбца матрицы, содержащего максимальный по модулю элемент
Помогите с задачей: Матрица чисел из диапазона -99..99 размерностью вводится с клавиатуры....

Найти максимальный элемент матрицы
Дан массив v(4х4). Найти максимальный элемент этого массива. В тексте написать название (полностью)...

Переставляя строки и столбцы матрицы, добиться того, чтобы наибольший элемент оказался в верхнем левом углу
Дана матрица размером n x m. Переставляя её строки и столбцы, добиться того, чтобы наибольший...

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