Найти максимальный элемент на главной диагонали матрицы и заменить его на 1 - Assembler
Формулировка задачи:
Дан массив элементов 6х6. Найти максимальный элемент на главной диагонали и заменить его на 1
Решение задачи: «Найти максимальный элемент на главной диагонали матрицы и заменить его на 1»
textual
Листинг программы
format PE GUI 4.0 entry start include 'win32a.inc' section '.text' code readable executable start: mov ecx,35d xor eax,eax @1: lea esi,[a+ecx*2] cmp ax,[esi] ja @2 mov ax,[esi] mov ebx,esi @2: sub ecx,7d jae @1 mov word [ebx],1 invoke ExitProcess,0 section '.data' data readable writeable a dw 2341d,1345d,2033d,3543d,7843d,4234d dw 3249d,7643d,9038d,2086d,2375d,5083d dw 7970d,5308d,2984d,0985d,7893d,0054d dw 0435d,3457d,2384d,9712d,6843d,5431d dw 8413d,6461d,6548d,1304d,8909d,6484d dw 6819d,9818d,3548d,1981d,8984d,8413d section '.idata' import data readable writeable library kernel,'KERNEL32.DLL' import kernel,\ ExitProcess,'ExitProcess'
Объяснение кода листинга программы
Список действий, которые выполняются в коде:
- Задаётся начальное значение счётчика ecx равным 35d.
- Начальное значение eax устанавливается в ноль.
- ESI устанавливается на адрес первого элемента матрицы (a + ecx * 2).
- Происходит сравнение значения eax и элемента матрицы, к которому он относится. Если элемент матрицы больше, то значение eax заменяется на это значение, а ESI переходит к следующему элементу.
- Если элемент матрицы меньше, то значение eax не меняется, а ESI переходит к следующему элементу.
- Если просмотрена вся матрица, то найденное максимальное значение заменяется на 1.
- Вызывается функция ExitProcess с аргументом 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д