DATAS SEGMENT
      db 5 duf('0'),0ah,0dh,'$'
DATAS ENDS


CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
        MOV AX,DATAS
        MOV DS,AX
        mov ax,datas
        push ds
        ;lea AX,SubData;取子程序所用的数据区段地址 
        MOV bx,11d 
        CMP BX,0 
        JGE next 
        MOV DL,'-' 
        MOV AH,2 
        INT 21H;显示负号’-’ 
        NEG BX;求-BX,使其值为正数 
   next:MOV SI,4 
        MOV AX,BX 
        MOV CX,10d 
  again:XOR DX,DX 
        IDIV CX;DX存放余数,AX存放商 
        ADD DX,'0' 
        MOV [SI],DX 
        DEC SI 
        JGE again 
        pop ds
        XOR DX,DX 
        MOV AH,09h 
        INT 21H;调用中断21的功能9,显示DS:DX指向的字符串 
        MOV AH,4CH
        INT 21H
CODES ENDS
    END START


原题是:按照五位十进制数的形式输出bx中的值。我假设bx中是11d,上面的程序怎么总是输出0,应该是00011呀,怎么回事的?哪错了?请大虾们看看,过了就要留下痕迹呀!