汇编语言菜鸟,急求大神们解答,不胜感激

编写并运行一个汇编语言程序,要求在首地址为Table的数组中存放10个带符号数,编写程序统计正数、负数和零的个数,并分别存入Gcount、Lcount和Zcount单元

根据现在的问答规则,为了防止白白回答问题而被耍,所以只能是先采纳后回答。谢谢谅解。

 ;将有符号数分组并分行显示(数据绝对值小于100)
data segment
    ARRAY dw 1,2,-1,3,4,-2,-3,4,5,-6  
    P_ARY dw 10 dup(20h)  ;正数
    N_ARY dw 10 dup(20h)  ;负数
    str1 db 'P_ARY = ' 
    p db 0,6 dup(20h)
    str2 db 'N_ARY = ' 
    n db 0,6 dup(20h),10,13,'$';用来存放负数个数
data ends
code segment
    assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    mov bx,offset ARRAY
    mov si,offset P_ARY
    mov di,offset N_ARY
    mov cx,10
    s:
        mov ax,[bx]
        Test ah,10000000b  ;相当于与,但不保存结果
        jz s0         ;跳到正数处理
        not ax    ;负数处理,求反加1得绝对值
        inc ax
        call get10   ;得到可显示10进制ASCII码
        mov [di],ax
        add di,2
        add n,1
        jmp next
    s0: call get10  ;正数直接   
        mov [si],ax
        add si,2
        add p,1
    next:   add bx,2
    loop s
    ;显示
    mov si,offset P_ARY
    mov di,offset N_ARY
    mov ah,0eh    ;中断调用功能参数
    mov cx,0
    mov cl,P  
    s1:
        mov al,[si]
        cmp al,30h
        jz gw1     ;不显示零
        int 10h
    gw1:    inc si
        mov al,[si]
        int 10h
        inc si
        mov al,20h
        int 10h
    loop s1
    mov al,10
    int 10h
    mov al,13
    int 10h
    mov cl,n
    s2:
        mov al,'-'
        int 10h
        mov al,[di]
        cmp al,30h
        jz gw2     ;不显示零
        int 10h
    gw2:    inc di
        mov al,[di]
        int 10h
        inc di
        mov al,20h
        int 10h
    loop s2
    mov al,10
    int 10h
    mov al,13
    int 10h

    add n,30h
    add p,30h
    mov ah,09h
    mov dx,offset str1
    int 21h   
    mov ah,4ch
    int 21h    
 get10 proc
    aam  ;BCD码调整,会将 al扩展 十位放到ah中,个位放到al中
    or ax,3030h  ;将数字转化成ascii码
    xchg al,ah ;逆序以便于显示al中是高位,ah是低位
    ret
 get10 endp   
code ends
end start

讨厌伸手党
这么简单的作业,请思考后,有不会的地方在上来提问