




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言课程设计报告( 2010 - 2011 年度第 2 学期)课题名称:实现加减乘除四则运算的计算器专业计算机科学与技术学生姓名汤浩军班级B计算机091学号0910704117指导教师王 志 宏完成日期2011年6月24日目录1设计目的12概要设计22.1 系统总体分析22.2 主模块框图及说明23 详细设计43.1 主模块及子模块说明43.2 各模块详细设计44程序调试64.1 运行界面分析64.2 算法的分析64.3 调试过程及分析65小结75.1 设计总结7参考文献8源程序清单9I2011汇编语言课程设计1设计目的通过本次的课程设计,加深对汇编语言的了解,应用汇编语言程序设计教程等所学相关知识及查阅资料,完成加减乘除计算器的设计,以达到理论与实践更好的结合,进一步提高自身的水平和对汇编语言的认识。2概要设计2.1 系统总体分析本次设计的加减乘除四则运算的计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计的这个计算器可以一次运行,多次使用。2.2 主模块框图及说明 本程序的功能结构图如图2-1:计算显示进制转换清屏主程序 图 2-1 功能结构图程序流程图如图2-2: 输入NUM1初始化检验是不是数输入NUM2否是是是检验是不是数是开始选择运算符号减加乘除操作数一是否比二大除数是否为0将结果转化为十进制结束否 图2-2 流程图3 详细设计3.1 主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。子模块:主要完成对数据的加工,处理。3.2 各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。整个过程按“ESC”结束。流程图如下图3-1:显示结果判断输入的合法性接受输入显示主界面,提示输入 N 提示出错,返回 Y 图3-1 主模块流程图子模块: 完成对数据的进一步加工处理,转换格式并得出结果。首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:调用对应模块运算数据,得出结果返回主界面判断合法性接收用户的运算符号 N Y 图3-2 子模块流程图4程序调试4.1 运行界面分析 运行界面如图4-1图4-1 运行界面 在NUM1这一行会提示输入第一个数据,NUM2这一行提示输入第二个数据,输入完成两个数据后程序会提示允许输入运算符,输入无误后在RESULT行显示结果。4.2算法的分析本程序使用了宏和函数调用的方法,这样做使得整个程序体看上去严谨,舒服。整个程序中的CHANGE子程序,将十六进制数转换为十进制数。BEGIN子程序开始运算。DISPMSG子程序,显示用户界面。通过这几个及程序的协助,使得这个系统可以正常的运行。4.3 调试过程及分析 编写完代码后分别点击按钮“C”,”L”,”R”,依次完成编译、连接和运行过程,也可以进入DOS环境下用DEBUG命令完成类似的功能,整个程序按“ESC”退出。5小结5.1 设计小结通过本次课程设计,加深了我对汇编语言的认识;让我对汇编语言源程序的编辑、汇编、连接和调试的全过程更加熟练;在学习过程中,我了解了汇编语言的一些特点,感觉到汇编语言的执行效率非常高,由于汇编是对底层的操作,这一点决定了它在代码的产量方面不如一些高级语言。同时,我也知道了合作的重要性,和网络的重要性,不懂的可以通过网络寻求帮助,感谢那些帮助过我的人,和一起做实验的同学,这个实验不仅仅让我学到了知识,更让同学之间更加了解认识,对本次实验的成果非常满意。感谢老师的教导。参考文献1李敬兆等编.汇编语言程序设计.合肥:中国科学技术大学出版社,2008.92刘其明等编.汇编语言程序设计教程中国矿业大学出版社,2010.113王爽等编.汇编语言.北京:清华大学出版社,2003.5源程序清单CURS MACRO A,B MOV AH,2 ;置光标位置 MOV BH,0 ;页号为0 MOV DH,A ;设置光标的坐标为(A.B) MOV DL,B INT 10H ;BIOS调用 ENDM ;- DISPMSG MACRO MESSAGE LEA DX,MESSAGE ;传递MESSAGE的偏移地址 MOV AH,9 ;显示字符串 INT 21H ;DOS调用 ENDM ;- CLEAR MACRO COLOR ;清屏 MOV AH,6 ;屏幕初始化 MOV AL,0 ;页号 MOV CH,0 ;设置左上角的坐标为(0,0) MOV CL,0 MOV DL,100 ;设置右上角的坐标为(100,100) MOV DH,100 MOV BH,COLOR ;卷入行属性 INT 10H ;BIOS调用 ENDM .MODEL SMALL .STACK .DATA ;数据段定义 MSG0 DB * * * * * * * * * * * * * * * * * * * *,0DH,0AH ;,0dh,0ah,0dh,0ah DB * *,0DH,0AH ;db * *,0dh,0ah ;db * *,0dh,0ah DB * -caculater- *,0DH,0AH ;,0dh,0ah,0dh,0ah DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * NUM1: DB *,0DH,0AH ;,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH DB * NUM2: DB *,0DH,0AH ;,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH DB * RESULT: DB *,0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * *,0DH,0AH DB * * * * * * * * * * * * * * * * * * * *,$ MSG1 DB choose +,-,*,/,$ MSG2 DB you choose wrong,$,0AH,0DH MSG3 DB Press ESC to Exit!,0DH,0AH,$ MSG4 DB Press any key to continue!,0DH,0AH,$ MSG5 DB -,$ MSG6 DB .,$ MSG7 DB error input!,$ MSG8 DB data2 is wrong!,$ NUM1 DW ? NUM2 DW ?BEGIN PROC NEAR BACK: CLEAR 1EH CURS 2,20 ;设置光标为(2.20) DISPMSG MSG0 ;显示用户界面 CURS 8,41 ;设置光标为(8,41) ,第一行 MOV BX,0 MOV CX,2 NEWCHAR1: MOV AH,1 ;键盘输入并回显 INT 21H ;DOS调用 CMP AL,30H ;检查输入的字符是不是数字 JAE J1 ;如果不是,则转移至J1 JMP D2 ;是,转移到D2执行 J1: CMP AL,39H ; 与9的ASCII比较 JBE J2 ;如果输入的字符是0-9,则转移至J2 JMP D2 ;如果不是数字,则转移至D2 J2: SUB AL,30H CBW ;AL的内容符号扩展到AH XCHG AX,BX MOV DI,10 MUL DI XCHG AX,BX ADD BX,AX LOOP NEWCHAR1 MOV NUM1,BX CURS 11,41 ;设置光标位为(11,40),第二行 MOV BX,0 MOV CX,2 NEWCHAR2: MOV AH,1 ;键盘输入并回显 INT 21H ;DOS调用 CMP AL,30H ;与0的ASCII码比较 JAE J3 ;如果输入数字大于等于0则跳转至J3 JMP D2 J3: CMP AL,39H ;与9比较 JBE J4 ;如果小于或等于9则跳转 JMP D2 ;如果输入不是数字则跳转 J4: SUB AL,30H ;如果输入不是0-9,则转化成相应的字符 CBW ;将AL符号扩展到AH XCHG AX,BX MOV DI,10 MUL DI XCHG AX,BX ADD BX,AX LOOP NEWCHAR2 MOV NUM2,BX MOV AX,NUM1 MOV BX,NUM2 PUSH AX PUSH BX CURS 15,33 ;设置光标的位置为(15.33),第三行 DISPMSG MSG1 ;显示提示信息 MOV AH,1 ;接受键盘输入并回显 INT 21H ;DOS调用 CMP AL,+ JE ADDI ;如果运算符为+,则计算两数之和 CMP AL,- JE SUBT ;如果运算符为-,则计算两数之差 CMP AL,* JE MULT ;如果运算符为*,则计算两数之积 CMP AL,/ JE DIVI ;如果运算符为/,则计算两数之商 CURS 16,25 ;设置光标为(16,25) DISPMSG MSG2 ;在屏幕上输出提示信息 JMP D1 ;- ;ADD THE TWO DATAS ADDI: POP BX POP AX ADD AX,BX ;计算两数字之和 PUSH AX CURS 14,41 ;设置光标位置为(14,41) POP AX CALL CHANGE ;将结果转换为十进制数 JMP D1 SUBT: POP BX POP AX CMP AX,BX ;比较两数大小 JAE D0 ;如果AX=BX则跳转 XCHG AX,BX PUSH AX PUSH BX CURS 14,40 ;设置光标位置为(14,40) DISPMSG MSG5 ;在屏幕上显示负号 POP BX POP AX D0: SUB AX,BX ;计算两数之差 PUSH AX CURS 14,41 ;设置光标位置为(14,41) POP AX CALL CHANGE ;将结果转换为十进制数 JMP D1 MULT: POP BX POP AX MUL BX ;计算两数之积 PUSH AX CURS 14,41 ;设置光标位置为(14,41) POP AX CALL CHANGE ;将结果转换为十进制数 JMP D1 DIVI: POP BX POP AX CMP BX,0 ;判断除数是否为0 JE ERROR ;如果是0则跳转 CWD DIV BX ;计算两数之商 PUSH DX PUSH AX CURS 14,41 ;设置光标位置为(14,41) POP AX CALL CHANGE ;将十六进制数转换为十进制数 POP DX CMP DX,0 JNE LOP ;如果DX不等于0则跳转 JMP D1 LOP: MOV CX,4 ;设置精确度为小数点后4位 PUSH DX DISPMSG MSG6 ;输出小数点 POP DX CON: PUSH BX MOV AX,DX MOV BX,10 MUL BX POP BX CWD ;将AX的内容符号扩展到双字 DIV BX ;计算小数点后每一位的数字 PUSH DX PUSH CX CALL CHANGE ;将十六进制数转化为十进制数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国甜八宝数据监测报告
- 快递考试题目及答案
- 空中乘务考试题及答案
- 果蔬坚果加工工岗位操作技能考核试卷及答案
- 炼钢准备工专项考核试卷及答案
- 2025年中国多功能平板跑步机数据监测研究报告
- 矿用发电车操作工基础考核试卷及答案
- 综合布线装维员上岗考核试卷及答案
- 精神控制考试题及答案
- 金蝶软件考试题及答案
- 2025年江苏省农垦集团有限公司招聘笔试备考及答案详解(新)
- 生物安全培训试题(答案)
- 陪玩团基本知识培训课件
- 2025年公证处聘用制书记员招聘考试要点及面试模拟题解析
- 2025江西吉安庐陵新区招聘社区工作者(专职网格员)招聘22人考试参考试题及答案解析
- 芯片研发流程管理办法
- 2025-2026学年广美版(2024)小学美术二年级上册教学计划及进度表
- 电子工程师知识培训课件
- 2025年手电筒行业研究报告及未来行业发展趋势预测
- 设备使用与保养培训课件
- 兵团连队职工考试试题及答案解析
评论
0/150
提交评论