Найти строки матрицы, содержащие равное количество положительных и отрицательных элементов - Assembler

Узнай цену своей работы

Формулировка задачи:

Дана целочисленная матрица размерами 5х10. Вывести номер ее первой строки и последнего столбца содержащие равное количество положительных и отрицательных элементов(нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести 0. Заранее спасибо !

Решение задачи: «Найти строки матрицы, содержащие равное количество положительных и отрицательных элементов»

textual
Листинг программы
format PE Console
 
include 'win32a.inc'
 
qRows equ 5
qCols equ 10
 
        mov     edi,matr
        push    edi
        mov     ecx,qRows
mRows:
        mov     eax,0
        push    ecx
        mov     ecx,qCols
mCountCol:
        cmp     byte [edi],0
        jge     mPosCol
        dec     eax
mPosCol:
        jle     mNegCol
        inc     eax
mNegCol:
        inc     edi
        loop    mCountCol
        pop     ecx
        cmp     eax,0
        je      mRowsEnd
        loop    mRows
        mov     edx,0
        jmp     mSkipEnd
mRowsEnd:
        mov     edx,qRows
        sub     edx,ecx
        inc     edx;номер строки
mSkipEnd:
        pop     edi
 
        mov     ecx,qCols
mCols:
        mov     eax,0
        push    ecx
        mov     ecx,qRows
        push    edi
mCountRow:
        cmp     byte [edi],0
        jge     mPosRow
        dec     eax
mPosRow:
        jle     mNegRow
        inc     eax
mNegRow:
        add     edi,qCols
        loop    mCountRow
        pop     edi
        inc     edi
        pop     ecx
        cmp     eax,0
        je      mColsEnd
        loop    mCols
        mov     edx,0
        jmp     mSkipEnd2
mColsEnd:
        mov     edx,qCols
        sub     edx,ecx
        inc     edx;номер столбца
mSkipEnd2:
 
        invoke  ExitProcess,0
 
matr db 1,3,0,5,1,3,0,5,1,3,\
        4,1,-3,2,4,1,-3,2,4,1,\
        -2,0,3,-4,-2,0,3,-4,-2,0,\
        -2,0,3,-4,-2,0,3,-4,-2,0,\
        -2,0,3,-4,-2,0,3,-4,-2,0
 
include 'API\kernel32.inc'
 
data import
 
        library kernel32,'KERNEL32.DLL'
 
end data

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

Список переменных и их значений:

  1. qRows - количество строк в матрице (5)
  2. qCols - количество столбцов в матрице (10)
  3. edi - указатель на текущую ячейку матрицы
  4. ecx - счетчик для обхода матрицы
  5. eax - счетчик для подсчета положительных и отрицательных элементов
  6. edx - номер строки или столбца
  7. matr - адрес начала матрицы
  8. API\kernel32.inc - адрес библиотеки kernel32.dll
  9. ExitProcess - функция из библиотеки kernel32.dll для завершения работы программы
  10. 1,3,0,5,1,3,0,5,1,3,4,1,-3,2,4,1,-3,2,4,1,-3,2,-2,0,3,-4,-2,0,3,-4,-2,0,3,-4,-2,0 - значения ячеек матрицы

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


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

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

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