Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Дизассемблирование команд с помощью W32Dasm https://www.cyberforum.ru/ asm-beginners/ thread2017617.html
Цель работы. Ознакомление с командами турбо паскаля, выводящими символы и коды. Вывод кодов и символов командами ord, $, Chr. Задание 1. Ввести название своей средней школы и вывести их коды; P.S...
_RUNDUDE.ASM Assembler
Всем привет! Нужна помощь с программой!:help: Она запускается и сразу же вылетает. Естественно, я как ламер где-то наделал ошибок, НО ГДЕ?! Вот код программы: P.S.: И да, это тестовая версия...
Assembler Инкремент, не работает флаг переполнения
Доброго времени суток. Буду краток. Есть код: mov eax, 0ffffffffh inc eax jo exit В отладчике наблюдаю что флаг OF не выставляется. Хотя в документации написано: The CF flag is not affected....
Assembler Матрица a не работает в другой прог Здравствуйте. В ячейку матрицы a загружаются кординаты точки, первое слово (16 байт) y и смещается в лево, второе слово x. Матрица a при переводе из одной прог. в другую не работает. Если загрузить... https://www.cyberforum.ru/ asm-beginners/ thread2014877.html
Assembler Обработка массива: поиск минимума, сортировка https://www.cyberforum.ru/ asm-beginners/ thread2014642.html
Дано такое условие: Если минимальный элемент вектора является последним элементом вектора, то отсортировать элементы вектора по убыванию. Как я понимаю по условию задачи я должен найти...
Assembler Вычислить значение выражения
Здравствуйте. Уравнение y = (12 + 3/8+6)*3+12. Ошибки: yyyy.asm(4) : invalid character in file yyyy.asm(5) : must be in segment block yyyy.asm(6) : syntax error : st yyyy.asm(7) : segment,...
Assembler Перестановка битов в обратном порядке
Прошу помощи небольшой(( Пишу в среде VS в с++ имеется задача "Реализуйте с помощью логических операцию, при которой младший байт слова логически складывается со старшим байтом записанным в...
Assembler Зеркально отобразить байты из al в ah В ax лежит последовательность из битов : например 1011001101001001 те в ah (10110011) и в al (01001001) , и необходимо зеркально отобразить al в ah ,т.е результат должен быть таким... https://www.cyberforum.ru/ asm-beginners/ thread2012888.html
Assembler Вычисление по формуле https://www.cyberforum.ru/ asm-beginners/ thread2012716.html
Здравствуйте, я написал программу вычисления по формуле: Y=\frac{16{A}^{2}}{{B}^{2}-7A} Но дело в том, что программа всегда выводит 'Y=0' независимо от того, какие данные А и В я ввожу. ...
Assembler Создать программу для вычисления выражения Создать программу для выражения y=x*x+1*b/2+2*x*a*c, при a=8, b=2, c=8, x=2 https://www.cyberforum.ru/ asm-beginners/ thread2012629.html
Модератор
Эксперт по электронике
7537 / 3723 / 1459
Регистрация: 01.02.2015
Сообщений: 11,571
Записей в блоге: 2
16.07.2017, 19:36 0

Найти максимальный элемент матрицы

16.07.2017, 19:36. Показов 1301. Ответов 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
.model small
.486
LOCALS  @@
.stack  100h
.data
 
Metric  equ     10                      ;система счисления
 
Rows    equ     4               ;максимальное количество строк
Columns equ     4               ;максимальное количество столбцов
elSize  equ     2               ;размер одного элемента матрицы
arSize  equ     Rows*Columns*elSize;максимальный размер матрицы
 
m       dw      Rows            ;текущее количество строк
n       dw      Columns         ;текущее количество столбцов
 
S       dw      16, 24,  0, 35  ;матрица
        dw      28,  5, 16, 34
        dw      55,  6, 28,  1
        dw      17,  3,101,  5
 
asCR_LF db      0Dh, 0Ah, '$'   ;"перевод строки"
asMatrix db     'Matrix M:', '$'
asMax   db      'Max: ',   '$'  ;
 
.code
 
; выводит число из регистра AX на экран
; входные данные:
; ax - число для отображения
Show_AX proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    di
 
        mov     cx, Metric
        xor     di, di          ; di - кол. цифр в числе
 
        ; если число в ax отрицательное, то
        ;1) напечатать '-'
        ;2) сделать ax положительным
        or      ax, ax
        jns     @@Conv
        push    ax
        mov     dx, '-'
        mov     ah, 2           ; ah - функция вывода символа на экран
        int     21h
        pop     ax
 
        neg     ax
 
@@Conv:
        xor     dx, dx
        div     cx              ; dl = num mod 10
        add     dl, '0'         ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стэк
        or      ax, ax
        jnz     @@Conv
        ; выводим из стэка на экран
@@Show:
        pop     dx              ; dl = очередной символ
        mov     ah, 2           ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Show_AX endp
 
; На входе
;m     - количество строк
;n     - количество столбцов
;ds:dx - адрес матрицы
ShowMatrix proc
        pusha
        mov     si, dx  ; строка  (i) - адрес строки матрицы
 
        mov     ax, Columns
        mov     cx, elSize
        mul     cx
        mov     di, ax  ; di - размер строки матрицы
 
        mov     cx, m   ;cx выполняет роль i (0..m-1)
        @@ForI:
                mov     dx, cx  ;сохраняем содержимое счётчика cx (i)
                mov     cx, n   ; теперь cx выполняет роль j (0..n-1)
                mov     bx, 0   ;смещение элемента относительно начала строки
                @@ForJ:
                        mov     ax, [si+bx]     ;считываем очередной элемент в ax
                        call    Show_AX ;вывод числа на экран
 
                        push    dx
                        mov     ah, 02h ;вывод пробела на экран
                        mov     dl, ' '
                        int     21h
                        pop     dx
 
                        add     bx, elSize      ;переход к следующему элементу
                loop    @@ForJ
                push    dx
                mov     ah, 09h ;перевод строки
                lea     dx, asCR_LF
                int     21h
                pop     dx
                mov     cx, dx
                add     si, di  ; si - смещение текущей строки матрицы
        loop    @@ForI
        popa
        ret
ShowMatrix endp
 
Main    proc
        mov     dx, @data
        mov     ds, dx
 
        ;вывод матрицы на экран
        mov     ah, 09h
        lea     dx, asMatrix
        int     21h
        mov     ah, 09h
        lea     dx, asCR_LF
        int     21h
        lea     dx, S
        call    ShowMatrix
 
        ;поиск максимального элемента матрицы,
        ;расположенного на главной диагонали
        lea     si, S  ; строка  (i) - адрес строки матрицы
 
        mov     ax, Columns
        mov     cx, elSize
        mul     cx
        mov     di, ax  ; di - размер строки матрицы
 
        mov     ax, [si]    ;Max:=S[0, 0]
        mov     cx,     m   ;cx выполняет роль i (0..m-1)
@@ForI:
        mov     bx, 0   ;смещение элемента относительно начала строки
        push    cx
        mov     cx,     n
        @@ForJ:
                cmp     ax, [si+bx]     ;сравниваем очередной элемент с al
                jge     @@Next          ;если очередной элемент меньше или равен максимальному
                                        ;то переходим к следующему
                mov     ax, [si+bx]     ;иначе - обновляем значение максимального элемента
        @@Next:
                add     bx, elSize      ;переход к следующему элементу в строке
                loop    @@ForJ
        pop     cx
        add     si, di          ;переход к следующей строке
        loop    @@ForI
 
        ;вывод максимального элемента
        push    ax
        mov     ah, 09h
        lea     dx, asMax
        int     21h
        pop     ax
        call    Show_AX
 
        ;завершение программы
        mov     ax, 4c00h
        int     21h
Main    endp
 
end     Main


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

Найти максимальный по модулю элемент матрицы, переставить строки/столбцы матрицы по условию
помогите пожалуйста. Задана матрица размером n x m. Найти максимальный по модулю элемент матрицы....

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

Найти максимальный элемент на главной диагонали матрицы и заменить его на 1
Дан массив элементов 6х6. Найти максимальный элемент на главной диагонали и заменить его на 1

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

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