




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课设报告福建工程学院软件学院题 目: 汇编计算器班 级: 1301 姓 名 学 号: 指导老师:日 期: 目录1、设计目的32、概要设计32.1 系统总体分析32.2 主模块框图及说明33、详细设计43.1 主模块及子模块概述43.2各模块详运算44、程序调试74.1 运行界面分析7算法分析74.2 调试过程与分析95、心得体会115.1 设计体会115.2 系统改进11附录:111、设计目的本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。2、概要设计用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在065535。2.2 主模块框图及说明此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。3、详细设计3.1 主模块及子模块概述根据题目要求,可以把程序的工作过程划分为运算表达式输入、计算、结果输出三部分。因此在编写程序时可以按此把程序大致划分为三个模块。输入:界面的显示设置,以及输入的字符问题进行设计计算:该模块为计算器的核心部分,其中包括运算级的优先级转换和基本的加减乘除函数的函数的编写。显示:对其结果进行一个输出显示。3.2 各模块详运算1运算表达式输入.加减乘除函数(1)加法指令指令格式: 加法 ADD DST, SRC; (DST)(SRC)+(DST) 带进位加法 ADC DST, SRC; (DST)(SRC)+(DST)+CF 加1 INC OPR; (OPR)(OPR)+1 (2)减法指令格式: SUB DST,SRC ; (DST)(DST)-(SRC) 带进位减法 SBB DST,SRC ; (DST)(DST)-(SRC)-CF 减1 DEC OPR ; (OPR)(OPR)-1 求补 NEG OPR ; (OPR)0FFFFH-(0PR)1 比较 CMP OPR1, OPR2 ; (OPR1)-(OPR2) (3)乘法指令 乘法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。指令格式: 无符号数乘法 MUL SRC;(AX)(AL)(SRC)8位数乘法 (DX,AX)(AX)(SRC)16位数乘法(4)除法指令 除法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。当除数是8位或16位二进制数时,要求被除数是16位或32位的二进制数。指令格式: 无符号数除法 DIV SRC;(AL)(AX)/(SRC)8位二进制数除法的商 (AH)(AX)/(SRC)8位二进制数除法的余数 或(AX)(DX,AX)/(SRC) 16位二进制数除法的商 (DX)(DX,AX)/(SRC) 16位二进制数除法的余数.输出显示指令格式: 当数值存储区里面剩下一个数值(或者符号存储区里面没有符号)时,运算结束,需要把运算结果输出显示。分析运算结果的特点:运算结果为一个2进制补码,整数,如果数据长度为16位,则运算结果范围是:065535。运算结果的输出要解决的主要问题是:正负数区分、补码到ASCII码转换并输出显示。运算结果的输出流程如图所示。(1)正负数区分运算结果有三种情况:正整数、负整数、零。运算结果以补码形式对这三种情况进行统一的存储,显示输出时不同。负整数前面需要显示“-”号,因此要在进行器转换该程序直接对执行结果一补码形式输出。另一方面,正整数和零的补码与原码相同。而负整数的补码则不一样。把负整数进行取补码运算,把它转换为原码,可以实现运算结果统一的ASCII码转换输出方法,而不需要分别为正整数和零、负整数分别设计两个不同的ASCII码转换程序。 (2)补码到ASCII码转换计算结果在屏幕上的输出显示实际上是ASCII码的输出显示。假设程序采用的数据长度为16位,则运算结果范围是:065535,即屏幕最多得显示5位ASCII码。 (3)利用除最高位法将一个多位数的各位进行一个输出。分离方法是先除以10位数-1,得到的商即为最高位,余数为删除最高位后的多位数。接着令余数除以10位数-2,得到的商为次高位,。例如123,其位数是3(个位、十位、百位),则计算过程为:123/103-1,商是1,余数是2323/103-2,商是2,余数是33/103-3,商是3,余数是0可见经过三次计算,得到的三个商刚好是对123的各位的分离结果,而且顺序跟输出方向相同。可以直接加30H转换输出,屏幕显示为“123”。该图的流程程图所示。 把原码转换为ASCII码 这个转换过程实际上跟上文的“数值的补码转换方法”是相反操作。例如要把123在屏幕上输出显示,即要把123的百位、十位、个位分离,得到1、2、3,然后转换为31H、32H、33H三个ASCII码。众所周知,把一位数转换为ASCII码只需加30H即可。4、程序调试 4.1 运行界面分析整体一个架构可以直观的看出整个计算器界面和基本的加减运算以及输入提示。算法分析主程序模块.主程序模块首先实现调用子程序加减乘除,优先级运算等,初始化数据段,将寄存器ax,bx,cx,dx初始化赋初值为0,输入字符或数字并判断,调用子程序AAAA,等子程序,判断优先级,调用加减乘除运算子程序对所输入的式子判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序.1显示计算器界面利用09H的功能号调用将所设计的界面直观的显示出来源代码:TAB1 DB 13,10,HUI BIAN JI SUAN QI SHE JI$ TAB2 DB 13,10, 1 2 3 4 $ TAB3 DB 13,10, 5 6 7 8 $ TAB4 DB 13,10, 9 0 + - $ TAB5 DB 13,10, * / ( ) $ TAB6 DB 13,10,PLEASE INPUT A FORMULA: $ TAB7 DB 13,10,$ MOV DX,OFFSET TAB1 MOV AH,09H INT 21H.2输入字符及转换程序模块在输入字符或数字该程序要需要将其所输入的子符进行转换,此模块包括运算符号和数字的ASC码的转换、负数的补码(该计算器输出范围为065535)转换。源程序代码:AC码的转换MANA: ; MOV C0,AX ADD C1,1 MOV AX,BX MOV CX,10 MUL CX ADD AX,C0 MOV BX,AX JMP STARTW4符号的优先级运算符号的运算优先问题,该程序利用静态的优先级判断所输入的式子的四则运算优先顺序。5.子运算程序加减乘除的子程序调用例如:加法源程序代码:ADDD: ADD DI,2 MOV BX,NUM4DI ADD AX,BX ADD DI,2 JMP INT3 6.输出显示对于结果的一个输出,该计算器采用除最高位输出各位。源程序代码段:OUTPUT PROC NEAR .OUT1: MOV AX,BX ;将余数赋还给AX 因为除数十16位,所以余数在DX中 ADD SI,2 ;BP加二,用以调用下一个被除数 LOOP OUTT CALL ENTER JMP STARTA ;跳回程序开始 RET AADD: INC OLT JMP OUT2OUTPUT ENDP注:该计算器的除法的结果以取整的形式输出 4.2 调试过程与分析,1.初始化程序界面2.当操作错误时会报错注:该计算器只能是按“=”才正确的输出计算结果,按“enter”等其他无效方式也会进行报错3.计算器的四则运算结果举例4关于补码和溢出问题当在进行四则运算过程中,若结果为负数则结果一补码的形式输出,若结果超出结果范围则溢出。5、心得体会 5.1 设计体会本次的课程设计对于计算器的设计要怎么用汇编语言编写四则运算。编写计算简单的不带括号的没有优先级的+、- 或 *、/、运算程序还是不太难的,因为没有优先级程序只要根据表达式运算符的顺序从左到右进行运算,最后输出结果。而该课程设计要求设计能进行简单的的 +、- 或 *、/、混合运算的四则运算程序,这样程序设计时相对于有括号的计算要用到设定权值的办法来设置符号的优先级比起来简单很多。这次的课程设计等于将本学期所学习的汇编知识对其进行一个综合的应用,而且对其汇编有了基本的了解。在本次的课程设计中我主要负责四则函数的编写和输出显示,在过程中也遇到挺多的困难,对于汇编掌握的不透彻,只能通过查找资料和同学的帮助下来编写程序当然还是有效果的,对于这两部分的难点所在我觉得是输出部分,首先要分析计算结果为多位数的各位问题要采用哪种方法进行输出,在经过分析后最终采用除最高位法进行一个输出。此方法较为简单相比较于除十法,因为在除十法还设计到堆栈问题增加了程序量,且该计算器纸对其进行简单的四则运算所以除最高位法适用。 5.2 系统改进这个计算器设计的较为简单,只能进行一些简单的不带括号的进行运算,对于一些较为复杂的四则混合运算不适用。则此外界面系统可以利用BIOS中断和DOS中断和调用显示功能进行程序设计,显示相应的图形或字符对其进行界面美化。此外在输出方面在除法的运算的输出可以对其修改例如不能整除的可以一小数输出等以及除高位法有个缺陷必须首先确定要输出的数值有多少位,编程者必须十分清楚需要输出的数值的数值范围可以对其进行一个改进。附录:DATA SEGMENT TAB1 DB 13,10,HUI BIAN JI SUAN QI SHE JI$ TAB2 DB 13,10, 1 2 3 4 $ TAB3 DB 13,10, 5 6 7 8 $ TAB4 DB 13,10, 9 0 + - $ TAB5 DB 13,10, * / ( ) $ TAB6 DB 13,10,PLEASE INPUT A FORMULA: $ TAB7 DB 13,10,$ NUM1 DW 100 DUP(0) NUM3 DW 100 DUP(0) NUM4 DW 100 DUP(0) C0 DW 0 C1 DW 0 C2 DW 0 SUM1 DW 0 SUM2 DW 0 OLT DW 0 RESULT DW 0 TABLE DW 10000,1000,100,10,1 WRONG DB 13,10,WRONG INPUT!$ ;OVER DB 13,10,NOT OPERATIONAL CHARACTER!$ DATA ENDS;-;-代码段-CODE SEGMENT ASSUME CS:CODE,DS:DATA;-主程序- START: MOV AX,DATA MOV DS,AX CALL DISPMENU ; 显示汇编计算器菜单 STARTA: MOV BX,-1 MOV SI,0 MOV DI,30 MOV CX,0 MOV C0,0 MOV C1,0 MOV C2,0 ; 初始化各个变量 CALL INPUT CALL YUNSUAN CALL OUTPUT EXIT: MOV AH,4CH INT 21H ;-计算器显示菜单子程序- DISPMENU PROC NEAR MOV DX,OFFSET TAB1 MOV AH,09H INT 21H MOV DX,OFFSET TAB2 MOV AH,09H INT 21H MOV DX,OFFSET TAB3 MOV AH,09H INT 21H MOV DX,OFFSET TAB4 MOV AH,09H INT 21H MOV DX,OFFSET TAB5 MOV AH,09H INT 21H MOV DX,OFFSET TAB6 MOV AH,09H INT 21H MOV DX,OFFSET TAB7 MOV AH,09H INT 21H RETDISPMENU ENDP ;-;输入字符及转换程序模块;-输入并转换子程序,结果式存入NUM1-INPUT PROC NEARSTARTW: MOV AH,1 INT 21H MOV AH,0 CMP AL,1BH ; ESC JZ EXIT CMP AL,2AH ; * JZ MARK CMP AL,2FH ; / JZ MARK CMP AL,2BH ; + JZ MARK CMP AL,2DH ; - JZ MARK CMP AL,29H ; ) JZ MARK CMP AL,28H ; ( JZ MARK CMP AL,3DH ; = JZ EQUAL SUB AL,30H CMP AL,0 JL ERROR CMP AL,9 JA ERROR JMP ARITHERROR: ;显示输入错误 LEA DX,WRONG MOV AH,9 INT 21H JMP STARTAARITH: CMP C1,0 JE TTOM MANA: ;数值的补码转换 MOV C0,AX ADD C1,1 MOV AX,BX MOV CX,10 MUL CX ADD AX,C0 MOV BX,AX JMP STARTWTTOM: MOV BX,0 JMP MANA MARK: CMP BX,-1 JE GGON MOV NUM1SI,BX ADD SI,2 MOV NUM1SI,AX MOV BX,-1 MOV C1,0 ADD SI,2 JMP STARTW GGON: MOV NUM1SI,AX ADD SI,2 JMP STARTW EQUAL: ;输入是等号时,调到主程序执行运算 CMP BX,-1 JE LLOP MOV NUM1SI,BX ADD SI,2 MOV NUM1SI,AX JMP ENDW LLOP: MOV NUM1SI,AX JMP ENDW ENDW: RET INPUT ENDP ;- ;-运算的子程序-; YUNSUAN PROC NEARAAAA: MOV BP,0 MOV DI,0 MOV BX,0 MOV C0,0 MOV C1,0 MOV SUM2,0 MOV SI,0 BBBB: MOV AX,NUM1SI CMP AX,29H ; JE RSEE ADD SI,2 CMP AX,3DH ; = JE LASTL JMP BBBBRSEE: SUB SI,2 MOV AX,NUM1SI CMP AX,28H ; JE MOTT JMP RSEEMOTT: MOV SUM2,SI MOV DI,0 KKTY: ADD SI,2 MOV AX,NUM1SI MOV NUM3DI,AX ; CMP AX,29H ; JE RCOUNT ADD DI,2 JMP KKTYRCOUNT: MOV SUM1,SI CALL CALC MOV DI,SUM2 MOV AX,RESULT MOV NUM1DI,AX MOV SI,SUM2CCOO: ADD SI,2 ADD DI,2 MOV AX,NUM1SI MOV NUM1DI,AX CMP AX,3DH ; = JE AAAA JMP CCOO LASTL: MOV SI,0UUCC: MOV AX,NUM1SI MOV NUM3SI,AX ADD SI,2 CMP AX,3DH ; = JE ENDL JMP UUCC ENDL: CALL CALC RETYUNSUAN ENDP ;- ;- 计算混合运算的子程序-CALC PROC NEAR MOV AX,NUM3 MOV NUM4,AX MOV DI,2 MOV C0,SI MOV SI,2INT1: MOV BX,NUM3SI CMP BL,2AH ;* JE MULL CMP BL,2FH ;/ JE DIVV CMP BL,3DH ;= JE CHUBU CMP BL,29H ;) JE CHUBU CMP BL,2BH ;+ JE POTT CMP BL,2DH ;- JE POTT INT2: MOV NUM4DI,BX ADD DI,2 ADD SI,2 MOV AX,NUM3SI MOV NUM4DI,AX ADD DI,2 ADD SI,2 JMP INT1POTT: SUB DI,2 MOV NUM4DI,AX ADD DI,2 JMP INT2 MULL: ADD SI,2 MOV BX,NUM3SI MUL BX ADD SI,2 JMP INT1DIVV: ADD SI,2 MOV BX,NUM3SI DIV BX ADD SI,2 JMP INT1ADDD: ADD DI,2 MOV BX,NUM4DI ADD AX,BX ADD DI,2 JMP INT3 SUBB: ADD DI,2 MOV BX,NUM4DI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁波大学科学技术学院《合唱与指挥专业理论教学》2023-2024学年第二学期期末试卷
- 中南大学《设备安全学》2023-2024学年第一学期期末试卷
- 江西工商职业技术学院《信息系统审计》2023-2024学年第二学期期末试卷
- 林地管理合同协议
- 荆州理工职业学院《中药生物技术》2023-2024学年第二学期期末试卷
- 天津医科大学《音频与视频广告》2023-2024学年第二学期期末试卷
- 湖北警官学院《基础电化学》2023-2024学年第二学期期末试卷
- 上海电影艺术职业学院《复变函数理论》2023-2024学年第一学期期末试卷
- 数据隐私保护与网络设计的结合试题及答案
- 药剂学基础知识试题及答案
- 煤矿安全风险分级管控与隐患排查治理双重预防机制建设指南
- 2024秋期国家开放大学《钢结构(本)》一平台在线形考(阶段性学习测验1至4)试题及答案
- 人员素质测评理论与方法
- 部编版四年级语文下册期中试卷+ 答题卡(含答案)
- GB/T 44373-2024智能网联汽车术语和定义
- 激光雕刻切割软件LaserSoft操作说明书(多文档版)
- mm立式矫直机辊系设计
- DL∕T 1248-2013 架空输电线路状态检修导则
- 国际物流专员聘用协议
- 《探究杠杆的平衡条件》说课稿(全国实验说课大赛获奖案例)
- 2024年江西省初中学业水平考试数学试题卷
评论
0/150
提交评论