汇编课程设计报告四则运算.docx

上传人:b****5 文档编号:3835484 上传时间:2022-11-25 格式:DOCX 页数:16 大小:130.33KB
下载 相关 举报
汇编课程设计报告四则运算.docx_第1页
第1页 / 共16页
汇编课程设计报告四则运算.docx_第2页
第2页 / 共16页
汇编课程设计报告四则运算.docx_第3页
第3页 / 共16页
汇编课程设计报告四则运算.docx_第4页
第4页 / 共16页
汇编课程设计报告四则运算.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

汇编课程设计报告四则运算.docx

《汇编课程设计报告四则运算.docx》由会员分享,可在线阅读,更多相关《汇编课程设计报告四则运算.docx(16页珍藏版)》请在冰豆网上搜索。

汇编课程设计报告四则运算.docx

汇编课程设计报告四则运算

课程设计报告

一.课程设计的性质和目的

性质:

《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。

目的要求:

进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二.课程设计的要求

1.遵循模块化、结构化的程序设计方法。

2.要求程序必须正确。

3.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

4.要求程序结构合理,语句使用得当。

5.适当追求编程技巧和程序运行效率。

三.主要仪器设备及软件

计算机、MASM汇编软件。

四.设计题目

四则运算:

从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。

并要求程序能反复执行直道对“还要继续吗?

(y/n)”之类的提示回答“n”或“N”为止。

五.题目分析

根据题目的要求,可以把整个源程序大致划分为几个基本结构,程序加法、减法、乘法、除法、显示结果五个部分,首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?

,用户输入y/n执行继续计算和退出操作

六.运行结果

输入要计算的式子,按等号输出结果,计算机提示是否继续输入,输入字符y,继续输入,键入n退出程序,如果键入字符为其他,则反回提示输入

如图:

 

七.程序流程

主程序流程

Y

N

Y

Y

N

Y

N

N

Y

八.代码

根据题目的要求,可以把整个源程序大致划分为几个基本结构,程序加法、减法、乘法、除法、显示结果五个部分

1、源程序:

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

NEXTLINEMACRO;显示换行宏

MOVAH,2

MOVDL,10

INT21H

MOVAH,2

MOVDL,13

INT21H

ENDM

START:

MOVAX,DATAS

MOVDS,AX

MOVBX,0

INPUT1:

MOVAH,1;从键盘输入一个字符

INT21H

CMPAL,'+';判断是否为+

JZADDITION

CMPAL,'-';判断是否为-

JZSUBTRATION

CMPAL,'*';判断是否为*

JZMULTIPLICATION

CMPAL,'/'判断是否为/

JZDIVISION

CMPAL,'='判断是否为=

JZRESULT

CMPAL,58判断输入是否为数字

JSL1

JMPINPUT1

L1:

CMPAL,47节

JNSL2

JMPINPUT1

L2:

SUBAL,48如果输入为数字,将数值计入BX

MOVCL,AL

MOVAX,BX

MOVCH,10

MULCH

ADDAL,CL

MOVBX,AX

JMPINPUT1

ADDITION:

输入+后,进入加法运算

MOVDX,0

INPUT2:

MOVAH,1从键盘输入字符

INT21H

CMPAL,'+'判断是否为+

JZL23

CMPAL,'-'判断是否为-

JZL24

CMPAL,'*'判断是否为*

JZL25

CMPAL,'/'判断是否为/

JZL26

CMPAL,'='判断是否为=

JZL27

CMPAL,58判断是否为数字

JSL21

JMPINPUT2

L21:

CMPAL,47

JNSL22

JMPINPUT2如果不是数字,则跳转到INPUT2

L22:

SUBAL,48将输入字符转换为数值

MOVCL,AL

MOVAX,DX

MOVCH,10

MULCH

ADDAL,CL

MOVDX,AX

JMPINPUT2

L23:

ADDBX,DX执行加运算

JMPADDITION

L24:

ADDBX,DX

JMPSUBTRATION

L25:

ADDBX,DX

JMPMULTIPLICATION

L26:

ADDBX,DX

JMPDIVISION

L27:

ADDBX,DX

JMPRESULT

SUBTRATION:

如果输入-,则执行减法

MOVDX,0

INPUT3:

MOVAH,1

INT21H

CMPAL,'+'判断是否为+

JZL33

CMPAL,'-'判断是否为-

JZL34

CMPAL,'*'判断是否为*

JZL35

CMPAL,'/'判断是否为/

JZL36

CMPAL,'='判断是否为=

JZL37

CMPAL,58判断是否为数字

JSL31

JMPINPUT3

L31:

CMPAL,47

JNSL32

JMPINPUT3

L32:

SUBAL,48将字符转换为数值

MOVCL,AL

MOVAX,DX

MOVCH,10

MULCH

ADDAL,CL

MOVDX,AX

JMPINPUT3

L33:

SUBBX,DX执行减法操作

JMPADDITION

L34:

SUBBX,DX

JMPSUBTRATION

L35:

SUBBX,DX

JMPMULTIPLICATION

L36:

SUBBX,DX

JMPDIVISION

L37:

SUBBX,DX

JMPRESULT

MULTIPLICATION:

MOVDX,0

INPUT4:

MOVAH,1

INT21H

判断是否为+

判断是否为-

CMPAL,'+'

JZL43

CMPAL,'-'

JZL44

CMPAL,'*'判断是否为*

JZL45

CMPAL,'/'判断是否为/

JZL46

CMPAL,'='判断是否为=

JZL47

CMPAL,58判断是否为数字

JSL41

JMPINPUT4

L41:

CMPAL,47

JNSL42

JMPINPUT4

L42:

SUBAL,48将字符转换为数值

MOVCL,AL

MOVAX,DX将字输入数字加入数值

MOVCH,10

MULCH

ADDAL,CL

MOVDX,AX

JMPINPUT4

L43:

MOVAX,BX将BX移入AX

MULDX与DX中的数进行乘运算

MOVBX,AX将AX中的数值返回BX

JMPADDITION

L44:

MOVAX,BX将BX移入AX

MULDX与DX中的数进行乘运算

MOVBX,AX将AX中的数值返回BX

JMPSUBTRATION

L45:

MOVAX,BX将BX移入AX

MULDX与DX中的数进行乘运算

MOVBX,AX将AX中的数值返回BX

JMPMULTIPLICATION

L46:

MOVAX,BX将BX移入AX

MULDX与DX中的数进行乘运算

MOVBX,AX将AX中的数值返回BX

JMPDIVISION

L47:

MOVAX,BX将BX移入AX

MULDX与DX中的数进行乘运算

MOVBX,AX将AX中的数值返回BX

JMPRESULT

DIVISION:

MOVDX,0

INPUT5:

MOVAH,1

INT21H

判断是否为+

判断是否为-

判断是否为*

判断是否为/

判断是否为=

判断是否为数字

CMPAL,'+'

JZL53

CMPAL,'-'

JZL54

CMPAL,'*'

JZL55

CMPAL,'/'

JZL56

CMPAL,'='

JZL57

CMPAL,58

JSL51

JMPINPUT5

L51:

CMPAL,47

JNSL52

JMPINPUT5

L52:

SUBAL,48

MOVCL,AL

MOVAX,DX

MOVCH,10

MULCH

ADDAL,CL

MOVDX,AX

JMPINPUT5

L53:

MOVAX,BX

DIVDX

MOVAH,0

MOVBX,AX

JMPADDITION

L54:

MOVAX,BX

DIVDL

MOVAH,0

MOVBX,AX

JMPSUBTRATION

L55:

MOVAX,BX

DIVDL

MOVAH,0

MOVBX,AX

JMPMULTIPLICATION

L56:

MOVAX,BX

DIVDL

MOVAH,0

MOVBX,AX

JMPDIVISION

L57:

MOVAX,BX

DIVDL

MOVAH,0

MOVBX,AX

JMPRESULT

RESULT:

显示结果

MOVCH,10

MOVCL,100

R1:

将BX中的计算结果以十进制输出

MOVAX,BX

DIVCL

MOVDL,AL

MOVDH,AH

MOVAL,AH

MOVAH,0

MOVBX,AX

ADDDL,48

MOVAH,2

INT21H

MOVAH,0

MOVAL,CL

DIVCH

MOVCL,AL

CMPCL,1

JZR2

JMPR1

R2:

MOVDL,DH

ADDDL,48

MOVAH,2

INT21H

S2:

NEXTLINE

LEADX,STRING询问是否继续输入

MOVAH,9

INT21H

MOVAH,1

INT21H

CMPAL,'y'输入y则跳转到S1

JES1

CMPAL,'n'输入n则跳转到S3,即结束程序

JES3

JNES2

S3:

MOVAH,4CH

INT21H

CODESENDS

九.心得体会

程序的主要功能是实现四则运算,整个程序中主要分为,输入算式,加法,减法,乘法,除法和以十进制显示结果这几个部分

本程序基本实现了四则运算的功能,但还没能实现带有括号的四则运算,还有在除法运算中不能运算较大的数,会产生溢出现象

一开始的时候自己编出来的程序有很多问题,尤其是在循环程序上,因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行。

由于能力有限,程序还是有不完美的地方。

这次的综合实验让我对汇编有了更深刻的认识,对各种指令有了进一步的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1