[org 0x100]

mov di, 0
mov cx, 15
mov bx, 0
mov dx, 0
mov si, 0

L1:
cmp di,cx
je exit
mov al, [array+di]
cmp al, 0
je zeros
jl negatives
jg positive

zeros:
mov [zero+bx], al
add bx, 1
add di,1
jmp L1

negatives:
mov [negative+bx], al
add bx, 1
add di,1
jmp L1

positives:
mov [positive+si], al
add si, 1
add di,1
jmp L1


exit:
mov ax, 0x4c00
int 0x21

array:
db -1, 2, 0, -3, 4
db 5, -6, 0, 7, 8
db 9, 0, -10, 11, 12

rows: dw 3
columns: dw 5

zero: db 0, 0, 0
negative: db 0, 0, 0, 0
positive: db 0, 0, 0, 0, 0, 0, 0, 0