Загрузка данных


.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