主题:[讨论][color=FF00FF]自己写的任意进制转化程序[/color]
[color=FF00FF]自己写的任意进制转化程序[/color]
暂时是实现8位2进制到64进制以内的转化,或者是64以内其他进制到16进制的转化,本来是转化为2进制的,觉得麻烦,就让它先转化为16进制了,大家多提意见.
DATA SEGMENT
JINZHI DB 20
DB ?
DB 20 DUP(?)
RULE DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,?,?,?,?,?,?,0AH,0BH,0CH,0DH,0EH,0FH
DB 10H,11H,12H,13H,?,?,?,?,?,?,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,?,?,?,?,?,?,1EH,1FH
DB 20H,21H,22H,23H,24H,25H,26H,27H,?,?,?,?,?,?,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH
DB 30H,31H,?,?,?,?,?,?,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,?,?,?,?,?,?,3CH,3DH,3EH,3FH,40H
GUARD DB ?
OPTI DB ?
RESU DB 20 DUP(?)
STR DB 'BINARY TO OTHER(INPUT:1)-----OTHER TO BINARY(INPUT:2)$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,STR
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
AND AL,0FH
MOV [OPTI],AL
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
LEA DX,JINZHI
MOV AH,0AH
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV AH,01H
INT 21H
MOV BH,AL
MOV AH,01H
INT 21H
MOV BL,AL
AND BX,0F0FH
MOV CL,4
SAL BH,CL
OR BH,BL
MOV AL,BH
MOV BX,OFFSET RULE
XLAT
MOV DH,AL
MOV [GUARD],DH
CMP [OPTI],01H
JZ T2
CALL OTHER2B
JMP EXT
T2: CALL B2OTHER
JMP EXT
OTHER2B PROC
LEA SI,JINZHI+2
MOV AH,[SI]
AND AH,0FH
MOV AL,AH
MUL DH
INC SI
MOV BL,[SI]
AND BL,0FH
MOV BH,00H
AND DX,0
ADD AX,BX
ADC DX,0
MOV WORD PTR [RESU],AX
MOV WORD PTR [RESU+2],DX
RET
OTHER2B ENDP
B2OTHER PROC
CLD
LEA SI,JINZHI+2
LEA DI,JINZHI+2
LODSB
MOV CL,7
AND AL,0FH
SHL AL,CL
STOSB
DEC CL
CONT: LODSB
AND AL,0FH
SHL AL,CL
STOSB
DEC CL
JNZ CONT
LODSB
AND AL,0FH
STOSB
LEA SI,JINZHI+2
MOV CX,7
MOV AL,[SI]
INC SI
P: OR AL,[SI]
INC SI
LOOP P
LEA DI,RESU
CHU: AND AH,00H
DIV DH
MOV [DI],AH
INC DI
CMP AL,DH
JA CHU
MOV [DI],AL
RET
B2OTHER ENDP
EXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
暂时是实现8位2进制到64进制以内的转化,或者是64以内其他进制到16进制的转化,本来是转化为2进制的,觉得麻烦,就让它先转化为16进制了,大家多提意见.
DATA SEGMENT
JINZHI DB 20
DB ?
DB 20 DUP(?)
RULE DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,?,?,?,?,?,?,0AH,0BH,0CH,0DH,0EH,0FH
DB 10H,11H,12H,13H,?,?,?,?,?,?,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,?,?,?,?,?,?,1EH,1FH
DB 20H,21H,22H,23H,24H,25H,26H,27H,?,?,?,?,?,?,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH
DB 30H,31H,?,?,?,?,?,?,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,?,?,?,?,?,?,3CH,3DH,3EH,3FH,40H
GUARD DB ?
OPTI DB ?
RESU DB 20 DUP(?)
STR DB 'BINARY TO OTHER(INPUT:1)-----OTHER TO BINARY(INPUT:2)$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,STR
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
AND AL,0FH
MOV [OPTI],AL
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
LEA DX,JINZHI
MOV AH,0AH
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV AH,01H
INT 21H
MOV BH,AL
MOV AH,01H
INT 21H
MOV BL,AL
AND BX,0F0FH
MOV CL,4
SAL BH,CL
OR BH,BL
MOV AL,BH
MOV BX,OFFSET RULE
XLAT
MOV DH,AL
MOV [GUARD],DH
CMP [OPTI],01H
JZ T2
CALL OTHER2B
JMP EXT
T2: CALL B2OTHER
JMP EXT
OTHER2B PROC
LEA SI,JINZHI+2
MOV AH,[SI]
AND AH,0FH
MOV AL,AH
MUL DH
INC SI
MOV BL,[SI]
AND BL,0FH
MOV BH,00H
AND DX,0
ADD AX,BX
ADC DX,0
MOV WORD PTR [RESU],AX
MOV WORD PTR [RESU+2],DX
RET
OTHER2B ENDP
B2OTHER PROC
CLD
LEA SI,JINZHI+2
LEA DI,JINZHI+2
LODSB
MOV CL,7
AND AL,0FH
SHL AL,CL
STOSB
DEC CL
CONT: LODSB
AND AL,0FH
SHL AL,CL
STOSB
DEC CL
JNZ CONT
LODSB
AND AL,0FH
STOSB
LEA SI,JINZHI+2
MOV CX,7
MOV AL,[SI]
INC SI
P: OR AL,[SI]
INC SI
LOOP P
LEA DI,RESU
CHU: AND AH,00H
DIV DH
MOV [DI],AH
INC DI
CMP AL,DH
JA CHU
MOV [DI],AL
RET
B2OTHER ENDP
EXT: MOV AH,4CH
INT 21H
CODE ENDS
END START