七彩焰阳 发表于 2011-5-9 20:38:43

转换二进制为字符串并显示

DATA      SEGMENT
NUM8      DB      10110100B
NUM16      DW      1010101111101101B
ASCBUF      DB      20      DUP (0)
DATA      ENDS
STACK   SEGMENT    PARA   STACK'STACK'
DB200DUP (0)
STACK      ENDS
CODE      SEGMENT
      ASSUMEDS:DATA, CS:CODE, SS:STACK
START:      MOV      AX,DATA
      MOV      DS,AX
      
      MOV      DX,0
      MOV      DL,NUM8      ;转换二进制数送DX

      MOV      CX,8      ;置位数8
      LEA      DI,ASCBUF      ;字符串首址→DI
      CALL      BTASC      ;调用子程序BTASC
      MOV      ,BYTEPTR0DH
      MOV      ,BYTEPTR0AH
      MOV      ,BYTEPTR '




      LEA      DX,ASCBUF
      MOV      AH,9
      INT      21H

      MOV      DX,NUM16
      MOV      CX,16      ;置位数16
      LEA      DI,ASCBUF
      CALL      BTASC
             MOV      ,BYTEPTR0DH
      MOV      ,BYTEPTR0AH
      MOV      ,BYTEPTR '


; 显示转换字符串
      LEA      DX, ASCBUF                     
      MOV      AH,9
      INT      21H

      MOV      AH,4CH
      INT      21H


BTASC      PROC
      PUSH      AX      ;保存AX
      MOV      AL,0
      CMP      CX,8      ;比较8位数
      JNE      L1      ;直接转换16位数
      MOV      DH,DL      ;8位数转换送DH
L1:      
      
      
      ROL      DX,1      ;DX最高位移入CF
      MOV      AL,0
      RCL      AL,1      ;CF移入AL最低位
      ADD      AL,30H
      MOV      ,AL
      INC      DI
      
      LOOP      L1
      POP      AX

      RET
BTASC      ENDP

      

CODE      ENDS
      END      START



页: [1]
查看完整版本: 转换二进制为字符串并显示