汇编 简单计算器设计 课设Word文档下载推荐.docx
- 文档编号:16135745
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:23
- 大小:88.50KB
汇编 简单计算器设计 课设Word文档下载推荐.docx
《汇编 简单计算器设计 课设Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编 简单计算器设计 课设Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
用汇编语言编程设计一个简单的计算器,实现两个运算数的键盘输入和加减乘除运算,并显示运算结果。
通过设计,掌握键盘输入、屏幕显示和算术运算指令的应用,进一步提高综合运用知识的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
(1)要求键盘输入2位十进制数,进行加减乘除运算,并在屏幕上显示出运算结果。
(2)选择方案,画出流程图。
(3)编写汇编语言源程序,并调试。
(4)写出设计说明书。
3.设计工作任务及工作量的要求
(1)查阅资料,确定设计方案
对任意给定的正确四则运算表达式,能按照括号、加减乘除计算的优先级,正确计算其结果值并输出。
且能计算的正确数据范围为16位无符号数,即结果只能在0~65535之间,否则错误。
(2)画出程序流程图
(3)编写并调试汇编语言源程序
(4)撰写课程设计说明书
(5)心得体会
4.主要参考文献:
1《汇编语言》清华大学出版社王爽编
2《IBM-PC汇编语言程序设计》清华大学出版社
5.设计成果形式及要求:
课程设计说明书1份程序流程图1份程序清单1份
6.工作计划及进度:
起迄日期
工作内容
11年6月20日~6月21日
6月21日~6月22日
6月22日~6月23日
6月23日~6月24日
6月24日
查阅资料,确定设计方案
画出流程图
编写并调试程序
撰写课程设计说明书
课程设计答辩
系主任审查意见:
签字:
年月日
汇编原理
课程设计说明书
学生姓名:
张欣宇
学院:
专业:
题目:
键盘和显示器设计
指导老师
张艳兵
职称
讲师
2011年6月24日
设计目的:
设计要求:
编写汇编语言源程序,并调试、写出设计说明书。
设计过程:
在DOS下进入masm的目录,用masm程序将编辑好的asm文件编译输出目标文件obj文件,用link程序把obj文件连接生成exe文件后,直接运行该可执行文件进入该程序的界面,提示输入正确的表达式,以等号结束,程序给出正确的结果。
输入的表达式中只能含有加减乘除及数字括号,最后以等号结束,如果输入其它字符,程序会给出相应的提示信息此程序计算的结果范围最大为65535,所以当输入的数值计算结果超出范围时,结果溢出,给出的结果不正确。
程序中可连续输入表示计算,按ESC键退出,返回DOS。
程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,表达式以字符"
="
结束。
根据要求,首先需要从DOS界面输入用户的四则混合表达式,其中包括括号(或),数字,运算符+,-,*,/。
因为用户从键盘输入的是ASCII码,因些需要做相应的转换。
例如将字符串123转化为十进制的值123。
其次,需要对(,),+,-,*,/的优先级进行判断。
(3)
子程序流程:
子过程详细说明
1、compare子函数用于判断键盘输入的符号是否合法,若合法,则在屏幕上显示,否则报错
2、mult子函数用于对输入的数字进行乘10累加操作,以便将连续输入的数字字符串转换为相对应的数值
3、trans子函数核心算法,将输入的中缀表达式转换为后缀表达式
4、value子函数核心算法,将后缀表达式结合堆栈结构进行表达式求值
5、divi子函数辅助子过程,通过除以10以及进一步处理将某数值转换为相应的ASCII字符串按照个十百位
6、print子过程配合divi子过程,将表达式求值结果输出到屏幕上
用到中断向量表如图所示
程序:
STACKSEGMENTPARASTACK
DW256DUP(0)
STACKENDS
DATASEGMENT
STRIDB50DUP(0)
EXPDB30DUP(0)
TRACKDB30DUP(0)
INSTRDB100DUP(0)
MSG0DB'
input:
'
0DH,0AH,'
$'
MSG1DB0DH,0AH,'
wrong'
'
MSG2DB0DH,0AH,'
(and)doesnotmatch'
MSG3DB0DH,0AH,'
divbyzeroerror'
MSG4DB0DH,0AH,'
fushu'
MSG5DB0DH,0AH,'
anykeytocontinue,esctoexit'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,STACK
MOVSS,AX
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMSG0
MOVAH,9
INT21H
XORAX,AX
;
READ
MOVBX,OFFSETINSTR
MOVDL,20H
JMPL2
COMPAREPROCNEAR
CMPAL,0DH
JZL2
MOVDL,AL
MOVAH,2
RET
COMPAREENDP
L2:
MOVAH,8
CALLCOMPARE
CMPAL,3DH;
endwith'
='
JZL2_OVER
MOVAH,39H
CMPAH,AL;
delthewrongdata(>
9)
JNBCONTI
MOVDL,8
CONTI:
CMPAL,28H;
('
JZL2_YES
CMPAL,29H
JZL2_YES;
)'
CMPAL,2AH;
*'
CMPAL,2BH;
'
+'
CMPAL,2DH;
-'
CMPAL,2FH;
/'
backfunction'
<
-'
CMPAL,08H
JNZNO_8
L2_NEXT:
PUSHDX
CMPBX,OFFSETINSTR
DECBX
MOVAL,0
MOV[BX],AL
POPDX
NO_8:
MOVAH,2FH
delthewrongdata(<
0)
JBL2_YES
L2_YES:
MOVDH,DL
CMPDL,20H
JNZL2_NO20
CMPDH,20H
L2_NO20:
INCBX
L2_OVER:
MOVAH,3DH
MOV[BX],AH
;
checkinput
MOVSI,OFFSETINSTR
MOVAH,30H
MOVCH,0;
record()
MOVCL,0
L3:
MOVAL,[SI]
INCSI
CMPAL,3DH
JZL3_OVER
CMPAL,2AH
JNBMAY_WRONG
JZL3_29
INCCH
JMPL3_RIGHT
L3_29:
INCCL
MAY_WRONG:
CMPAL,30H
JNBL3_RIGHT
CMPAL,28H
JZL3_RIGHT
CMPAH,29H
cmpah,28h
jzL3_right
CMPAH,30H
MOVDX,OFFSETMSG1
JMPOVER3
L3_RIGHT:
MOVAH,AL
JMPL3
L3_OVER:
CMPCH,CL
JZINPUT_WRIGHT
MOVDX,OFFSETMSG2
chechover
INPUT_WRIGHT:
MOVBX,OFFSETSTRI
read
READ:
movah,1
int21h
MOVAL,[SI];
reservethedatabydecimal{test}
MOVAH,28H;
(
CMPAH,AL
JZIN_STRI
MOVAH,29H;
)
MOVAH,2AH;
*
MOVAH,2BH;
+
MOVAH,2DH;
-
MOVAH,2FH;
/
deletethewronginput
JNBREAD
MOVAH,3DH;
=
MOVAH,39H;
JBREAD
CALLNEARPTRMULT
JMPREAD;
theendofreserve
IN_STRI:
MOVAH,0
CMPAH,[BX]
JZNO_BX;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 简单计算器设计 课设 简单 计算器 设计