Найти максимальный элемент на главной диагонали матрицы и заменить его на 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'

Объяснение кода листинга программы

Список действий, которые выполняются в коде:

  1. Задаётся начальное значение счётчика ecx равным 35d.
  2. Начальное значение eax устанавливается в ноль.
  3. ESI устанавливается на адрес первого элемента матрицы (a + ecx * 2).
  4. Происходит сравнение значения eax и элемента матрицы, к которому он относится. Если элемент матрицы больше, то значение eax заменяется на это значение, а ESI переходит к следующему элементу.
  5. Если элемент матрицы меньше, то значение eax не меняется, а ESI переходит к следующему элементу.
  6. Если просмотрена вся матрица, то найденное максимальное значение заменяется на 1.
  7. Вызывается функция ExitProcess с аргументом 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы