这个问题还是没有解决!

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!
怎么会这样呢?
...全文
90 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
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别急,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着急. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以

21,498

社区成员

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

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