这个问题还是没有解决!
gyhou 2005-06-22 05:05:05 1.输入一个整数n(0<n<5),再输入一个字符('+','-','*','/'),最后输入再输入一个整数m(0<m<5),要求输入输出前均有提示信息,且独占一行。
2.若第二个字符为‘+’‘-’‘*’‘/’则做相应的加减乘除操作, 否则提示符号有错误!
代码:
DATA SEGMENT
MESS1 DB 'please input 2 dec nums(0--5):',0AH,0DH,'$'
MESS2 DB 'please input 1 ysfh:',0AH,0DH,'$'
MESS3 DB 'output the result(in dec):','$'
MESS4 DB 'not right!','$'
;M5 DB 'the number less 0,please input again!',0AH,0DH,'$'
M6 DB 'the number more 5,please input again!',0AH,0DH,'$'
NUM1 DB ?
NUM2 DB ?
YSF DB ?
RESULT DB ?
NOZERO DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
DD1: LEA DX,MESS1
CALL PROMPT
CALL PUTINDEC
CMP BL,0 ; ;*+
JL ERR1 ; ;*+
CMP BL,5 ; ;*+
JA ERR2 ; ;*+
MOV NUM1,BL
CALL CRLF
CALL PUTINDEC
CMP BL,0 ; ;*+
JL ERR1 ; ; *+
CMP BL,5 ; ;*+
JA ERR2 ; ;*+
MOV NUM2,BL
CALL CRLF
ERR1: ; ;*+
LEA DX,M5
CALL PROMPT
JMP DD1
ERR2: ; ;*+
LEA DX,M6
CALL PROMPT
JMP DD1
LEA DX,MESS2
CALL PROMPT
MOV AH,1
INT 21H
PUSH AX
CALL CRLF
POP AX
;cmp al,'q'
;je exit
CMP AL,'+'
JE ADDF
CMP AL,'-'
JE SUBF
CMP AL,'*'
JE MULF
CMP AL,'/'
JE DIVF
LEA DX,MESS3
CALL PROMPT
CALL CRLF
LEA DX,MESS4
CALL PROMPT
CALL CRLF
JMP EXIT
ADDF:
LEA DX,MESS3
CALL PROMPT
CALL CRLF
MOV AL,NUM1
ADD AL,NUM2
MOV RESULT,AL
MOV BL,RESULT
CALL PUTOUTDEC
JMP EXIT
SUBF:
LEA DX,MESS3
CALL PROMPT
CALL CRLF
MOV AL,NUM1
SUB AL,NUM2
MOV RESULT,AL
MOV BL,RESULT
TEST BL,BL ;
JNS JX ;
NEG BL ;
MOV DL,'-' ;
MOV AH,2 ;
INT 21H ;
JX: CALL PUTOUTDEC
JMP EXIT
MULF:
LEA DX,MESS3
CALL PROMPT
CALL CRLF
MOV AL,NUM1
MOV BH,NUM2
MUL BH
MOV RESULT,AL
MOV BL,RESULT
CALL PUTOUTDEC
JMP EXIT
DIVF:
LEA DX,MESS3
CALL PROMPT
CALL CRLF
MOV AL,NUM1
MOV AH,0
MOV BH,NUM2
DIV BH
MOV RESULT,AL
MOV BL,RESULT
CALL PUTOUTDEC
EXIT:
MOV AH,4CH
INT 21H
PROMPT PROC
MOV AH,9
INT 21H
RET
PROMPT ENDP
CRLF PROC
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL ,0DH
MOV AH,2
INT 21H
RET
CRLF ENDP
PUTINDEC PROC
PUSH CX
MOV BL,0
PPP:
MOV AH,1
INT 21H
CMP AL,0DH
JE PUTINEXIT
SUB AL,30H
XCHG AL,BL
MOV BH,10
MUL BH
XCHG AL,BL
ADD BL,AL
JMP PPP
PUTINEXIT: POP CX
RET
PUTINDEC ENDP
PUTOUTDEC PROC
PUSH CX
MOV NOZERO,0
MOV CL,100
CALL MAIN
MOV CL,10
CALL MAIN
MOV CL,1
CALL MAIN
CMP NOZERO,0
JNE LL
MOV DL,30H
MOV AH,2
INT 21H
LL: POP CX
RET
MAIN PROC
MOV AL,BL
MOV AH,0
DIV CL
MOV BL,AH
MOV DL,AL
CMP DL,0
JNE LLL
CMP NOZERO,0
JNE LLL
JMP LL2
LLL:
MOV NOZERO,1
ADD DL,30H
MOV AH,2
INT 21H
LL2:
RET
MAIN ENDP
PUTOUTDEC ENDP
CODE ENDS
END START
zara兄:我按照你提示该过了,还是有这样的提示:the number more 5,please input again!
怎么会这样呢?