Поиск максимального значения в каждом столбце - Assembler
Формулировка задачи:
Andrej1990
поиск максимального значения в каждом столбцеРешение задачи: «Поиск максимального значения в каждом столбце»
textual
Листинг программы
Comment &
Find elements [Min, Max]
&
.model small
.stack 100
.data
N Equ 2
M Equ 3
Min Equ 2
Max Equ 6
Matrix DW 1, 2, 3
DW 4, 5, 6
Vector DW N Dup (?)
S Equ Type Matrix
.code
.startup
Xor Bx, Bx
Mov Cx, N
Lea Di, Vector
Rows: Push Cx
Mov Cx, M
Xor Si, Si
Xor Ax, Ax
Cols: Cmp Matrix[Bx][Si], Min
Jl False
Cmp Matrix[Bx][Si], Max
Jg False
Inc Ax
False:
Add Si, S
Loop Cols
Mov [Di], Ax
Add Bx, S*M
Add Di, S
Pop Cx
Loop Rows
Xor Bx, Bx
Mov Cx, N
Print: Mov Ax, Vector[Bx]
Add Bx, S
Loop Print
.exit 0
end
Объяснение кода листинга программы
- Объединение кода и данных в одном файле.
- Код написан на ассемблере.
- Задача программы - поиск максимального значения в каждом столбце матрицы.
- Входные данные представлены в виде матрицы и вектора.
- Матрица описывается двумя строками, указывающими размерность матрицы (N строк, M столбцов) и сами значения матрицы.
- Вектор описывается одним словом, указывающим размерность вектора (N элементов).
- Размерность вектора (N) равна размерности матрицы (N строк).
- Значения вектора заполняются в процессе выполнения программы.
- Программа ищет максимальное значение в каждом столбце матрицы и сохраняет его в векторе.
- Размерность вектора (N) равна сумме произведений размерностей матрицы (N строк, M столбцов) и вектора (N элементов).
- Выходные данные представлены в виде вектора, содержащего максимальные значения каждого столбца матрицы.
- Для хранения результата используется регистр AX.
- Программа начинается с инициализации регистров и указателей.
- Используется два вложенных цикла, обрабатывающих строки и столбцы матрицы.
- Внутренний цикл обрабатывает значения каждого столбца матрицы.
- Используется операция сравнения для определения минимального и максимального значений в столбце.
- Если текущее значение больше максимального, то оно становится новым максимальным.
- Если текущее значение меньше минимального, то оно становится новым минимальным.
- После обработки всех столбцов матрицы, результат сохраняется в векторе.
- Программа завершается выводом результата на экран.