DATA  SEGMENT
S 	DB 0AH,0DH,'*****************************************'
DB 0AH,0DH,'**                                             **'
DB 0AH,0DH,'**            WELCOME    YOU!                **'
DB 0AH,0DH,'**                                              **'
DB 0AH,0DH,'** THIS IS PROGRAMME OF DAIMAZHUANGHUAN **'
DB 0AH,0DH,'**                                              **'
DB 0AH,0DH,'**      PRESS B TO BEGIN EXCHANGE!         **'
DB 0AH,0DH,'**           PRESS Q TO EXIT                 **'
DB 0AH,0DH,'**                                              **'
DB 0AH,0DH,'*******************************************'
DB 0AH,0DH,'$'
S1 	DB 0AH,0DH,'1  XIAOXIE->DAXIE'			
DB 0AH,0DH,'2  DAXIE->XIAOXIE'  		  	
DB 0AH,0DH,'3  ERJINZHI->SHILIUJINZHI'	 
DB 0AH,0DH,'4  SHILIUJINZHI->ERJINZHI'	 
DB 0AH,0DH,'5  SHIJINZHI->ERJINZJI'		
DB 0AH,0DH,'6  ERJINZHI->SHIJINZHI'		
DB 0AH,0DH,'7  SHILIUJINZHI->SHIJINZHI'	 
DB 0AH,0DH,'8  SHIJINZHI->SHILIUJINZHI$'
DB 0AH,0DH,'PLEASE CHOOSE THE OPERATION:'
DB 0AH,0DH,'$'
S2 	DB 0AH,0DH,'INPUT ERROR,PLEASE REPUT!$'
S3 	DB 0AH,0DH,'PLEASE INPUT SMALL LETTERS:$'
S4 	DB 0AH,0DH,'ITS CAPTICAL LETTER IS:$'
S5 	DB 0AH,0DH,'PLEASE INPUT CAPTICAL LETTERS:$'
S6 	DB 0AH,0DH,'ITS SMALL LETTER IS:$'
S7 	DB 0AH,0DH,'PLEASE INPUT A BINARY:$'
S8 	DB 0AH,0DH,'PLEASE INPUT A HEXADECIMAL:$'
S0 	DB 0AH,0DH,'ITS BINARY IS:$'
SA 	DB 0AH,0DH,'PLEASE INPUT A DECIMAL:$'
SB 	DB 0AH,0DH,'ITS DECIMAL IS:$'
BUFA 	DB 81
DB ?
DB 80 DUP(?)
BUFB 	DB 80 DUP(?)
BUFC 	DB 81
DB ?
DB 80 DUP(?)
BUFD 	DB 80 DUP(?)
JG 		DB 0AH,0DH,'OUTPUT STRING:$'
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV AX,DATA
MOV DS,AX
DISP 	MACRO E					
LEA DX,E
MOV AH,09H
INT 21H
ENDM
DISP S
CHOOSE:DISP S1					
MOV AH,01H
INT 21H
CMP AL,'1'
JE A
CMP AL,'2'
JE B
CMP AL,'3'
JE C
CMP AL,'4'
JE D
CMP AL,'5'
JE E
CMP AL,'6'
JE F
CMP AL,'7'
JE G
CMP AL,'8'
JE H
CMP AL,51H
JE EXIT
DISP S2
JMP CHOOSE
A:CALL SMALL_CAPITAL		
CALL CRLF
JMP CHOOSE
B:CALL CAPITAL_SMALL		
CALL CRLF
JMP CHOOSE
C:CALL BINHEX		
CALL CRLF
JMP CHOOSE
D:CALL HEXBIN				
CALL CRLF
JMP CHOOSE
E:CALL DECBIN				
CALL CRLF
JMP CHOOSE
F:CALL BINDEC				
CALL CRLF
JMP CHOOSE
G:CALL HEXDEC				
CALL CRLF
JMP CHOOSE
H:CALL DECHEX				
CALL CRLF
JMP CHOOSE
EXIT:	MOV AH,4CH					
INT 21H

LOWTOHIGH PROC NEAR
CMP AL,'A'
JB STOP
CMP AL,'Z'
JA STOP
SUB AL,20H
STOP:RET
LOWTOHIGH ENDP
SMALL_CAPITAL PROC NEAR
LEA DX,S3
MOV AH,9
INT 21H
LEA DX,BUFA
MOV AH,0AH
INT 21H
LEA SI,BUFA+1
LEA DI,BUFB
MOV CH,0
MOV CL,[SI]
INC SI
NEXT:MOV AL,[SI]
CALL LOWTOHIGH
MOV [DI],AL
INC SI
INC DI
LOOP NEXT
MOV BYTE PTR[DI],'$'
LEA DX,JG
MOV AH,9
INT 21H
LEA DX,BUFB
MOV AH,9
INT 21H
RET
SMALL_CAPITAL ENDP
HIGHTOLOW PROC NEAR
CMP AL,'A'
JB STP
CMP AL,'Z'
JA STP
ADD AL,20H
STP:RET
HIGHTOLOW ENDP
CAPITAL_SMALL  PROC NEAR
LEA DX,S5
MOV AH,9
INT 21H
LEA DX,BUFC
MOV AH,0AH
INT 21H
LEA SI,BUFC+1
LEA DI,BUFD
MOV CH,0
MOV CL,[SI]
INC SI
NET:MOV AL,[SI]
CALL HIGHTOLOW
MOV [DI],AL
INC SI
INC DI
LOOP NET
MOV BYTE PTR[DI],'$'
LEA DX,JG
MOV AH,9
INT 21H
LEA DX,BUFD
MOV AH,9
INT 21H
RET
CAPITAL_SMALL ENDP
BINHEX PROC NEAR
XOR AX,AX
MOV BX,AX
DISP S7
MOV SI,4
NEWCHAR1:MOV AH,1
INT 21H
SUB AL,30H
JL ROTATE1
CMP AL,10D
JL ADD_TO1
JMP ROTATE1
ADD_TO1: MOV CL,1	
SHL BX,CL
MOV AH,0
ADD BX,AX
JMP NEWCHAR1
ROTATE1:DISP S8
ROTATE1_1: MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINT1
ADD AL,7H
PRINT1:MOV DL,AL
MOV AH,2
INT 21H
DEC SI
JNZ ROTATE1_1
RET
BINHEX ENDP
HEXBIN PROC NEAR
MOV BX,0
DISP S9
MOV SI,16
NEWCHAR2:MOV AH,1
INT 21H
SUB AL,30H
JL ROTATE2
CMP AL,10D
JL ADD_TO2
SUB AL,27H
CMP AL,0AH
JL PRINT2
CMP AL,10H
JGE PRINT2
ADD_TO2:MOV CL,4
SHL BX,CL
MOV AH,0
ADD BX,AX
JMP NEWCHAR2
ROTATE2: CALL CRLF 
       DISP S0
PRINT2:ROL BX,1
MOV AL,BL
AND AL,1H
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
DEC SI
JNZ PRINT2
RET
HEXBIN ENDP
DECBIN PROC NEAR
DISP SA
MOV BX,0
NEWCHAR3:MOV AH,1
INT 21H
SUB AL,30H
JL PRINT3
CMP AL,9D
JG PRINT3
CBW
XCHG AX,BX
MOV CX ,10D
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR3
PRINT3:DISP S0
ROL BX,1
MOV AL,BL
AND AL,1H
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
DEC SI
JNZ PRINT3
RET
DECBIN ENDP
BINDEC PROC NEAR
DISP S7
NEWCHAR4:MOV AH,1
INT 21H
SUB AL,30H
JL PRINT4
CMP AL,10D
JL ADD_TO4
JMP PRINT4
ADD_TO4:MOV CL,1
SHL BX,CL
MOV AH,0
ADD BX,AX
JMP NEWCHAR4
PRINT4:DISP SB
MOV CX,10000D
CALL DEC_DIV4
MOV CX,1000
CALL DEC_DIV4
MOV CX,100
CALL DEC_DIV4
MOV CX,10
CALL DEC_DIV4
MOV CX,1
CALL DEC_DIV4
RET
DEC_DIV4 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
DEC_DIV4 ENDP
BINDEC ENDP
HEXDEC PROC NEAR
DISP S9
MOV BX,0
NEWCHAR5:MOV AH,1
INT 21H
SUB AL,30H
JL NEXT5
CMP AL,10D
JL ADD_TO5
SUB AL,27H
CMP AL,0AH
JL NEXT5
CMP AL,10H
JGE NEXT5
ADD_TO5:MOV CL,4
SHL BX,CL
MOV AH,0
ADD BX,AX
JMP NEWCHAR5
NEXT5:DISP SB
MOV CX,10000D
CALL DEC_DIV5
MOV CX,1000D
CALL DEC_DIV5
MOV CX,100D
CALL DEC_DIV5
MOV CX,10D
CALL DEC_DIV5
MOV CX,1D
CALL DEC_DIV5
RET
HEXDEC ENDP
DEC_DIV5 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
DEC_DIV5 ENDP
DECHEX PROC NEAR
DISP SA
MOV BX,0
NEWCHAR6:MOV AH,1
INT 21H
SUB AL,30H
JL NEXT6
CMP AL,9D
JG NEXT6
CBW
XCHG AX,BX
MOV CX,10D
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR6
NEXT6:MOV SI,4
DISP S8
MOV CH,4
ROTATE6:MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINT6
ADD AL,7H
PRINT6:MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE6
RET
DECHEX ENDP
CRLF PROC NEAR
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
MOV AH,2
INT 21H
RET
CRLF ENDP
CODE ENDS
    END START
