.model small
.stack 200h
.data
; Матрица 3x3 (пример)
A dw 1, -2, 3
dw -4, 5, -6
dw 7, -8, 9
rows dw 3
cols dw 3
posCount dw 0
negCount dw 0
Msg1 db 'Positive elements: $'
Msg2 db 13,10,'Negative elements: $'
.code
; Процедура вывода числа (из примера)
IntegerOut proc
xor cx,cx
mov bx,10
cmp ax,0
jge m
neg ax
push ax
mov ah,2
mov dl,'-'
int 21h
pop ax
m:
inc cx
xor dx,dx
div bx
push dx
or ax,ax
jnz m
m1:
pop dx
add dl,'0'
mov ah,2
int 21h
loop m1
ret
IntegerOut endp
Start:
mov ax,@data
mov ds,ax
xor si,si ; индекс (смещение)
mov cx,9 ; всего элементов (3*3)
count_loop:
mov ax, A[si]
cmp ax,0
jg is_positive
jl is_negative
jmp next_elem
is_positive:
inc posCount
jmp next_elem
is_negative:
inc negCount
next_elem:
add si,2 ; следующий элемент (dw = 2 байта)
loop count_loop
; ---- Вывод ----
mov ah,09
lea dx,Msg1
int 21h
mov ax,posCount
call IntegerOut
mov ah,09
lea dx,Msg2
int 21h
mov ax,negCount
call IntegerOut
mov ax,4C00h
int 21h
end Start