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

charles_su
  • 42
   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
回复
阅读 3.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏