设计一个子程序,完成统计一组数字中的正数和0的个数
DATA     SEGMENT
    ARR    DW -123,456,67,0,-34,-90,89,67,0,256
    ZER    DW     ?
    PLUS    DW    ?
DATA    ENDS
CODE    SEGMENT
      ASSUME    DS:DATA,CS:CODE
     START:MOV    AX, DATA
       MOV    DS , AX    ;初始化DS
     MOV     SI , OFFSET   ARR    ;数组首地址送SI
      MOV    CX , CN        ;数组元素个数送CX
    CALL      PZN        ;调用近过程PZN
    MOV      ZER  ,   BX         ;0的个数送ZER
    MOV       PLUS ,  AX        ;正数的个数送PLUS
    INT        21H
    ;子程序名,PZN
    ;子程序功能:统计一组数据中正数和0的个数
    ;入口参数:数组首地址在SI中,数组个数在CX中
    ;出口参数:正数个数在AX中,0的个数在BX中
    ;使用寄存器:AX,BX,CX,DX,SI及PSW
    PZN    PROC   NEAR
             PUSH       SI
             PUSH        DX    ;保护现场
             PUSH       CX
      XOR      AX ,   AX
           XOR      BX  ,  BX    ;计数单元清0
    PZN0:  MOV    DX, [SI]    ;取第一个数组元素送DX
        CMP  DX , 0    ;DX中的内容和0比较
        JL    PZN1    ;小于0转到PZN1
        JZ    ZN        ;等于0,转到ZN
        INC   AX        ;否则 为正数,AX中内容加1
        JMP    PZN1
    ZN:       INC    BX                   ;为0,BX中内容加1
    PZN1 :   ADD    SI,  2            ;数组指针加2调整
                   LOOP    PZN0        ;循环控制
        POP     CX                    
        POP    DX
        POP   SI               ;保护现场
        RET                          ;返回主程序
    PZN    ENDP                      ;子程序定义结束
  CODE     ENDS                            ;代码段结束
END              START                                  ;程序结束