|
- DATA SEGMENT
- NUM8 DB 10110100B
- NUM16 DW 1010101111101101B
- ASCBUF DB 20 DUP (0)
- DATA ENDS
- STACK SEGMENT PARA STACK 'STACK'
- DB 200 DUP (0)
- STACK ENDS
- CODE SEGMENT
- ASSUME DS: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 [DI],BYTE PTR 0DH
- MOV [DI+1],BYTE PTR 0AH
- MOV [DI+2],BYTE PTR '
- LEA DX,ASCBUF
- MOV AH,9
- INT 21H
- MOV DX,NUM16
- MOV CX,16 ;置位数16
- LEA DI,ASCBUF
- CALL BTASC
- MOV [DI],BYTE PTR 0DH
- MOV [DI+1],BYTE PTR 0AH
- MOV [DI+2],BYTE PTR '
- ; 显示转换字符串
- 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 [DI],AL
- INC DI
-
- LOOP L1
- POP AX
- RET
- BTASC ENDP
-
- CODE ENDS
- END START
复制代码
|
|