;-------------------------------------- ; BIN-DEC-HEX base conversion ; (c) 24-01-1994 by Jan Laitenberger ;-------------------------------------- MOV DX, ?@Info ; display MOV AH, 9 ; copyright INT 21h ; information JMP @Start @Error: PUSH AX ; save errpos MOV AH, 9 ; print CR,LF MOV DX, OFFSET @CRLF INT 21h POP CX ; error pos. DEC CX ; - 1 MOV AX, 0E20h JCXZ @NoLoop @ELoop: INT 10h ; print blank LOOP @ELoop @NoLoop: MOV AH, 9 ; print error MOV DX, OFFSET @EMsg ; pointer INT 21h @Start: MOV BYTE PTR [80h], 18 ; length MOV DX, 80h ; and offset MOV AH, 0Ah ; for input INT 21h MOV SI, 81h ; length of CMP BYTE PTR [SI], 0 ; input = 0 JNE @Ok INT 20h ; then exit @Ok: CALL @GetSys ; get base CALL @Val ; str -> word JB @Error MOV DX, AX MOV AX,3010h ; "0", xxx:16 MOV BX, 2 ; bin CALL @Output MOV AX, 2005h ; " ", xxx:5 MOV BL, 10 ; dec CALL @Output MOV AX, 3004h ; "0", xxx:4 MOV BL, 16 ; hex CALL @Output MOV AH, 9 ; print CR,LF MOV DX, OFFSET @CRLF INT 21h JMP SHORT @START ; again ... @OutPut: XCHG AX, DX MOV DI, 81h CALL @Str ; word -> str XCHG DX, AX MOV SI, 81h MOV DI, ?@ZStr+1 CALL @Form ; format, MOV SI, OFFSET @ZStr CALL @Wrt ; print word MOV AX, 0E20h ; print INT 10h ; 2 blanks INT 10h RET INCLUDE WRNUM.INC INCLUDE RDNUM.INC @Info: DB 13, 10, "BIN/DEC/HEX - " DB "base conversion", 13,10 DB "(c) 1991 by Jan Laiten" DB "berger", 13, 10, 10, 36 @ZStr: DB 0, " " @EMsg: DB "^ illegal character" @CRLF: DB 13, 10, 36