当前位置: 代码迷 >> 汇编语言 >> 如何把十六进制数换成十进制输出
  详细解决方案

如何把十六进制数换成十进制输出

热度:219   发布时间:2016-05-02 04:30:42.0
怎么把十六进制数换成十进制输出
             DISPLAY1          PRO NEAR
             MOV       DISSIGN,0
             MOV       BX,10
     DIVD:  DIV       BX          ;bx,16位,ax放商,dx放余数
             PUSH      DX
             MOV       DX,0
             TEST      AX,AX       ;判断ax即商为0?
             INC       DISSIGN
             JE        OUT         ;=0则开始输出
             LOOP      DIVD        ;否则一直循环
             MOV       CX,DISSIGN
       OUT:  MOV       AH,02H      ;商AX为0开始输出
             POP       DX
             ADD       DX,30H      ;将十进制数转为ASCII码输出
             INT       21H
             LOOP      OUT         ;从最高位开始一步步输出 ,dissign即实际位数
             RET
             DISPLAY1          ENDP
 
上面是个子程序,数最大5000所以DAA什么的都不能用
上面编译通过但是最多输出最高位,不知道哪里错了
DISSIGN表示该数位数

------解决思路----------------------
嗯,也有些问题,上面的 OUT: 也不是这样;对照下面的试试吧:
             DISPLAY1          PROC NEAR
             MOV       DISSIGN,0
             MOV       BX,10
     DIVD:  DIV       BX          ;bx,16位,ax放商,dx放余数
             PUSH      DX
             MOV       DX,0
             INC       DISSIGN
             TEST      AX,AX       ;判断ax即商为0?
             JNE       DIVD  ; OUT1         ;=0则开始输出
;             LOOP      DIVD        ;否则一直循环
         MOV       CX,DISSIGN
       OUT1:      MOV       AH,02H      ;商AX为0开始输出
             POP       DX
             ADD       DX,30H      ;将十进制数转为ASCII码输出
             INT       21H
             LOOP      OUT1         ;从最高位开始一步步输出 ,dissign即实际位数
             RET
             DISPLAY1          ENDP
  相关解决方案