Всех приветствую, мне необходимо найти сумму элементов матрицы, которые находятся над её главной диагонали. Но, приведённый ниже код ничего не выводит в консоли. Ассемблер: TASM.
.model small
.data
matrix db 1, 2, 3, 4, 5, 6, 7, 8, 9
rows equ 3 ; Количество строк
cols equ 3 ; Количество столбцов
.code
start:
mov ax, @data
mov ds, ax
xor cx, cx ; Инициализируем счетчик суммы
; Вложенные циклы для перебора элементов матрицы
mov si, 0 ; Индекс строки
outerLoop:
mov di, si ; Индекс столбца
innerLoop:
; Сравниваем позицию элемента с главной диагональю
cmp di, si
jle skipAdd
; Если элемент выше диагонали, сохраняем его индекс в регистре bx
; Если элемент выше диагонали, сохраняем его индекс в регистре bx
mov bx, si ; Загружаем индекс строки в bx
mov al, cols
mul al ; Умножаем индекс строки (bx) на количество столбцов (cols)
add bx, di ; Добавляем индекс столбца (di) для получения адреса элемента
mov al, [matrix + bx] ; Загружаем значение элемента в регистр al
add cl, al ; Добавляем значение элемента к сумме
skipAdd:
inc di
cmp di, cols
jl innerLoop
inc si
cmp si, rows
jl outerLoop
; Вывод суммы элементов выше главной диагонали
mov ah, 2
mov dl, cl
int 21h
mov ah, 4Ch
int 21h
end start