判断是否超出十 JL ADD_TO ; 如果没超出十就是十进制数; 如果超出十那么可能是A到F 的字母输入 SUB AL,27H ;将 ASCII 变为十进制字母要加九 CMP AL,0AH ; 将它与字母 a 转化成的数比较 JL EXIT ; 如果小就跳转 CMP AL,10H ; 将它与字母 f 的转化码比较 JGE EXIT ; 如果大就跳出 ADD_TO: MOV CL,4 SHL BX,CL MOV AH,0 ADD BX,AX INC DX JMP NEWCHAR ;在 BX 中存储转化的二进制数为二进制转化为十进制做准备 EXIT: RET HEXIBIN ENDP BINIDEC PROC NEAR MOV AX,DATA MOV DS,AX MOV DX,OFFSET DAT2 MOV AH,09H INT 21H MOV CX,10000D CALL DEC_DIV MOV CX,1000D CALL DEC_DIV MOV CX,100D CALL DEC_DIV MOV CX,10D CALL DEC_DIV MOV CX,1D CALL DEC_DIV RET DEC_DIV PROC NEAR MOV AX,BX ;将 BX 的数送入 AX中 MOV DX,0 ; 将被除数高位清零 DIV CX MOV BX,DX ; 余数保存在 BX中 MOV DL,AL ; 商放入 DL 显示 ADD DL,30H ; 将数变为 ASCII 码 MOV AH,02H INT 21H RET DEC_DIV ENDP BINIDEC ENDP CRLF PROC NEAR MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H RET CRLF ENDP CODE ENDS END START