这个问题还是没有解决!

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!
怎么会这样呢?
...全文
59 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdsjkk 2005-06-22
  • 打赏
  • 举报
回复
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
jmp dd2


ERR1: ; ;*+
LEA DX,M5
CALL PROMPT
JMP DD1
ERR2: ; ;*+
LEA DX,M6
CALL PROMPT
JMP DD1
dd2:
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

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧