Найти сумму положительных элементов под главной диагональю матрицы - Assembler
Формулировка задачи:
Программирование в tasm. Пишет ошибку Operand types do not match. Мне нужно найти сумму положительных элементов под главной диагональю матрицы. Вот код:
------------------------------------
Ошибка вылезает в mov al,mas[4]
mov al,mas[8]
mov al,mas[9]
mov al,mas[12]
mov al,mas[13]
mov al,mas[14]
.model small .stack 100h .data mas dw 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 .code start: mov ax,@data mov ds,ax mov cx,10 xor ax,ax xor si,si sum: mov al,mas[4] mov ah,0 add al,mas[8] adc ah,0 add al,mas[9] adc ah,0 add al,mas[12] adc ah,0 add al,mas[13] adc ah,0 add al,mas[14] adc ah,0 mov sum,ax loop sum mov ax,4c00h int 21h end start
Решение задачи: «Найти сумму положительных элементов под главной диагональю матрицы»
textual
Листинг программы
model small .code szRow equ 6 szCol equ szRow start: mov ax,@data mov ds,ax mov ch,szRow+1 xor dx,dx xor bx,bx lRow: mov cl,szCol+1 xor di,di lCol: cmp cl,ch jle next mov al,mass[bx][di] test al,80h jnz next cbw add dx,ax next: inc di dec cl jnz lCol add bx,szCol dec ch jnz lRow mov sum,dx mov ah,4ch int 21h .data sum dw ? mass label byte dat = 0 rept szRow rept szCol db dat dat = (dat+szRow*szCol)mod 256 endm endm .stack 256 end start
Объяснение кода листинга программы
Код выполняет следующие действия:
- Инициализация переменных.
- Переход в сегмент данных.
- Установка счётчика строки и столбца.
- Проход по всем элементам матрицы с помощью двух вложенных циклов.
- Проверка на положительность элемента.
- Если элемент положительный, то прибавляем его к сумме.
- После прохода по всем элементам выводим значение суммы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д