Сумма положительных элементов над главной диагональю матрицы - Assembler
Формулировка задачи:
Посчитать и вывести сумму положительных элементов, расположенных над главной диагональю матрицы.
Решение задачи: «Сумма положительных элементов над главной диагональю матрицы»
textual
Листинг программы
org 100h jmp start mess0 db 13,10,'Positive summ: $' ; текст мессаги mass db 100, 018, -66, 043, 078 ; матрица 5х5 db 051, -10, 123, -77, 005 db 060, 001, -94, -19, 038 db 099, 086, 022, 010, -49 db 055, -66, 050, 119, 121 start: mov cx,5 ; CX = счётчик цикла (5 столбцов в матрице) mov si,mass ; SI = адрес начала массива (для lodsb) push 0 0 0 ; в АХ будем читать, в ВХ будет сумма, DX = сл.строка pop ax bx dx ; ..пока очищаем их (AX/BX/DX = нуль) dec dx ; цикл будет увеличивать DX, next: ; ..поэтому ставим -1, чтоб начать с нуля. push cx ; запомним счётчик.. inc dx ; DX + 1 add si,dx ; SI = адрес матрицы + смещение сл.элемента adding: ; внутренний цикл (суммирование) lodsb ; читаем в AL байт из SI or al,al ; проверка AL (эта операция взводит флаги) js negate ; переход, если флаг SF=1 (число отрицательное) add bx,ax ; иначе: сумма положительных в ВХ negate: ; loop adding ; мотает цикл, пока СХ > 0 pop cx ; восстанавливаем счётчик dec cx ; уменьшаем его для сл.строки jnz next ; мотаем внешний цикл, пока CX > 0 ; mov ah,9 ; мессага mov dx,mess0 ; int 21h ; xchg ax,bx ; отправляем полученную сумму в AX call outHex ; зовём функцию "вывода числа на экран" mov al,'h' ; вставляем после числа литтер "HEX" int 29h ; exit: ; xor ax,ax ; int 16h ; int 20h ; выход по-любой клавише ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; процедура выводит на экран АХ в HEX outHex: xchg dx,ax ; DX = AX mov cx,4 ; число цифр для вывода @@: shld ax,dx,4 ; получить в AL очередную цифру rol dx,4 ; удалить ее из DX and al,0Fh ; оставить в AL только эту цифру cmp al,0Ah ; три команды, переводящие sbb al,69h ; ..шестнадцатеричную цифру в AL das ; ..в соответствующий ASCII-код int 29h ; вывод на экран loop @b ; повторить для всех цифр ret
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д