DATA SEGMENT ;定义数据段BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99DB -12, 32, 3, 23, -7, 24, 60,-51 ;定义比较大小的数据DATA ENDS ;数据段结束ESEG SEGMENT ;定义附加段RES1 DB 0;定义结果存放区RES2 DB 0RES3 DB 0 ESEG ENDS ;附加段结束CODE SEGMENT ;定义代码段ASSUME DS:DATA,ES:ESEG,CS:CODESTART: MOV AX,DATAMOV DS,AX ;段寄存器DS重定位,DS指向DATA段的端基地址MOV AX,ESEGMOV ES,AX ;段寄存器ES重定位,ES指向ESEG段的端基地址LEA BX,BUF ;将BUF偏移地址送入基址寄存器MOV RES1, 0 ;将RES1~RES3清零MOV RES2, 0MOV RES3, 0MOV CX,20 ;将20送入计数寄存器,作为循环次数AGAIN: MOV AL,[BX] ;将BUF中字节型数据依次送入ALCMP AL,5 ;将BUF中数据和5比较JG NEXT1 ;数据大于5,跳转到NEXT1CMP AL,0 ;将BUF数据中小于等于5的数据和0比较JGE NEXT2 ;数据大于等于0,跳转NEXT2INC RES3 ;RES3自增JMP NEXT ;跳转至NEXTNEXT1: INC RES1 ;RES1自增JMP NEXT ;跳转至NEXTNEXT2: INC RES2 ;RES2自增NEXT: INC BX ;地址自增,指向下一个字节DEC CX ;计数寄存器自减JNZ AGAIN ;CX!=0转移至AGAINMOV AH,4CH ;将功能号4CH送入AHINT 21H ;返回DOSCODE ENDS ;代码段结束END START ;源程序结束