Using assembly implementation convert binary to octal, decimal and hexadecimal.
Source Code
;conver.asm
DATA SEGMENT
MENU db'Please Input your Choice:',0dh,0ah
db'1:Bin-->Oct8',0dh,0ah
db'2:Bin-->Dec10',0dh,0ah
db'3:Bin-->Hex16',0dh,0ah
db'0:Exit',0dh,0ah,'$'
mess1 db'Please Input a Bin number:$'
mess2 db'Output Oct is:$'
mess3 db'Output Dec is:$'
mess4 db'Output Hex is:$'
error db'Error!Please Input your Choice again:$'
TABLE DW L0,L1,L2,L3
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
L: LEA DX,MENU ;Display MENU
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,3
JBE DONE ;If less than 4 jump to DONE
LEA DX,error
MOV AH,09H
INT 21H
JMP L
DONE: LEA SI,TABLE
MOV AH,0
SHL AX,1
ADD SI,AX
JMP [SI]
L1: CALL INBIN
CALL CRLF
CALL OUTOCT
CALL CRLF
JMP L
L2: CALL INBIN
CALL CRLF
CALL OUTDEC
CALL CRLF
JMP L
L3: CALL INBIN
CALL CRLF
CALL OUTHEX
CALL CRLF
JMP L
L0: MOV AH,4CH
INT 21H
CRLF PROC
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
RET
CRLF ENDP
INBIN PROC NEAR
LEA DX,mess1
MOV AH,09H
INT 21H
MOV BX,0
BINL1: MOV AH,01H
INT 21H
CMP AL,0DH
JZ BINL2
AND AL,01H
SHL BX,1
OR BL,AL
JMP BINL1
BINL2: RET
INBIN ENDP
OUTOCT PROC NEAR
LEA DX,mess2
MOV AH,09H
INT 21H
OCT1: ROL BX,1
MOV AX,BX
AND AL,01H
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV CH,5
OCT2: MOV CL,3
ROL BX,CL
MOV AL,BL
AND AL,07H
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ OCT2
RET
OUTOCT ENDP
OUTDEC PROC
LEA DX,mess3
MOV AH,09H
INT 21H
MOV CX,10000
CALL DECL1
MOV CX,1000
CALL DECL1
MOV CX,100
CALL DECL1
MOV CX,10
CALL DECL1
MOV CX,1
CALL DECL1
RET
OUTDEC ENDP
DECL1 PROC NEAR
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
RET
DECL1 ENDP
OUTHEX PROC
LEA DX,mess4
MOV AH,09H
INT 21H
MOV CX,4
MOV AL,0
HEXL1: ROL BX,1
RCL AL,1
ROL BX,1
RCL AL,1
ROL BX,1
RCL AL,1
ROL BX,1
RCL AL,1
MOV DL,AL
AND DL,0FH
ADD DL,30H
CMP DL,39H
JBE HEXL2
ADD DL,7
HEXL2: MOV AH,02H
INT 21H
LOOP HEXL1
RET
OUTHEX ENDP
CODE ENDS
END START
C:\MASM\masm>masm conver
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [conver.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
50778 + 450678 Bytes symbol space free
0 Warning Errors
0 Severe Errors
C:\MASM\masm>link conver
Microsoft (R) Overlay Linker Version 3.65
Copyright (C) Microsoft Corp 1983-1988. All rights reserved.
Run File [CONVER.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
C:\MASM\masm>conver.exe
Please Input your Choise:
1:Bin-->Oct8
2:Bin-->Dec10
3:Bin-->Hex16
0:Exit
_
Download Integrated Assembly Compiler v1.2
filename : visualasm.zip Size : 1.6MB SHA1 : e0f905f3d3b104d3fa3f27ac8a779243f01ca9f2 Last Update : 18 June, 2014