开发工具:
文件大小: 28kb
下载次数: 0
上传时间: 2008-12-31
详细说明: DSEG SEGMENT STR1 DB 0AH,0DH, '********************************************$' STR2 DB 0AH,0DH, '** **$' STR3 DB 0AH,0DH, '** welcome you ! **$' STR4 DB 0AH,0DH, '** **$' STR5 DB 0AH,0DH, '** this is programme of sizeyunshuan **$' STR6 db 0AH,0DH, '** **$' STR7 db 0AH,0DH, '** rang(-32768 to 32767) **$' STR8 DB 0AH,0DH, '** press p to exit ! **$' STR9 DB 0AH,0DH, '** maker:fishosoul·yu **$' STR10 DB 0AH,0DH, '********************************************',0AH,0DH,'$' SIGN1 DW 0 ;判断数字是否输入完毕 SIGN2 DW 0 ;判断括号是否配对 SIGN3 DW 0 ; NUMB DW 20H DUP(0) ;保存输入的数值 MARK DB 'A' ;保存输入的运算符 DB 10H DUP(0) ; ERROR DB 'YOUR INPUT ARE WRONG$' DSEG ENDS DISP MACRO M LEA DX,M MOV AH,9 INT 21H ENDM CHOICE MACRO ASC1,HAO1,HH ;宏定义,给运算符赋权值 CMP AL,ASC1 ; JNE OTHER&HAO1 ; MOV CH,HH ; JMP OTHER7 ; ENDM CSEG SEGMENT ; ASSUME CS:CSEG,DS:DSEG START: CALL CLEAR MOV AX,DSEG ; MOV DS,AX ; LEA DI,NUMB ; LEA SI,MARK ; DISP STR1 DISP STR3 DISP STR4 DISP STR5 DISP STR6 DISP STR7 DISP STR8 DISP STR9 DISP STR10 ;CALL CLEAR CALL CR ;disp error MOV AX,0 MOV DX,0 MOV BX,0 MOV CX,0 STA1 : CALL CR INPUT: MOV AH,1 ; INT 21H ; CMP AL,'P' JE J_SHU0 CMP AL,'p' JE J_SHU0 CMP AL,'=' ; JE PD ;是等号,进一步判断输入括号是否配对 CMP AL,28H ; JB INPUT ; CMP AL,39H ; JA INPUT ; CMP AL,2FH ;判断是数字还是符号 JBE JUD ;是符号转入响应操作 INC WORD PTR SIGN1 ;将数字标志位加一 SUB AL,30H ;将asc码转16进制 MOV AH,0 ; XCHG AX,[DI] ; MOV BX,10 ; MUL BX ; XCHG AX,[DI] ; ADD [DI],AX ; JMP INPUT ; PD: CMP WORD PTR SIGN2,0 ;判断配对标志位 JE JUD ; JMP BC ; JUD: CMP WORD PTR SIGN1,0 ;判断数值指针是否已经下移一位 JE FUH1 ; ADD DI,2 ; MOV WORD PTR SIGN1,0; FUH1: CALL ADVANCE ;判定优先级, CMP CH,5 ;判断输入的是否是左括号 JNE PY ;不是则判断输入的是否是右括号 INC WORD PTR SIGN2 ;是左括号,括号标志位1 MOV WORD PTR SIGN3,1; PY: CMP CH,1 ;判断输入的是否是右括号 JNE AGAIN ; DEC WORD PTR SIGN2 ;是右括号,括号标志位减1 AGAIN: CMP BYTE PTR[SI],'A';判断运算符存储区是否为空 JE SAVE ; CMP CH,[SI] ; JA SAVE ; CMP BYTE PTR[SI],'(' JNE YIDO DEC SI JMP INPUT YIDO: DEC SI ; MOV CL,[SI] ; CALL MATCH ;判断是什么运算符并进行相应的计算 ;DEC SI ; JMP AGAIN ; Z_Z: JMP INPUT J_SHU0: JMP J_SHU ; SAVE: CMP CH,0 ; JE OVER1 ; CMP CH,1 ; JE Z_Z ;“)”不保存,输入下一个数 INC SI ; MOV [SI],AL ; INC SI ; CMP CH,5 ; JNE GO_ON ; MOV CH,2 ;改变(的权值 GO_ON: MOV [SI],CH ; JMP INPUT ; BC: LEA DX,ERROR ; MOV AH,9 ; INT 21H ; JMP J_SHU ; OVER1: JMP OVER ; MATCH PROC ;子程序,进行相应的运算 PUSH AX ; XOR AX,AX XOR BX,BX CMP CL,2AH ;乘法运算 JNE NEXT1 SUB DI,2 XCHG BX,[DI] SUB DI,2 XCHG AX,[DI] IMUL BX MOV [DI],AX ADD DI,2 JMP FINISH NEXT1: CMP CL,2FH ;除法运算 JNE NEXT2 SUB DI,2 XCHG BX,[DI] SUB DI,2 XCHG AX,[DI] CWD IDIV BX MOV [DI],AX ADD DI,2 JMP FINISH NEXT2: CMP CL,2BH ;加法运算 JNE NEXT3 SUB DI,2 XCHG BX,[DI] SUB DI,2 ADD [DI],BX ADD DI,2 JMP FINISH NEXT3: CMP CL,2DH ;减法运算 JNE FINISH SUB DI,2 XCHG BX,[DI] SUB DI,2 SUB [DI],BX ADD DI,2 FINISH: POP AX RET MATCH ENDP ADVANCE PROC CHOICE 28H,1,5 ;( OTHER1: CHOICE 29H,2,1 ;) OTHER2: CHOICE 2AH,3,4 ;* OTHER3: CHOICE 2FH,4,4 ;/ OTHER4: CHOICE 2BH,5,3 ;+ OTHER5: CHOICE 2DH,6,3 ;- OTHER6: CHOICE 3DH,7,0 ;= OTHER7: RET ADVANCE ENDP ;***清屏*** clear proc near push ax push bx push cx push dx mov ah,06h mov al,00h mov ch,0 mov cl,0 mov bh,0fH mov dh,18H ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.