求用汇编语言修改下面的程序(使下面的计算器程序能够一直运行直到按esc键退出) 20
这个计算机程序现在是可以运行的,但是一旦运行一次就会按任意键退出,求改成能一直运行直到按ESC键才能退出DATASEGMENTS1DB60DUP(?),'$';存储输入的...
这个计算机程序现在是可以运行的,但是一旦运行一次就会按任意键退出,求改成能一直运行直到按ESC键才能退出
DATA SEGMENT
S1 DB 60 DUP(?),'$';存储输入的中缀表达式子
S2 DB 60 DUP(?),'$';存储后缀表达式子
N DB 10 DUP(?),'$';存储要输出的数字字符串
STORAGE DW ?,'$';存储运算结果
BUF DB 'PLEASE INPUT EXPRESSION:',0AH,0DH,'$'
BUF1 DB 0AH,0DH,'EXPRESSION ERROR!$'
DATA ENDS
STACK SEGMENT STACK
DB 40 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOVAX,DATA
MOV DS,AX
LEADX,BUF;输出字符串
MOVAH,9;BUF,提示输入表达式
INT 21H
MOV SI,0 ;输入的第一个数为负数的处理方法
MOV AH,1
INT 21H
CMP AL,'-'
JNE LL
MOVS1[SI],'0'
INC SI
LL: MOV S1[SI],AL
INC SI
LLL: MOV AH,1;循环输入表达式
INT 21H
MOVS1[SI],AL
INC SI
CMP AL,0DH
JNELLL
MOV DL,0AH
MOV AH,2
INT21H
CALLCHANGE;调用中缀转后缀子程序
CALLCALCULATE;调用计算后缀表达式子程序
NEXT :
POP AX
CMP AX,'@'
JE NEXT1
MOVSTORAGE,AX
CALLOUTPUT;调用输出运算结果子程序
NEXT1:
MOVAH,4CH
INT21H
ERROR:LEA DX,BUF1;输出字符串
MOVAH,9;BUF1,提示输入表达错误
INT 21H
JMP NEXT1
CHANGE PROCNEAR;中缀表达式转换为
MOV AH,0;后缀表达式的子程序
MOV DH,0
MOV SI,0
MOV DI,0
PUSH DI
CHA:
MOVAL,S1[SI]
INC SI
CMP AL,0DH
JE L8
CMP AL,'('
JE L1
CMP AL,'+'
JE L2
CMP AL,'-'
JE L3
CMP AL,'*'
JE L4
CMP AL,'/'
JE L5
CMP AL,')'
JE L6
CMP AL,'0'
JGE L7
JMP ERROR
超过字数了,我加在问题补充里o(╯□╰)o
晕,百度知道打不了那么多字o(╯□╰)o
http://wenku.baidu.com/view/666dcdcdda38376baf1fae0b.html
就是这个,麻烦帮忙改下QAQ 展开
DATA SEGMENT
S1 DB 60 DUP(?),'$';存储输入的中缀表达式子
S2 DB 60 DUP(?),'$';存储后缀表达式子
N DB 10 DUP(?),'$';存储要输出的数字字符串
STORAGE DW ?,'$';存储运算结果
BUF DB 'PLEASE INPUT EXPRESSION:',0AH,0DH,'$'
BUF1 DB 0AH,0DH,'EXPRESSION ERROR!$'
DATA ENDS
STACK SEGMENT STACK
DB 40 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOVAX,DATA
MOV DS,AX
LEADX,BUF;输出字符串
MOVAH,9;BUF,提示输入表达式
INT 21H
MOV SI,0 ;输入的第一个数为负数的处理方法
MOV AH,1
INT 21H
CMP AL,'-'
JNE LL
MOVS1[SI],'0'
INC SI
LL: MOV S1[SI],AL
INC SI
LLL: MOV AH,1;循环输入表达式
INT 21H
MOVS1[SI],AL
INC SI
CMP AL,0DH
JNELLL
MOV DL,0AH
MOV AH,2
INT21H
CALLCHANGE;调用中缀转后缀子程序
CALLCALCULATE;调用计算后缀表达式子程序
NEXT :
POP AX
CMP AX,'@'
JE NEXT1
MOVSTORAGE,AX
CALLOUTPUT;调用输出运算结果子程序
NEXT1:
MOVAH,4CH
INT21H
ERROR:LEA DX,BUF1;输出字符串
MOVAH,9;BUF1,提示输入表达错误
INT 21H
JMP NEXT1
CHANGE PROCNEAR;中缀表达式转换为
MOV AH,0;后缀表达式的子程序
MOV DH,0
MOV SI,0
MOV DI,0
PUSH DI
CHA:
MOVAL,S1[SI]
INC SI
CMP AL,0DH
JE L8
CMP AL,'('
JE L1
CMP AL,'+'
JE L2
CMP AL,'-'
JE L3
CMP AL,'*'
JE L4
CMP AL,'/'
JE L5
CMP AL,')'
JE L6
CMP AL,'0'
JGE L7
JMP ERROR
超过字数了,我加在问题补充里o(╯□╰)o
晕,百度知道打不了那么多字o(╯□╰)o
http://wenku.baidu.com/view/666dcdcdda38376baf1fae0b.html
就是这个,麻烦帮忙改下QAQ 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询