您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 微机原理课程设计-四则运算
《微机原理与接口技术》课程设计电气与自动化工程系通信工程2010年12月23院系:专业:年级班级:学号:姓名:指导教师:设计日期:-1-微机原理与汇编语言课程设计一、课程设计目的进行程序设计的方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,打到独立编制和调试一定滚魔的汇编语言程序水平。二、课程设计题目四则混合运算要求从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止三、报告内容1.设计主要内容根据题目的要求,该程序设计的关键是要根据四则运算中()、*、/、+、-、=的优先设置符号的权值,其中(、*、+、-、)、=的权值分别设置为5、4、4、3、3、1、0,然后根据权值大小进行运算。程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。可以把整个源程序大致划分为几个基本结构:程序加法、减法、乘法、除法、显示结果五个部分。首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作。-2-2、设计思路流程图3、程序运行结果输入要计算的式子,按等号输出结果,计算机提示是否继续输入,输入字符y,继续输入,键入n退出程序,如果键入字符为其他,则反回提示输入。开始从键盘输入字符AL=‘+’AL=‘-’AL=‘*’AL=‘=’AL=‘/’输出结果结束从键盘输入加数并执行加运算从键盘输入加数并执行减运算从键盘输入加数并执行乘运算从键盘输入加数并执行除运算YYYYYNNNN-3-4、附录:程序代码CODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSNEXTLINEMACRO;显示换行宏MOVAH,2MOVDL,10INT21HMOVAH,2MOVDL,13INT21HENDMSTART:MOVAX,DATASMOVDS,AXMOVBX,0INPUT1:MOVAH,1;从键盘输入一个字符INT21HCMPAL,'+';判断是否为+JZADDITIONCMPAL,'-';判断是否为-JZSUBTRATIONCMPAL,'*';判断是否为*JZMULTIPLICATIONCMPAL,'/'判断是否为/JZDIVISIONCMPAL,'='判断是否为=JZRESULTCMPAL,58判断输入是否为数字JSL1JMPINPUT1L1:CMPAL,47节JNSL2JMPINPUT1L2:SUBAL,48如果输入为数字,将数值计入BXMOVCL,ALMOVAX,BXMOVCH,10MULCH-4-ADDAL,CLMOVBX,AXJMPINPUT1ADDITION:输入+后,进入加法运算MOVDX,0INPUT2:MOVAH,1从键盘输入字符INT21HCMPAL,'+'判断是否为+JZL23CMPAL,'-'判断是否为-JZL24CMPAL,'*'判断是否为*JZL25CMPAL,'/'判断是否为/JZL26CMPAL,'='判断是否为=JZL27CMPAL,58判断是否为数字JSL21JMPINPUT2L21:CMPAL,47JNSL22JMPINPUT2如果不是数字,则跳转到INPUT2L22:SUBAL,48将输入字符转换为数值MOVCL,ALMOVAX,DXMOVCH,10MULCHADDAL,CLMOVDX,AXJMPINPUT2L23:ADDBX,DX执行加运算JMPADDITIONL24:ADDBX,DXJMPSUBTRATIONL25:ADDBX,DX-5-JMPMULTIPLICATIONL26:ADDBX,DXJMPDIVISIONL27:ADDBX,DXJMPRESULTSUBTRATION:如果输入-,则执行减法MOVDX,0INPUT3:MOVAH,1INT21HCMPAL,'+'判断是否为+JZL33CMPAL,'-'判断是否为-JZL34CMPAL,'*'判断是否为*JZL35CMPAL,'/'判断是否为/JZL36CMPAL,'='判断是否为=JZL37CMPAL,58判断是否为数字JSL31JMPINPUT3L31:CMPAL,47JNSL32JMPINPUT3L32:SUBAL,48将字符转换为数值MOVCL,ALMOVAX,DXMOVCH,10MULCHADDAL,CLMOVDX,AXJMPINPUT3L33:SUBBX,DX执行减法操作JMPADDITION-6-L34:SUBBX,DXJMPSUBTRATIONL35:SUBBX,DXJMPMULTIPLICATIONL36:SUBBX,DXJMPDIVISIONL37:SUBBX,DXJMPRESULTMULTIPLICATION:MOVDX,0INPUT4:MOVAH,1INT21HCMPAL,'+'JZL43CMPAL,'-'JZL44CMPAL,'*'判断是否为*JZL45CMPAL,'/'判断是否为/JZL46CMPAL,'='判断是否为=JZL47CMPAL,58判断是否为数字JSL41JMPINPUT4L41:CMPAL,47JNSL42JMPINPUT4L42:SUBAL,48将字符转换为数值MOVCL,ALMOVAX,DX将字输入数字加入数值MOVCH,10MULCHADDAL,CLMOVDX,AXJMPINPUT4判断是否为+判断是否为--7-L43:MOVAX,BX将BX移入AXMULDX与DX中的数进行乘运算MOVBX,AX将AX中的数值返回BXJMPADDITIONL44:MOVAX,BX将BX移入AXMULDX与DX中的数进行乘运算MOVBX,AX将AX中的数值返回BXJMPSUBTRATIONL45:MOVAX,BX将BX移入AXMULDX与DX中的数进行乘运算MOVBX,AX将AX中的数值返回BXJMPMULTIPLICATIONL46:MOVAX,BX将BX移入AXMULDX与DX中的数进行乘运算MOVBX,AX将AX中的数值返回BXJMPDIVISIONL47:MOVAX,BX将BX移入AXMULDX与DX中的数进行乘运算MOVBX,AX将AX中的数值返回BXJMPRESULTDIVISION:MOVDX,0INPUT5:MOVAH,1INT21HCMPAL,'+'JZL53CMPAL,'-'JZL54CMPAL,'*'JZL55CMPAL,'/'JZL56CMPAL,'='JZL57CMPAL,58JSL51判断是否为+判断是否为-判断是否为*判断是否为/判断是否为=判断是否为数字-8-JMPINPUT5L51:CMPAL,47JNSL52JMPINPUT5L52:SUBAL,48MOVCL,ALMOVAX,DXMOVCH,10MULCHADDAL,CLMOVDX,AXJMPINPUT5L53:MOVAX,BXDIVDXMOVAH,0MOVBX,AXJMPADDITIONL54:MOVAX,BXDIVDLMOVAH,0MOVBX,AXJMPSUBTRATIONL55:MOVAX,BXDIVDLMOVAH,0MOVBX,AXJMPMULTIPLICATIONL56:MOVAX,BXDIVDLMOVAH,0MOVBX,AXJMPDIVISIONL57:MOVAX,BXDIVDLMOVAH,0MOVBX,AXJMPRESULT-9-RESULT:显示结果MOVCH,10MOVCL,100R1:将BX中的计算结果以十进制输出MOVAX,BXDIVCLMOVDL,ALMOVDH,AHMOVAL,AHMOVAH,0MOVBX,AXADDDL,48MOVAH,2INT21HMOVAH,0MOVAL,CLDIVCHMOVCL,ALCMPCL,1JZR2JMPR1R2:MOVDL,DHADDDL,48MOVAH,2INT21HS2:NEXTLINELEADX,STRING询问是否继续输入MOVAH,9INT21HMOVAH,1INT21HCMPAL,'y'输入y则跳转到S1JES1CMPAL,'n'输入n则跳转到S3,即结束程序JES3JNES2S3:MOVAH,4CHINT21HCODESENDS
本文标题:微机原理课程设计-四则运算
链接地址:https://www.777doc.com/doc-5967328 .html