STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
BUF DB 8,10,-5,100,-7,25,40,0,3
N=$-BUF
COUNT DW 0 ;>0
COUNT1 DW 0 ;=0
COUNT2 DW 0 ;<0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: MOV AX,DATA
MOV DS,AX
LEA BX,BUF
MOV CX,N
MOV AX,0
AGAIN: CMP BYTE PTR[BX],0
JLE CLE
MOV AX,COUNT
INC AX
MOV COUNT,AX
JMP NEXT
CLE: JZ CEZ
MOV AX,COUNT2
INC AX
MOV COUNT2,AX
JMP NEXT
CEZ: MOV AX,COUNT1
INC AX
MOV COUNT1,AX
NEXT: INC BX
DEC CX
JNZ AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN