当前位置: 代码迷 >> 汇编语言 >> 编译语言 打印1-100中能被6整除的数,为什么打印不出空格?请大神指教
  详细解决方案

编译语言 打印1-100中能被6整除的数,为什么打印不出空格?请大神指教

热度:467   发布时间:2016-05-02 04:36:01.0
汇编语言 打印1-100中能被6整除的数,为什么打印不出空格?请大神指教
本帖最后由 u011921487 于 2014-05-12 17:24:10 编辑
       DATA  SEGMENT
      STRING  DB        'Integers that are divisible by 2 and 3 below 100 are:',0DH,0AH,'$'     ;装入字符串
         NUM  DB        100 DUP(?)
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
      START:
              MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET STRING
              MOV       AH,09H      ;显示字符串'Integers that are divisible by 2 and 3 below 100 are:
              INT       21H
              
              MOV       BX,96       ; 赋初值(从96开始循环)
              MOV       NUM,6       ; 赋初值(以6为模)
      CYCLE:
              MOV       AX,BX
              DIV       NUM
              CMP       AH,0        ; 如果余数为零 跳转到SHOW段(AH存余,AL存商)
              JZ        SHOW

              DEC       BX          ;自减一
              CMP       BX,05H      ;判断减一后的值是否等于5
              JNZ       CYCLE       ;不是5,继续循环
              JMP       EXIT        ;是5, 退出
              
              
       SHOW:
              MOV       AX,BX       ; 将被除数打入AX备用(之后对AX模运算)
              MOV       CL,0AH      ;  10->CL
              DIV       CL          ; 除10运算,求十进制的个位
              MOV       DH,AH       ; AL存余,AH存商(模10的余数和商)
              MOV       DL,AL

              CMP       AL,0        ; 除10余数为零(原来BX中的数是10的整数倍)
              JZ        SHOW1
                                                 
              ADD       DL,30H      ;  打印十进制数的ASC码?????为什么是这样?
              MOV       AH,02H
              INT       21H
  相关解决方案