初学汇编 一个小程序 有逻辑错误,,,,哪位帮下忙~~
从一组20个数中找出正数和负数,存起来,并显示正负数的个数
SSEG SEGMENT STACK
STK DB 100 DUP (0)
SSEG ENDS
DSEG SEGMENT
DATA DB -1H,-2H,-3H,-4H,-5H,-6H,-7H,-8H,-9H,-10H,1H,2H,3H,4H,5H,6H,7H,8H,9H,10H
DATAP DB 20 DUP (0) ;用来存正数
DATAN DB 20 DUP (0) ;用来存负数
COUNT DB 0H ;控制循环
COUNTP DB 0H ;正数个数
COUNTN DB 0H ;负数个数
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
ASSUME SS:SSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AX,SSEG
LEA SI,DATA
LEA DI,DATAP
POSITIVE1:
CMP [SI+COUNT],0H
JL POSITIVE2
MOV CH,[SI+COUNT]
MOV [DI+COUNTP],CH
INC COUNTP
POSITIVE2:INC COUNT
CMP COUNT, 13H
JB POSITIVE1
MOV AX,COUNTP
AAM ;控制数字显示
ADD AX,3030H
MOV BX,AX
MOV DL,BH
MOV AH,02H
INT 21H
MOV DL,BL
MOV AH,02H
INT 21H
MOV DL,' ' ;显示空格
MOV AH,02H
INT 21H
MOV CL,0H ;把计数器置零
MOV COUNT,CL
LEA DI,DATAN ;指针指向存负数的单元
NEGETIVE1:CMP [SI+COUNT],0H
JG NEGETIVE1
MOV CH,[SI+COUNT]
MOV [DI+COUNTN],CH
INC COUNTN
NEGETIVE2:INC COUNT
CMP COUNT, 13H
JB NEGETIVE1
MOV AX,COUNTN
AAM
ADD AX,3030H
MOV BX,AX
MOV DL,BH
MOV AH,02H
INT 21H
MOV DL,BL
JBE NEGETIVE1
MOV DL,COUNTN
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,' '
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
显示结果不正确,一执行就dos就死了