Assembly Binary Convert

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
0.00 avg. rating (0% score) - 0 votes