汇编语言,输出ascii为10h-ffh的字符,每16个换行,为什么运行无结果?

   DATA  SEGMENT
   UPSTRING  DB        0AH,0DH,'$'
   DATA  ENDS

    CODE  SEGMENT
          ASSUME    CS:CODE,DS:DATA

  START:
          MOV       AX,DATA     ;
          MOV       DS,AX       ;将数据存入ds寄存器
          MOV       AL,10H      ;输出ASCII码为10H字符
          MOV       BL,0FFH     ;用于比较是否结束循环
          MOV       CX,0       ;用于计数

LINELOOP:
MOV DL,AL ;输出当前字符
MOV AX,2H ;
INT 21H ;
MOV DL,' ' ;输出空格字符
MOV AX,2H

INT 21H ;
CMP AL,BL ; 用当前字符和0FFH比较
JZ ENDPRO ;结束输出
INC AL ;ACSII码加1
INC CX ;字符数加1
CMP CX,16 ;和16比较
JZ CHANGELINE ; 每输出16个换行
JMP LINELOOP ;//进行循环
CHANGELINE:
LEA DX,UPSTRING ;输出换行
MOV AX,09H ;
INT 21H

XOR CX,CX ;字符数置0
JMP LINELOOP ;
ENDPRO: MOV AX,4C00H
INT 21H
CODE ENDS
END START

https://segmentfault.com/q/1010000007578531