(新)汇编语言课程设计四则运算
汇编语言课程设计_四则运算计算器设计
目录1 设计目的 (1)2 概要设计 (1)2.1 系统总体分析 (1)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)3.2.1 判定运算符模块设计 (3)3.2.2取运算数模块 (3)3.2.3计算模块 (4)3.2.4结果处理模块 (5)3.2.5输出模块 (5)3.2.6错误处理模块 (6)4 程序调试 (7)4.1 运行界面分析 (7)4.2 调试过程及分析 (7)5 心得体会 (8)5.1 设计体会 (8)5.2 系统改进 (8)参考文献 (10)附录 (11)实现加减乘除四则运算的计算器1 设计目的汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。
因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。
本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。
可通过编写的汇编程序完成基本的加减乘除四则运算。
主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+252 概要设计2.1 系统总体分析四则运算计算器应当实现对用户输入表达式的处理。
根据用户输入的表达式,完成加减乘除四则运算。
程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。
对于异常情况程序应当进行处理,保证程序的正确运行。
设计一个计算器,在DOS界面下输入<程序名> <表达式>可直接输出运算结果。
例如在DOS界面中输入JS 3+6,可直接输出9。
程序接受16进制数输入,以十进制数输出运算结果。
对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS <Expression> [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。
四则运算教案(通用13篇)
四则运算教案(通用13篇)四则运算教案篇1教学目标1让同学学会计算小数连乘、乘加、乘减类型运算挨次2让同学熟悉到小数的四则运算挨次和整数一样3让同学通过整数四则运算到小数四则运算的学习,培育其学问的迁移学习、应用力量重难点连乘、乘加、乘减题型中小数四则运算挨次教学用具电子幻灯PPT教学过程教学方法和手段引入我们已经学过了整数的四则运算,也就是关于整数的加、减、乘、除,下面大家推断屏幕上每一小题的运算挨次(板书)(1)连乘:103×8×9从左往右的依次计算(2)乘加:103+8×9先算乘法,再算加法(3)乘减:103-8×9先算乘法,再算减法通过复习整数的四则运算挨次概念分析同整数相同,连乘根据从左往右挨次依次计算;乘加,先算乘法,再算加法;乘减,先算乘法,再算减法例题讲解一、新授出示P11页“铺瓷砖”,让同学齐读题目,了解题意(a)问题是什么?100块够吗?实际上是问→100块够铺这么大的面积吗?(b)计算面积(c)面积公式(板书)二、同学列式计算(1)提示:先算一块瓷砖面积,再算100块瓷砖面积连乘:0.9×0.9×100(2)110块够吗?A0.9×0.9×110,再和85平方米比较B0.81×10+81乘加课堂练习P11做一做P14第7题做一做【乘加】【乘减】72×0.81+10.47.06×2.4-5.7=58.32+10.4=58.32+10.4=68.72=606.528小结与作业课堂小结(1)连乘:从左往右的依次计算(2)乘加:先算乘法,再算加法(3)乘减:先算乘法,再算减法本课作业一课3练课后追记四则运算教案篇2教学内容:P58、59教学目标:1、能用综合算式解答两步计算题。
2、依据文字计算题,选择正确的算式。
3、结合树状算图,用逆推的思想探究文字计算题的结构。
4、运用树状算图,培育同学有条理地思索问题。
四则运算的实现
四则运算的实现在数学运算中,四则运算是最基本也是最常见的运算之一。
它包括加法、减法、乘法和除法四种运算方式。
在计算机科学领域,实现四则运算是编程语言中一个非常基础和核心的功能。
本文将介绍四则运算的实现原理及其在计算机编程中的应用。
一、加法运算的实现加法运算是最简单的运算之一,通常用符号“+”表示。
在编程中,实现两个数的加法运算可以通过以下步骤:1. 输入两个待加数。
2. 将两个数相加得到和。
3. 输出和作为运算结果。
以下是一个示例代码,演示了如何实现加法运算:```pythona = int(input("请输入第一个数:"))b = int(input("请输入第二个数:"))sum = a + bprint("两数之和为:", sum)```二、减法运算的实现减法运算是在两个数之间进行相减的操作,通常用符号“-”表示。
在编程中,实现两个数的减法运算可以通过以下步骤:1. 输入被减数和减数。
2. 将被减数减去减数得到差。
3. 输出差作为运算结果。
以下是一个示例代码,演示了如何实现减法运算:```pythona = int(input("请输入被减数:"))b = int(input("请输入减数:"))difference = a - bprint("两数之差为:", difference)```三、乘法运算的实现乘法运算是将两个数相乘的操作,通常用符号“×”表示。
在编程中,实现两个数的乘法运算可以通过以下步骤:1. 输入两个待乘数。
2. 将两个数相乘得到积。
3. 输出积作为运算结果。
以下是一个示例代码,演示了如何实现乘法运算:```pythona = int(input("请输入第一个数:"))b = int(input("请输入第二个数:"))product = a * bprint("两数之积为:", product)```四、除法运算的实现除法运算是将被除数除以除数的操作,通常用符号“÷”表示。
c语言四则运算连续计算
c语言四则运算连续计算在现代编程领域中,C语言是一种被广泛使用的高级程序设计语言。
它以其简洁、灵活和高效而闻名,被广泛应用于操作系统、数据库、游戏开发等领域。
C语言的设计思想既可以满足底层硬件操作的需求,又能提供高级程序设计的功能。
在C语言中,四则运算是一项基本且常见的操作,可以利用其进行数值计算、表达式求解等。
本文将探讨C语言中四则运算的连续计算。
C语言中,四则运算(加法、减法、乘法、除法)是基本运算,也是程序员最常使用的运算操作。
通过使用C语言提供的运算符和表达式,我们可以在程序中灵活地使用四则运算。
在进行四则运算时,C 语言有一定的运算优先级规则,按照规定的优先级进行计算,从而得到准确的结果。
在C语言中,我们使用运算符+、-、*、/来进行加法、减法、乘法和除法运算。
这些运算符可以用于整数和浮点数类型的操作数,使得我们可以进行不同数据类型的计算。
例如,我们可以使用以下语句进行简单的四则运算:int a = 10;int b = 5;int c = a + b; // 加法运算int d = a - b; // 减法运算int e = a * b; // 乘法运算int f = a / b; // 除法运算通过以上代码,我们可以得到变量c、d、e和f的值,分别代表加法、减法、乘法和除法的结果。
值得注意的是,当进行除法运算时,C语言会进行整数除法,将结果取整数部分。
如果我们希望得到浮点数的结果,可以将操作数中至少一个转换为浮点数类型。
除了进行简单的四则运算,C语言还提供了一些特殊的运算符,如取余运算符(%),用于求取两个整数相除的余数。
例如,我们可以使用以下语句进行取余运算:int a = 10;int b = 3;int c = a % b; // 取余运算在以上代码中,变量c的值为1,代表了10除以3所得的余数。
取余运算常用于判断一个数是否为偶数或奇数,可以通过判断余数是否为0来进行判断。
在实际的程序开发中,我们经常需要进行多个四则运算的连续计算。
课程设计四则运算(1)
淮北师范大学《数据结构设计实验报告》题目——四则运算练习软件班级:09非师设计者:曹严严指导老师:张震时间: 2011/04/13---2011/04/14目录1程序设计的内容和相关的要求----------------------------------- 2程序总的功能说明---------------------------------------------- 3程序的模块的说明---------------------------------------------- 4程序设计的流程图---------------------------------------------- 5程序的操作说明及运行结果------------------------------------- 6源程序的清单-------------------------------------------------- 7心得体会------------------------------------------------------1程序设计的内容和相关的要求课程设计的目的:数据结构课程设计是计算机学院重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。
● 进一步巩固和复习数据结构的基础知识。
● 培养学生结构化程序、模块化程序设计的方法和能力。
● 提高学生调试程序的技巧和软件设计的能力。
● 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
● 了解软件的编制过程。
实现的任务:编写一个100以内的四则运算练习软件。
设计内容:1. 随机产生两个<100的整数(运算结果也要在100内),可以选择要练习的运算+,-*,/,调用+,-,*,/四个运算函数实现运算。
2. +,-,*,/混合运算(用栈的原理实现)设计要求:1. 不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。
四则运算教案范文最新6篇
四则运算教案范文最新6篇(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用资料,如工作总结、工作报告、工作计划、心得体会、讲话致辞、教育教学、书信文档、述职报告、作文大全、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor.I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of practical materials for everyone, such as work summaries, work reports, work plans, reflections, speeches, education and teaching, letter documents, job reports, essay summaries, and other materials. If you want to learn about different data formats and writing methods, please stay tuned!四则运算教案范文最新6篇教案简单的说就是教师为了提高自己的教学质量所提前写好的书面文体,写教案的主要目的就是为了提高我们的课堂教学质量。
汇编语言课程设计四则运算计算器
*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。
三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。
2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。
在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。
3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。
4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
四则运算
实验一、四则运算一、实验目的1.熟悉汇编语言上机操作的过程。
2.熟悉DEBUG程序对程序进行调试。
3.熟悉汇编语言源程序的框架结构。
二、实验内容无符号数的加,减,乘,除四则运算练习,采用寄存器寻址。
编程,顺序执行32位加法,32位减法,16位乘以16位乘法,32位除以16位除法。
注意程序的标准结构语句。
三、实验源程序DA TA SEGMENTA DW 1234H,5678H ;被加数B DW 0FEDCH,0123AH ;加数C DW 2 DUP(?) ;和数(预留)AD DW 0FEDCH,0BA98H ;被减数BD DW 1234H,789AH ;减数CD DW 2 DUP(?) ;差A1 DW 0D687H ;被乘数B1 DW 0012H ;乘数C1 DW 2 DUP(?) ;积A2 DW 5678H,0234H ;被除数B2 DW 0F234H ;除数C2 DW 2 DUP(?) ;商DA TA ENDSSTACK SEGMENT PARA STACK ‘STACK’DB 100DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA, SS:STACKSTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DA TA ;标准序MOV AX,AADD AX,BMOV C,AXMOV AX,A+2ADC AX,B+2MOV C+2,AX;32位加法MOV AX,ADSUB AX,BDMOV CD,AXMOV AD,AX+2SBB AX,BD+2MOV CD+2,AX;32位减法MOV AX,A1MUL B1MOV C1,AXMOV C1+2,DX;16位乘以16位MOV AX,A2MOV DX,A2+2DIV B2MOV C2,AXMOV C2+2,DX;32位除以16位RETSTART ENDPCODE ENDSEND START四、实验要求1.调用一个编辑软件键入源程序。
汇编语言四则运算
《微机原理与接口技术》课程设计电气与自动化工程系 通信工程2010-12-28院 系: 专 业: 年级班级: 学 号: 姓 名: 指导教师: 设计日期:一、课程设计目的每个同学在1-2周时间内,用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。
二、课程设计要求从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。
三、课题分析该程序设计的关键是要根据四则运算中()、*、/、+、-、= 的优先级设置符号的权值,其中(、*、/、+、-、)、= 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。
程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。
程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。
需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区MARK中覆盖符号(、)、*、/ 及紧跟着的权值,使得程序在运算整个四则运算表达式时当括号内表达式的运算及乘除运算结束后存储区MARK中只有‘ +、-’运算符及紧跟着的权值,然后按照+、- 运算符的左右顺序从左到右进行‘ +、- ’运算,当最后遇到等号‘ = ’时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式。
四、流程图五、程序源代码DATAS SEGMENT STR1 DB 0AH,0DH,'@******************************************@$' STR2 DB 0AH,0DH,'@* *@$' STR3 DB 0AH,0DH,'@* Welcome you ! *@$' STR4 DB 0AH,0DH,'@* This is programe of sizeyunsuan *@$' STR5 DB 0AH,0DH,'@* Rang(-32768 to 32767) *@$' STR6 DB 0AH,0DH,'@* JikeB082 Hanyou 200807014225 *@$' STR7 DB 0AH,0DH,'@* *@$' STR8 DB 0AH,0DH,'@******************************************@$' MESG DB 0AH,0DH,'Do you want to continue? (y/n) $' SIGN1 DW 0 ;判断数字是否输入完毕 SIGN2 DW 0 ;判断括号是否配对 NUMB DW 20 DUP (0) ;保存输入的数值 MARK DB 'M' ;保存输入的运算符 DB 10 DUP (0) ERROR DB 'YOUR INPUT IS WRONG$' DATAS ENDS DISP MACRO STR LEA DX,STR MOV AH,9 INT 21H ENDM CHOICE MACRO ASC,HAO,H ;宏定义,给运算符赋权值 CMP AL,ASC JNE OTH &HAO MOV CH,H JMP OTH7 ENDM CODES SEGMENT ASSUME CS:CODES,DS:DATAS START :CALL CLEAR MOV AX,DATAS MOV DS,AX LEA DI,NUMB LEA SI,MARK DISP STR1 DISP STR2 DISP STR3 DISP STR4 DISP STR5DISP STR6 DISP STR7 DISP STR8 CALL CR MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: CALL CR INPUT: MOV AH,1 INT 21H CMP AL,'=' JE PD ;是等号,进一步判断输入括号是否配对 CMP AL,28H JB INPUT CMP AL,39H JA INPUT CMP AL,2FH ;判断是数字还是符号 JBE JUD ;是符号转入响应操作 INC WORD PTR SIGN1 ;将数字标志位加1 SUB AL,30H ;将ASCII 码转16进制 MOV AH,0XCHG AX,[DI]MUL BXMOV BX,10XCHG AX,[DI]ADD [DI],AXJMP INPUTPD: CMP WORD PTR SIGN2,0 ;判断配对标志位JE JUDJMP BCJUD:CMP WORD PTR SIGN1,0 ;判断数值指针是否已经下移一位JE FUHADD DI,2MOV WORD PTR SIGN1,0 ;将数字标志位复0FUH:CALL ADVANCE ;设定优先级CMP CH,5 ;判断输入的符号是否是左括号JNE PY ;不是则判断输入的是否是右括号INC WORD PTR SIGN2 ;是左括号,括号标志位加1PY:CMP CH,1 ;判断输入的是否是右括号JNE AGAINDEC WORD PTR SIGN2 ;是右括号,括号标志位减1AGAIN:CMP BYTE PTR[SI],'M';判断运算符存储区是否为空如23*56-(8*19)/6+67-8=1322JE SAVECMP CH,[SI] ;[SI]的内容为前一个符号或其权值JA SAVECMP BYTE PTR[SI],'('JNE YIDODEC SIJMP INPUTYIDO:DEC SIMOV CL,[SI]CALL MATCH ;判断是什么运算符并进行相应的计算JMP AGAINSAVE:CMP CH,0 ;判断是否是等号JE OUTPUTCMP CH,1JE INPUT ;“)”不保存,输入下一个数INC SIMOV [SI],AL ;保存符号INC SICMP CH,5 ;判断是否是左括号JNE GO_ONMOV CH,2 ;改变(的权值GO_ON:MOV [SI],CH ;紧跟着保存符号的权值JMP INPUTBC: LEA DX,ERRORMOV AH,9INT 21HJMP J_SHUMATCH PROC NEAR ;子程序,进行相应的运算PUSH AXXOR AX,AXXOR BX,BXCMP CL,2AH ;乘法运算 JNE NEXT1SUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]IMUL BXMOV [DI],AXADD DI,2JMP FINISHNEXT1:CMP CL,2FH ;除法运算 JNE NEXT2SUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]CWDIDIV BXMOV [DI],AXADD DI,2JMP FINISHNEXT2:CMP CL,2BH ;加法运算 JNE NEXT3SUB DI,2XCHG BX,[DI]SUB DI,2ADD [DI],BXADD DI,2JMP FINISHNEXT3:CMP CL,2DH ;减法运算 JNE FINISHSUB DI,2XCHG BX,[DI]SUB DI,2SUB [DI],BXADD DI,2FINISH:POP AXRETMATCH ENDPADVANCE PROCCHOICE 28H,1,5 ;(OTH1:CHOICE 29H,2,1 ;)OTH2:CHOICE 2AH,3,4 ;*OTH3:CHOICE 2FH,4,4 ;/OTH4:CHOICE 2BH,5,3 ;+OTH5:CHOICE 2DH,6,3 ;-OTH6:CHOICE 3DH,7,0 ;=OTH7:RETADVANCE ENDP CLEAR PROC NEAR ;清屏PUSH AXPUSH BXPUSH CXPUSH DXMOV AX,0600HMOV BH,0FHMOV CX,0MOV DX,184FHINT 10HPOP AXPOP BXPOP CXPOP DXRETCLEAR ENDPCR PROC NEAR ;回车换行PUSH AXPUSH DXMOV AH,2MOV DL,0DHINT 21HMOV AH,2MOV DL,0AHINT 21HPOP DXPOP AXRETCR ENDPOUTPUT: ;输出运算结果SUB DI,2CMP WORD PTR[DI],0JGE W1NEG WORD PTR[DI]MOV DL,'-'MOV AH,2INT 21HW1: MOV BX,10000MOV CX,5MOV SI,0W2: MOV AX,[DI]CWDDIV BXMOV [DI],DXCMP AL,0JNE W3CMP SI,0JNE W3CMP CX,1JE W3JMP W4W3: MOV DL,ALADD DL,30HMOV AH,2INT 21HMOV SI,1W4: MOV AX,BXMOV DX,0MOV BX,10DIV BXMOV BX,AX LOOP W2CALL CR DISP MESGMOV AH,1INT 21HCMP AL,'n'JE J_SHUCMP AL,'N'JE J_SHUMOV WORD PTR[DI+2],0 CALL CRLEA DI,NUMBLEA SI,MARKJMP START1J_SHU:MOV AH,4CHINT 21HCODES ENDSEND START六、结果显示七、感想、收获及体会学习汇编语言:大一学习的是C语言,因此,在学汇编语言之初,面对格式之类的感觉很不适应。
汇编语言课程设计--四则运算计算器的设计
《汇编语言》课程设计说明书设计题目四则运算计算器的设计专业班级学号姓名指导教师起止日期成绩课程设计任务书一、设计题目:四则运算计算器的设计二、设计的主要内容:设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
目标:要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
指导教师:教研室主任:1选题背景及意义运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。
2主要设计内容及预期目标设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
目标:要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
3 概要设计本题目实现的模块图如图3-1所示图3-1 概要模块(1)界面设置主要实现确定界面样式的功能,以菜单形式显示。
(2)选择算法设置用于选择加、减、乘、除法来进行运算。
(3)十进制转换设置应用十进制的转换算法来处理加、减、乘、除法四则运算。
4 详细设计4.1 界面设置通过定义数据段,利用09H显示出功能列表。
通过定义数据段,以字符串的形式输入每个提示信息,利用09H键盘输入并回显命令显示每一个功能提示,是计算器的功能列表有序清晰的显示在屏幕上。
4.2 选择算法设置首先选择要进行的四则运算,若选择1,则进行加法;若选择2,则进行减法;若选择3,则进行乘法;若选择4,则进行除法。
汇编语言-四则运算1
华北科技学院课程设计说明书专业:网络工程课程名称:汇编课程设计班级:姓名:学号:设计题目: 四则运算设计时间: 2011-12-05 至2011-12-16评语: ________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____一、问题陈述及其需求分析问题要求:利用汇编语言编写四则运算的基本方法。
内容:从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。
并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。
四则运算主要包括以下几个模块:(1)主程序模块.(2)赋权宏模块.(3)加减乘除运算子程序模块.(4)调用赋权宏子程序模块.(5)清屏子程序模块.(6)回车换行宏模块.(7)9号功能显示字符串宏模块.二、总体设计程序设计组成框图程序设计流程图三、详细设计算法说明1.主程序模块.主程序模块首先实现调用子程序clear清屏,初始化数据段,加载附加段,调用显示宏show 显示界面,将寄存器ax,bx,cx,dx初始化赋初值为0,调用回车换行宏,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序.2.赋权宏模块.通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.3.加减乘除运算子程序模块.运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/,若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置.4.调用赋权宏子程序模块.该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.5.清屏子程序模块.本模块先将即将用到的ax,bx,cx,dx寄存器入栈保存,通过ah=06h屏幕上卷功能,用bh=07h 将屏幕设置为黑底白字格式,给dh,dl赋值将其清屏位置设定在30行80列范围.从而实现了清屏功能,然后再将ax,bx,cx,dx寄存器出栈.6.回车换行宏模块.通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能.7.9号功能显示字符串宏模块.通过定义宏show,用9号显示功能,通过变元str将字符串显示出来.四、编码和测试1.程序运行结果主界面如图所示。
微机设计报告(四则运算器)
学院:班级:姓名:学号:课程设计题目:四则运算计算器课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月目录概述 (1)一、设计要求 (1)二、设计思想 (1)三、程序工作原理 (2)四、程序流程图及说明 (3)五、程序源代码 (7)六、程序运行示例 (18)七、设计过程中遇到的问题及解决方法 (18)八、设计心得 (19)九、参考文献 (19)四则运算计算器概述此计算器,可以实现从键盘输入一个十进制的四则运算表达式,如:-3+4*(5-6)-8/2,编程计算表达式的值,输出十进制结果。
表达式和结果可以是三位或四位十进制,也可以是带负数的十进制数,并且+-*/()位置任意摆放(只要符合数学上的运算逻辑)。
一、设计要求用汇编语言设计一个程序,用来实现计算器的四则运算功能。
需要实现在屏幕要显示输入的表达式,以及运算结果。
例如:-3+4*(5-6)-8/2计算表达式的结果,并将该表达式及结果显示出来;设计要求如下:(1)由键盘作为输入部分。
(2)能进行四则混合运算,并且能计算带括号和负数的数学表达式。
(3)按ESC 键则退出计算器菜单界面并返回dos 系统,否则继续输入表达式,求得对应的结果。
二、设计思想根据题目的要求,可以把整个源程序大致划分六大步骤。
(1)首先键盘输入合法中缀算术表达式,并将其存储到S1中。
(2)然后调用子程序CHANGE将中缀式转化为后缀式。
(3)调用子程序CALCULATE对后缀表达式进行有符号数的运算,并将最终结果存放在栈中。
(4)POP AX,AX->STORAGE,即用STORAGE 存放最终运算结果。
(5)调用子程序OUTPUT将运算结果输出。
(6)通过用键盘输入ESC退出DOS程序。
三、程序工作原理步骤一的原理:此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为回车,如果不是,则循环,继续输入字符,否则,程序往下执行。
汇编语言课程设计四则运算
计算机与信息工程学院《汇编语言》课程设计四则运算器的设计专业:计算机科学与技术班级:控制11-2班姓名: 倪天天学号:45指导教师:郝维来2013年6月28日摘要计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。
用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。
通过对各种指令的合理使用,设计各个功能模块。
当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。
关键词:计算器,汇编语言,四则运算,功能模块AbstractCalculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, thejudgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator.Keyword:Calculator, assembly language, four arithmetic, functional modules目录1.背景分析及意义 (6)2.总体设计思想 (6)3.完成的主要功能 (7)4.软硬件环境要求 (7)5.程序流程图 (7)6.使用说明 (9)设计总结 (9)参考文献 (10)程序清单 (10)1.背景分析及意义汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。
四则运算汇编语言程序设计
安徽工程大学《汇编语言程序设计》大作业报告班级: XXXXX 学号: XXXXXXXX 完成人: XXXXXXX任课老师: XXXXXXX 时间: XXXXXXXXXX《汇编语言程序设计》大作业任务书大作业题目:四则运算程序程序功能要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
1.设计目标运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,能够在DOS界面下进行简单的加、减、乘、除的简单计算。
程序应有操作提示、输入和输出。
自动闪烁光标,并提示输入信息。
输入正确的数值等符号后可以进行正确的运算,程序计算其结果值并输出。
程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。
且程序主界面需为一个由‘*’组成边框的矩形窗口。
2.软件设计2.1程序设计的基本思想主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。
如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。
计算显示完毕后,按提示选择是否要继续计算,不选择继续则结束。
对屏幕上输入字符串的接受,为INPUT语句段,见源代码,主要是将数字和运算符分开存放。
MATCH子程序,子程序内有三次跳转,将运算符选择正确的语句进行计算。
由于操作符只有+、-、*、/,没有涉及到括号,不用考虑括号的匹配问题。
流程图如下:图1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。
首先根据输入调用对应的“+”、“-”、“*”、“/”四个函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几个模块服务的,大致的流程图如下图2:图2 子模块流程图3.系统调试3.1测试目标(1)在屏幕上显示一个由‘*’组成边框的矩形窗口;(2)自动闪烁光标,并提示输入信息;(3)能够完成单项表达式的输入、显示和运算;(4)编制并调试出程序。
汇编语言四则运算
《微机原理与接口技术》课程设计电气与自动化工程系 通信工程2010-12-28院 系: 专 业: 年级班级: 学 号: 姓 名: 指导教师: 设计日期:一、课程设计目的每个同学在1-2周时间内,用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。
二、课程设计要求从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。
三、课题分析该程序设计的关键是要根据四则运算中()、*、/、+、-、= 的优先级设置符号的权值,其中(、*、/、+、-、)、= 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。
程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。
程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。
需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区MARK中覆盖符号(、)、*、/ 及紧跟着的权值,使得程序在运算整个四则运算表达式时当括号内表达式的运算及乘除运算结束后存储区MARK中只有‘ +、-’运算符及紧跟着的权值,然后按照+、- 运算符的左右顺序从左到右进行‘ +、- ’运算,当最后遇到等号‘ = ’时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式。
四、流程图五、程序源代码DATAS SEGMENT STR1 DB 0AH,0DH,'@******************************************@$' STR2 DB 0AH,0DH,'@* *@$' STR3 DB 0AH,0DH,'@* Welcome you ! *@$' STR4 DB 0AH,0DH,'@* This is programe of sizeyunsuan *@$' STR5 DB 0AH,0DH,'@* Rang(-32768 to 32767) *@$' STR6 DB 0AH,0DH,'@* JikeB082 Hanyou 200807014225 *@$' STR7 DB 0AH,0DH,'@* *@$' STR8 DB 0AH,0DH,'@******************************************@$' MESG DB 0AH,0DH,'Do you want to continue? (y/n) $' SIGN1 DW 0 ;判断数字是否输入完毕 SIGN2 DW 0 ;判断括号是否配对 NUMB DW 20 DUP (0) ;保存输入的数值 MARK DB 'M' ;保存输入的运算符 DB 10 DUP (0) ERROR DB 'YOUR INPUT IS WRONG$' DATAS ENDS DISP MACRO STR LEA DX,STR MOV AH,9 INT 21H ENDM CHOICE MACRO ASC,HAO,H ;宏定义,给运算符赋权值 CMP AL,ASC JNE OTH &HAO MOV CH,H JMP OTH7 ENDM CODES SEGMENT ASSUME CS:CODES,DS:DATAS START :CALL CLEAR MOV AX,DATAS MOV DS,AX LEA DI,NUMB LEA SI,MARK DISP STR1 DISP STR2 DISP STR3 DISP STR4 DISP STR5DISP STR6 DISP STR7 DISP STR8 CALL CR MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: CALL CR INPUT: MOV AH,1 INT 21H CMP AL,'=' JE PD ;是等号,进一步判断输入括号是否配对 CMP AL,28H JB INPUT CMP AL,39H JA INPUT CMP AL,2FH ;判断是数字还是符号 JBE JUD ;是符号转入响应操作 INC WORD PTR SIGN1 ;将数字标志位加1 SUB AL,30H ;将ASCII 码转16进制 MOV AH,0XCHG AX,[DI]MUL BXMOV BX,10XCHG AX,[DI]ADD [DI],AXJMP INPUTPD: CMP WORD PTR SIGN2,0 ;判断配对标志位JE JUDJMP BCJUD:CMP WORD PTR SIGN1,0 ;判断数值指针是否已经下移一位JE FUHADD DI,2MOV WORD PTR SIGN1,0 ;将数字标志位复0FUH:CALL ADVANCE ;设定优先级CMP CH,5 ;判断输入的符号是否是左括号JNE PY ;不是则判断输入的是否是右括号INC WORD PTR SIGN2 ;是左括号,括号标志位加1PY:CMP CH,1 ;判断输入的是否是右括号JNE AGAINDEC WORD PTR SIGN2 ;是右括号,括号标志位减1AGAIN:CMP BYTE PTR[SI],'M';判断运算符存储区是否为空如23*56-(8*19)/6+67-8=1322JE SAVECMP CH,[SI] ;[SI]的内容为前一个符号或其权值JA SAVECMP BYTE PTR[SI],'('JNE YIDODEC SIJMP INPUTYIDO:DEC SIMOV CL,[SI]CALL MATCH ;判断是什么运算符并进行相应的计算JMP AGAINSAVE:CMP CH,0 ;判断是否是等号JE OUTPUTCMP CH,1JE INPUT ;“)”不保存,输入下一个数INC SIMOV [SI],AL ;保存符号INC SICMP CH,5 ;判断是否是左括号JNE GO_ONMOV CH,2 ;改变(的权值GO_ON:MOV [SI],CH ;紧跟着保存符号的权值JMP INPUTBC: LEA DX,ERRORMOV AH,9INT 21HJMP J_SHUMATCH PROC NEAR ;子程序,进行相应的运算PUSH AXXOR AX,AXXOR BX,BXCMP CL,2AH ;乘法运算 JNE NEXT1SUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]IMUL BXMOV [DI],AXADD DI,2JMP FINISHNEXT1:CMP CL,2FH ;除法运算 JNE NEXT2SUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]CWDIDIV BXMOV [DI],AXADD DI,2JMP FINISHNEXT2:CMP CL,2BH ;加法运算 JNE NEXT3SUB DI,2XCHG BX,[DI]SUB DI,2ADD [DI],BXADD DI,2JMP FINISHNEXT3:CMP CL,2DH ;减法运算 JNE FINISHSUB DI,2XCHG BX,[DI]SUB DI,2SUB [DI],BXADD DI,2FINISH:POP AXRETMATCH ENDPADVANCE PROCCHOICE 28H,1,5 ;(OTH1:CHOICE 29H,2,1 ;)OTH2:CHOICE 2AH,3,4 ;*OTH3:CHOICE 2FH,4,4 ;/OTH4:CHOICE 2BH,5,3 ;+OTH5:CHOICE 2DH,6,3 ;-OTH6:CHOICE 3DH,7,0 ;=OTH7:RETADVANCE ENDP CLEAR PROC NEAR ;清屏PUSH AXPUSH BXPUSH CXPUSH DXMOV AX,0600HMOV BH,0FHMOV CX,0MOV DX,184FHINT 10HPOP AXPOP BXPOP CXPOP DXRETCLEAR ENDPCR PROC NEAR ;回车换行PUSH AXPUSH DXMOV AH,2MOV DL,0DHINT 21HMOV AH,2MOV DL,0AHINT 21HPOP DXPOP AXRETCR ENDPOUTPUT: ;输出运算结果SUB DI,2CMP WORD PTR[DI],0JGE W1NEG WORD PTR[DI]MOV DL,'-'MOV AH,2INT 21HW1: MOV BX,10000MOV CX,5MOV SI,0W2: MOV AX,[DI]CWDDIV BXMOV [DI],DXCMP AL,0JNE W3CMP SI,0JNE W3CMP CX,1JE W3JMP W4W3: MOV DL,ALADD DL,30HMOV AH,2INT 21HMOV SI,1W4: MOV AX,BXMOV DX,0MOV BX,10DIV BXMOV BX,AX LOOP W2CALL CR DISP MESGMOV AH,1INT 21HCMP AL,'n'JE J_SHUCMP AL,'N'JE J_SHUMOV WORD PTR[DI+2],0 CALL CRLEA DI,NUMBLEA SI,MARKJMP START1J_SHU:MOV AH,4CHINT 21HCODES ENDSEND START六、结果显示七、感想、收获及体会学习汇编语言:大一学习的是C语言,因此,在学汇编语言之初,面对格式之类的感觉很不适应。
四则运算教案(精选6篇)
四则运算教案(精选6篇)四年级数学下册《四则运算》教案篇一一、班级情况分析:全班共有35人,其中男生10人,女生25人。
通过一个学期的学习,大部分同学的良好学习习惯已经初步养成,都能很好的完成作业,学习数学的兴趣较高,但是由于班级存在较严重的两级分化现象,学生在学习水平上差异较大,有的学生的学习习惯差,上课经常走神,学生的自我约束的能力很差,作业不够规范,马虎、粗心现象特别突出。
尤其是翁浩、林海清、郭林馨、陈丽娜、张桦键等人,本学期还要重点抓。
另一方面,班级部分家长的重视程度不够,在教学过程中对学生学习习惯和学习行为的教育力度不是很到位,本学期也要进一步和这些家长做好交流和沟通工作。
二、教材分析:这册教材包括下面的内容:四则运算;位置与方向;运算定律与简便计算;小数的意义和性质;三角形;小数的加法和减法;统计;数学广角和数学综合运用活动等。
在数与计算方面,本教材安排了小数的意义与性质,小数的加法和减法,四则运算,运算定律与简便运算,在本学期里学生将系统地学习混合运算的运算顺序,重点学习含有两级运算的四则混合运算的运算顺序,为学习列出综合算式解决问题打下基础,并学习运用运算定律进行简便运算。
在空间与图形方面,本册教材安排了位置与方向、三角形两个单元,这些都是本册的难点或重点教学内容。
在已有知识和经验的基础上,通过丰富的数学活动,让学生进一步认识三角形的特性,进一步了解确定位置的方法。
使学生在探索图形的特征、图形的变换以及根据方向和距离确定物体位置的活动中进一步发展空间观念,提高观察能力和动手操作能力,同时获得探究学习的经历。
在统计知识方面,本册教材安排了折线统计图。
让学生学习根据统计表中的数据制作单式折线统计图,学会看懂此种统计图并学习根据统计图和数据进行数据变化趋势的分析,进一步体会统计在现实生活中的作用,形成统计的观念。
在用数学解决问题方面,教材一方面结合计算内容,教学用所学的整数四则运算知识和小数加减法知识解决生活中的简单问题;另一方面,安排了数学广角的教学内容,引导学生通过观察、猜测、实验、推理等活动,初步体会植树问题的数学思想方法,感受数学的魅力。
汇编课程设计报告-四则运算
课程设计报告一.课程设计的性质和目的性质:《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。
目的要求:进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二.课程设计的要求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退出程序,如果键入字符为其他,则反回提示输入如图:七.程序流程主程序流程八.代码根据题目的要求,可以把整个源程序大致划分为几个基本结构,程序加法、减法、乘法、除法、显示结果五个部分1、源程序:ASSUME CS:CODES,DS:DATAS,SS:STACKSNEXTLINE MACRO ;显示换行宏MOV AH,2MOV DL,10INT 21HMOV AH,2MOV DL,13INT 21HENDMSTART:MOV AX,DATASMOV DS,AXMOV BX,0INPUT1:MOV AH,1 ;从键盘输入一个字符INT 21HCMP AL,'+' ;判断是否为+JZ ADDITIONCMP AL,'-' ;判断是否为-JZ SUBTRATIONCMP AL,'*' ;判断是否为*JZ MULTIPLICATIONCMP AL,'/' 判断是否为/JZ DIVISIONCMP AL,'=' 判断是否为=JZ RESULTCMP AL,58 判断输入是否为数字JS L1JMP INPUT1L1:CMP AL,47节JNS L2JMP INPUT1L2:SUB AL,48 如果输入为数字,将数值计入BX MOV CL,ALMOV AX,BXMOV CH,10MUL CHADD AL,CLMOV BX,AXJMP INPUT1MOV DX,0INPUT2:MOV AH,1 从键盘输入字符INT 21HCMP AL,'+' 判断是否为+JZ L23CMP AL,'-' 判断是否为-JZ L24CMP AL,'*' 判断是否为*JZ L25CMP AL,'/' 判断是否为/JZ L26CMP AL,'=' 判断是否为=JZ L27CMP AL,58 判断是否为数字JS L21JMP INPUT2L21:CMP AL,47JNS L22JMP INPUT2 如果不是数字,则跳转到INPUT2 L22:SUB AL,48 将输入字符转换为数值MOV CL,ALMOV AX,DXMOV CH,10MUL CHADD AL,CLMOV DX,AXJMP INPUT2L23:ADD BX,DX 执行加运算JMP ADDITIONL24:ADD BX,DXJMP SUBTRATIONL25:ADD BX,DXJMP MULTIPLICATIONL26:ADD BX,DXJMP DIVISIONL27:ADD BX,DXSUBTRATION: 如果输入-,则执行减法 MOV DX,0INPUT3:MOV AH,1INT 21HCMP AL,'+' 判断是否为+JZ L33CMP AL,'-' 判断是否为-JZ L34CMP AL,'*' 判断是否为*JZ L35CMP AL,'/' 判断是否为/JZ L36CMP AL,'=' 判断是否为=JZ L37CMP AL,58 判断是否为数字JS L31JMP INPUT3L31:CMP AL,47JNS L32JMP INPUT3L32:SUB AL,48 将字符转换为数值MOV CL,ALMOV AX,DXMOV CH,10MUL CHADD AL,CLMOV DX,AXJMP INPUT3L33:SUB BX,DX 执行减法操作JMP ADDITIONL34:SUB BX,DXJMP SUBTRATIONL35:SUB BX,DXJMP MULTIPLICATIONL36:SUB BX,DXSUB BX,DX JMP RESULTMULTIPLICATION: MOV DX,0 INPUT4: MOV AH,1 INT 21HCMP AL,'+' JZ L43 CMP AL,'-' JZ L44 CMP AL,'*' 判断是否为* JZ L45CMP AL,'/' 判断是否为/ JZ L46CMP AL,'=' 判断是否为= JZ L47CMP AL,58 判断是否为数字 JS L41 JMP INPUT4 L41:CMP AL,47 JNS L42 JMP INPUT4 L42:SUB AL,48 将字符转换为数值 MOV CL,ALMOV AX,DX 将字输入数字加入数值 MOV CH,10 MUL CH ADD AL,CL MOV DX,AX JMP INPUT4 L43:MOV AX,BX 将BX 移入AXMUL DX 与DX 中的数进行乘运算 MOV BX,AX 将AX 中的数值返回BX JMP ADDITION L44:MOV AX,BX 将BX 移入AXMUL DX 与DX 中的数进行乘运算 判断是否为+ 判断是否为-JMP SUBTRATIONL45:MOV AX,BX 将BX移入AXMUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP MULTIPLICATIONL46:MOV AX,BX 将BX移入AXMUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP DIVISIONL47:MOV AX,BX 将BX移入AXMUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP RESULTDIVISION:MOV DX,0INPUT5:MOV AH,1INT 21HCMP AL,'+' JZ L53CMP AL,'-' JZ L54CMP AL,'*' JZ L55CMP AL,'/' JZ L56CMP AL,'=' JZ L57CMP AL,58 JS L51JMP INPUT5 L51:CMP AL,47 JNS L52JMP INPUT5 L52:SUB AL,48 MOV CL,AL MOV AX,DX MOV CH,10 判断是否为+ 判断是否为- 判断是否为* 判断是否为/ 判断是否为= 判断是否为数字ADD AL,CLMOV DX,AXJMP INPUT5L53:MOV AX,BXDIV DXMOV AH,0MOV BX,AXJMP ADDITIONL54:MOV AX,BXDIV DLMOV AH,0MOV BX,AXJMP SUBTRATIONL55:MOV AX,BXDIV DLMOV AH,0MOV BX,AXJMP MULTIPLICATIONL56:MOV AX,BXDIV DLMOV AH,0MOV BX,AXJMP DIVISIONL57:MOV AX,BXDIV DLMOV AH,0MOV BX,AXJMP RESULTRESULT:显示结果MOV CH,10MOV CL,100R1: 将BX中的计算结果以十进制输出 MOV AX,BXDIV CLMOV DL,ALMOV DH,AHMOV AL,AHMOV AH,0MOV BX,AXADD DL,48INT 21HMOV AH,0MOV AL,CLDIV CHMOV CL,ALCMP CL,1JZ R2JMP R1R2:MOV DL,DHADD DL,48MOV AH,2INT 21HS2:NEXTLINELEA DX,STRING 询问是否继续输入MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'y' 输入y则跳转到S1JE S1CMP AL,'n' 输入n则跳转到S3,即结束程序JE S3JNE S2S3:MOV AH,4CHINT 21HCODES ENDS九.心得体会程序的主要功能是实现四则运算,整个程序中主要分为,输入算式,加法,减法,乘法,除法和以十进制显示结果这几个部分本程序基本实现了四则运算的功能,但还没能实现带有括号的四则运算,还有在除法运算中不能运算较大的数,会产生溢出现象一开始的时候自己编出来的程序有很多问题,尤其是在循环程序上,因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行。
汇编语言课程设计任务书--简易计算器,实现整数(2个字节的无符号数)的四则运算
简易计算器,实现整数(2个字节的无符号数)的四则运算
指导教师
谷赫
答疑教师
谷赫
设计时间
2011年12月31日-----2012年1月6日
设计要求
一、设计目的
1.对已学过的汇编语言程序设计知识进行综合运用;
2.能按要求设计出可执行的汇编源程序并进行调试。
二、设计任务
1、通过键盘输入操作数和运算符后,显示出算式和运算结果。
知识改变生活精品word文档值得下载值得拥有知识改变生活精品word文档值得下载值得拥有汇编语言程序设计课程设计任务书简易计算器实现整数2个字节的无符号数的四则运算指导教师设计时间2011年12月31日2012设计要求一设计目的1
《汇编语言程序设计》课程设计任务书
专业
计算机科学与技术
班级
电算B10209
01月04日:根据流程图,编写汇编语言源程序。
01月05日:调试汇编语言源程序,完成基本功能,得出最后结果。
01月06日:准备资料,进行答辩。
注:上交设计报告。重点阐述程序的有关算法说明、程序的流程图以及子程序的功能和参数的说明及程序代码。
系(教研室)主任签字:年月日
2、分析问题,给出程序流程图。
3、适当的使用子程序。
4、调试汇编语言源程序。
三、知识点掌握掌握并深入理解汇编语言程序 Nhomakorabea计方法;
掌握汇编语言提供的指令及其使用方法;
掌握中断的基本概念,并熟悉DOS功能调用的使用方法;
学会汇编语言源程序调试的全过程。
四、时间安排
12月31日:收集资料,进行问题分析,得到程序流程图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息工程学院《汇编语言》课程设计四则运算器的设计专业:计算机科学与技术班级:控制11-2班姓名: 倪天天学号:2011025745指导教师:郝维来2013年6月28日摘要计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。
用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。
通过对各种指令的合理使用,设计各个功能模块。
当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。
关键词:计算器,汇编语言,四则运算,功能模块AbstractCalculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator.Keyword:Calculator, assembly language, four arithmetic, functional modules目录1.背景分析及意义 (6)2.总体设计思想 (6)3.完成的主要功能 (7)4.软硬件环境要求 (7)5.程序流程图 (7)6.使用说明 (9)设计总结 (9)参考文献 (10)程序清单 (10)1.背景分析及意义汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。
同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。
由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。
2.总体设计思想本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
比如,十进制数的加减乘除四则运算。
我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,我要解决的是输入时是用INT 21H的10号功能调用还是用INT 21H 的1号功能调用来进行输入。
若是用10号功能调用则我们进行多字符输入,可以将输入的字符都存储到一个数据区里面,并调用9号功能调用输出存进去的字符,这种输入和输出的方案是可行的。
我选择的是利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。
我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。
在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。
第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。
第三步,根据计算器程序所要实现的功能完成各个功能模块。
设计程序主体部分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。
子模块中包含有:do_add加法运算模块,do_sub减法运算模块,do_mul乘法运算模块,do_div除法运算模块,input输入模块等。
最后还要对这个简易计算器进行功能完善。
为了使程序符合我们使用者的操作习惯,设计当用户根据提示信息输入一个算式后,按下enter键或是‘=’符号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。
如果用户输入错误,则返回,提示信息让用户重新输入算式,当用户按下Q或q键时退出程序。
在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运算功能的计算器。
3.完成的主要功能本次课程设计的题目是用汇编语言实现一个简单的计算器,运行程序,程序界面能显示出参与运算的运算式和运算结果,可以输入加减乘除四则运算,输入后按等于号或回车键输出运算结果。
本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的。
4.软硬件环境要求X86架构PC机,安装windows操作系统,系统运行MASM5.0或以上版本软件。
5.程序流程图此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的程序的一个总体的框架。
程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个功能模块,首先要判断输入的字符是否为Q或q,若是,则退出程序,不是则继续输入。
还要判断输入的是否为0--9,‘+’,‘-’,‘*’,‘/’这些字符,若不是会报错,是则将根据运算符号调用相应的功能模块完成运算。
最后将运算的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。
程序流程图如图1所示:图16.使用说明运行程序,按提示输入你所需要的运算式,按“=”或“Enter”显示输出结果,按“C”继续运行计算器,按“E”退出。
设计总结经过这次课程设计,我学到了很多东西,其中包括知识方面的,还有其他方面的。
首先让我认识到,做好一件事,做成功一件事是不容易的,但是你只要坚持不懈的努力,不断的发挥自己的智慧去思索去探究,你会欣慰的发现自己正向着成功一步步迈进。
这次课程设计使我对汇编语言程序设计这门课程有了进一步的理解和认识,使我学到了许多编程语言以及算法设计方面的知识,同时也锻炼了我的耐心和意志,增长了我的实践能力。
这次课程设计我所选的题目是使用汇编语言设计一个具有加减乘除基本运算功能的简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
通过使用汇编语言设计实现简单计算器,我进一步了解和掌握了对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。
本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的,我通过对具有加减乘除基本功能的计算器的设计实现,学会了使用汇编语言实现输入输出模块的设计,模块合理调用的设计,加减乘除运算的判断以及退出程序的判断的设计。
在汇编语言程序设计中,我通过对各种指令的合理使用,熟悉并加深了对各种指令的用法,同时也学会使用汇编语言设计各个功能模块。
当我实现各个程序模块后,学会了通过程序的调用最终实现一个具有基本计算功能的简单计算器。
在本次课程设中,我遇到了很多问题。
例如,在计完成具有输入功能的模块input模块时我就遇到了困难。
通过一番努力后我发现利用int 21H中的01号功能调用可以较好的实现输入功能,原因是Int 21H 的01号功能调用可以直接接收键入的字符,当有键按下时,首先检查是否是ctrl+break,若是,则执行退出命令;否则将键值送入AL寄存器并回显。
通过这次汇编语言程序课程设计,我学到了许多东西,同时也发现了一些不足之处,在以后的学习中我会逐步弥补这些不足。
总而言之,此次课程设计使我受益匪浅。
参考文献[1] 李敬兆.8086/8088和基于ARM核汇编语言程序设计.合肥:中国科技大学出版社,2008[2] 李敬兆.8086/8088和基于ARM核汇编语言程序设计实验教程.合肥:中国科技大学出版社,2008[3] 杨季文.80x86汇编语言程序设计教程.北京:清华大学出版社,2004[4] 周佩玲,彭虎,傅忠谦.微机原理与接口技术.北京:电子工业出版社,2005程序清单data segmentx dd 0y dd 0z dd 0tmp dw 0ten dw 10op db 0message db 0DH,0AH,'Please input the expression:',0DH,0AH,'$' ;提示用户输入算式。
data endsassume cs:code, ds:datacode segmentstart:mov ax, datamov ds, axnx0:mov ah, 9lea dx, message ;DX指向message,提示输入算式。