你匿名无法私信,增加了2个新函数INDECS OUTDECS,大多在原函数上改的,改的地方有';'.
DATA SEGMENT
MENU DB 'Please Input your Choice:',0dh,0ah
db '1:Bin -->Dec',0dh,0ah
db '2:Bin -->Hex',0dh,0ah
db '3:Dec -->Bin',0dh,0ah
db '4:Dec -->Hex',0dh,0ah
db '5:Hex -->Dec',0dh,0ah
db '6:Hex -->Bin',0dh,0ah
db '0:Exit. $',0dh,0ah
mess1 db 'Please input a Binnumber:$'
mess2 db 'Please input a Decnumber:$'
mess3 db 'Please input a Hexnumber:$'
mess4 db 'Output Bin is: $'
mess5 db 'Output Dec is: $'
mess6 db 'Output Hex is: $'
TABLE DW L0,L1,L2,L3,L4,L5,L6
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LKS:LEA DX,MENU
MOV AH,09H
INT 21H
CALL CRLF ;
MOV AH,01H
INT 21H
CMP AL,39H
JBE LK1
SUB AL,7
LK1:AND AL,0FH
LEA SI,TABLE
MOV AH,0
SHL AX,1
ADD SI,AX
JMP [SI]
L1:CALL INBIN
CALL CRLF
CALL OUTDEC
CALL CRLF
JMP LKS
L2:CALL INBIN
CALL CRLF
CALL OUTHEX
CALL CRLF
JMP LKS
L3:CALL INDEC
CALL CRLF
CALL OUTBIN
CALL CRLF
JMP LKS
L4:CALL INDECS ;
CALL CRLF
CALL OUTHEX
CALL CRLF
JMP LKS
L5:CALL INHEX
CALL CRLF
CALL OUTDECS ;
CALL CRLF
JMP LKS
L6:CALL INHEX
CALL CRLF
CALL OUTBIN
CALL CRLF
JMP LKS
L0:RET
MAIN ENDP
CRLF PROC
MOV AH,02H
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
RET
CRLF ENDP
INBIN PROC
LEA DX,MESS1
MOV AH,09H
INT 21H
MOV BX,0
INBL1:MOV AH,01H
INT 21H
CMP AL,0DH
JZ INBEXIT
AND AL,01H
SHL BX,1
OR BL,AL
JMP INBL1
INBEXIT:RET
INBIN ENDP
INDEC PROC
LEA DX,MESS2
MOV AH,09H
INT 21H
MOV BX,0
INDL1:MOV AH,01H
INT 21H
CMP AL,0DH
JZ INDEXIT
SUB AL,30H
CMP AL,9
JBE INDL2
SUB AL,7
INDL2:MOV AH,0
XCHG AX,BX
MOV CX,10
MUL CX
ADD BX,AX
JMP INDL1
INDEXIT:RET
INDEC ENDP
INHEX PROC
LEA DX,MESS3
MOV AH,09H
INT 21H
MOV BX,0
IHL1:MOV AH,01H
INT 21H
CMP AL,0DH
JZ IHEXIT
SUB AL,30H
CMP AL,9
JBE IHL2
SUB AL,7
IHL2:MOV CL,4
SHL BX,CL
OR BL,AL
JMP IHL1
IHEXIT:RET
INHEX ENDP
OUTBIN PROC
LEA DX,MESS4
MOV AH,09H
INT 21H
MOV CX,16
OBL1:ROL BX,1
MOV DL,BL
AND DL,01H
OR DL,30H
MOV AH,02H
INT 21H
LOOP OBL1
RET
OUTBIN ENDP
OUTDEC PROC
LEA DX,MESS5
MOV AH,09H
INT 21H
PUSH BX
MOV AX,BX
MOV DX,0;余数
MOV CX,10000
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV DX,0
MOV CX,1000
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV DX,0
MOV CX,100
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV CL,10
DIV CL
MOV BL,AH
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
OR DL,30H
MOV AH,02H
INT 21H
POP BX
RET
OUTDEC ENDP
OUTHEX PROC
LEA DX,MESS6
MOV AH,09H
INT 21H
MOV CX,4
OHL1:ROL BX,1
ROL BX,1
ROL BX,1
ROL BX,1
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,39H
JBE OHL2
ADD DL,7
OHL2:MOV AH,02H
INT 21H
LOOP OHL1
RET
OUTHEX ENDP
INDECS PROC
LEA DX,MESS2
MOV AH,09H
INT 21H
MOV BX,0
INDLS1:MOV AH,01H
INT 21H
CMP AL, '-' ;
JNZ IDL2 ;
MOV BP, 1 ;
JMP INDLS1 ;
IDL2: ;
CMP AL,0DH
JZ INDEXITS
SUB AL,30H
CMP AL,9
JBE INDLS2
SUB AL,7
INDLS2:MOV AH,0
XCHG AX,BX
MOV CX,10
MUL CX
ADD BX,AX
JMP INDLS1
INDEXITS: ;
CMP BP, 1 ;
JNZ INDEXITS1 ;
XOR BX, 0FFFFH ;
ADD BX, 1 ;
XOR BP, BP ;
INDEXITS1: ;
RET
INDECS ENDP
OUTDECS PROC
LEA DX,MESS5
MOV AH,09H
INT 21H
CMP BX, 8000H ;
JB OTL1 ;
MOV DL, '-' ;
MOV AH, 2 ;
INT 21H ;
MOV AX, 0FFFFH ;
SUB AX, BX ;
ADD AX, 1 ;
XCHG AX, BX ;
OTL1: ;
PUSH BX
MOV AX,BX
MOV DX,0;余数
MOV CX,10000
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV DX,0
MOV CX,1000
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV DX,0
MOV CX,100
DIV CX
MOV BX,DX
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV AX,BX
MOV CL,10
DIV CL
MOV BL,AH
MOV DL,AL
OR DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
OR DL,30H
MOV AH,02H
INT 21H
POP BX
RET
OUTDECS ENDP
CODE ENDS
END MAIN