汇编表达式求值大作业

更新时间:2023-05-10 00:55:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《汇编语言程序设计》

综合程序设计实验报告

题 目:班 级:

姓 名: 学 号: 20112820

完成日期: 2013-11-24

一、项目简介

题目完成了对简单的加减乘除四则表达式的求值,同时能判断各种运算级括号的优先级,进行正确的运算顺序。

二、小组成员具体分工

韩亚华:完成判断优先级方法设计,以及细节的处理。

姜力比:完成输入输出函数的设计,以及各运算函数。

三、需求分析与设计

要完成四则运算表达式求值必须解决以下问题

1.如何在汇编环境下输入并保存操作数

2.如何保存运算符和比较运算符的优先级

3.如何输出计算结果

4.负数和括号的细节问题

四、代码及分析

DSEG SEGMENT

STR1 DB 0AH,0DH, 'please input the expression:("N"jump out)$'

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

START:

ASSUME CS:CSEG,DS:DSEG

CALL CLEAR

MOV AX,DSEG ;

MOV DS,AX ;

LEA DI,NUMB ;

LEA SI,MARK ;

DISP STR1

CALL CR

;disp error

MOV AX,0

MOV DX,0

MOV BX,0

MOV CX,0

STA1 : CALL CR

INPUT:

MOV AH,01 ;

INT 21H ;

CMP AL,'N'

JE J_SHU

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 ;判断数值指针是否已经下移一位

JNE FUH ;

CMP AL,'-'

JNE FUH1

MOV DX,0

MOV [DI],DX

FUH:

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-1],'('

JNE YIDO

SUB SI,2

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 OVER ;

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,01h

mov ch,0

mov cl,0

mov bh,0fH

mov dh,18H

mov dl,4FH

int 10h

mov bh,0

mov dx,0

MOV AH,02H

; MOV DL,0

INT 10H

pop dx

pop cx

pop bx

pop ax

ret

clear endp

;****回车换行****

CR PROC

PUSH AX

PUSH DX

MOV ah,2

MOV dl,0dh

INT 21H

mov ah,2

MOV dl,0ah

INT 21H

POP DX

POP AX

RET

CR ENDP

OVER:

SUB DI,2

CMP WORD PTR[DI],0

JGE W1

NEG WORD PTR[DI]

MOV DL,'-'

MOV AH,2

INT 21H

W1:

MOV BX,10000

MOV CX,5

MOV SI,0

W2:

MOV AX,[DI]

MOV DX,0

DIV BX

MOV [DI],DX

CMP AL,0

JNE W3

CMP SI,0

JNE W3

CMP CX,1

JE W3

JMP W4

W3:

MOV DL,AL

ADD DL,30H

MOV AH,2

INT 21H

MOV SI,1

W4:

MOV AX,BX

MOV DX,0

MOV BX,10

DIV BX

MOV BX,AX

LOOP W2

;CALL CR

J_SHU1:

MOV WORD PTR[DI+2],0

CALL CR

LEA DI,NUMB ;

LEA SI,MARK

JMP STA1

J_SHU:

MOV AH,4CH

INT 21H

CSEG ENDS

END START

五、总结

在解决比较复杂的问题时一个人往往很难完成。这时就需要团队的合作,这其中明确的分工和及时的沟通交流是至关重要的。好的分工能提高团队的效率避免重复的工资,及时的交流能提前发现并解决问题,避免大家的偏离目标和出现重大问题。

本文来源:https://www.bwwdw.com/article/4jxe.html

Top