《2022年汇编语言课程设计报告——实现加减乘除四则运算的计算器 .docx》由会员分享,可在线阅读,更多相关《2022年汇编语言课程设计报告——实现加减乘除四则运算的计算器 .docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 汇 编 语 言 课 程 设 计 报 告 2022 - 2022 年度第 2 学期 实现加减乘除四就运算的运算器专业电脑科学与技术学 生班 级学 号指导老师完成日期名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算器目 录目 录 . 1 1 概 述. 0 1.1 设计目的 . 0 1.2 设计内容 . 0 2 系统需求分析 . 0 2.1 系统目标 . 0 2.2 主体功能 . 0 2.3 开发环境 . 0 3 系统概要设计 . 1 3.1 系统的功能模块划
2、分 . 1 3.2 系统流程图 . 2 4 系统具体设计 . 2 5 测试 . 3 5.1 测试方案 . 3 5.2 测试结果 . 3 6 小结 . 4 参考文献 . 5 附 录 . 6 附录 源程序清单 . 6名师归纳总结 - - - - - - -第 2 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算器实现加减乘除四就运算的运算器1 概 述1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成全部实践环节的基础上,旨在深化同学学习的汇编语言课程基本学问,进一步把握汇编语言程序设计方法,提高分析问题、解决问题的综合应用才能;1.2 设计
3、内容能实现加、减、乘、除的运算;该程序接受的是16 进制数;执行时,需要在文件名后直接跟上运算表达式,如在命令提示符下执行结果如下:c:tasmjs 3+2 5 2 系统需求分析系统目标本次汇编语言课程设计的最终目的是要实现一个简洁加减乘除四就运算的计 算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四就运 算;比方,十进制数的加减乘除四就运算;我们曾经学习过两个具体数字进行加减 法运算,但是对于简洁运算器用汇编语言实现难点在于这两个要做运算的数是未知 的,是由自己调用中断输入到屏幕上并要用程序储备起来的数,然后才能对这两个 数进行运算,而且做的是加法运算、减法运算乘法运算仍
4、是除法运算也未可知,为 此我们仍要判定用户所输入的运算是四就运算中的哪一个运算;此外,运算过程中 的进位或是借位,挑选用什么样的方式进行输出,如何实现清屏等也是要解决的问 题;主体功能系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个 软件都要能满意肯定的功能才有使用价值;依据功能需求来创建应用程序;本设计的功能如下: 1、输入 2 个数,先判定是加减运算仍是乘除运算,再进行运算 2、判定符号是否为运算符、回车为换行符 3 4、用十进制或十六进制输出运算结果2.3 开发环境0 名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - -
5、 - - - 汇编语言设计课程设计 3 系统概要设计系统的功能模块划分此题目实现的模块图如图 3-1 所示四就运算运算器程序设计界 面 设 置选 择 算 法 设 置十 进 制 转 换 设置图 3-1 概要模块1 界面设置 主要实现确定界面样式的功能,以菜单形式显示;2 挑选算法设置 用于挑选加、减、乘、除法来进行运算;3 十进制转换设置 应用十进制的转换算法来处理加、减、乘、除法四就运算;1 名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算器3.2 系统流程图开 始输入挑选键 x 是否X=1. 是十六进
6、制加法否X=2. 是十六进制减法否X=3. 是十六进制乘法否X=4. 是十六进制除法X=0.提示出错!否否X=Y/y ?.是结 束4 系统具体设计4.1 界面设置通过定义数据段,利用 式输入每个提示信息,利用09H显示出功能列表;通过定义数据段,以字符串的形 09H键盘输入并回显命令显示每一个功能提示,是运算器的功能列表有序清楚的显示在屏幕上;4.2 挑选算法设置第一挑选要进行的四就运算,假设挑选1,就进行加法;假设挑选2,就进行减法;假设挑选 3,就进行乘法;假设挑选4,就进行除法;加法:先输入第一个小于 4 位十六进制数存入SI 中,在输入其次个小于4 位十六进制数存入BX中,然2 名师归
7、纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - 汇编语言设计课程设计后显示 BX 和SI 中的内容相加存在 BX中;减法:先输入第一个小于 4 位十六进制数存入 SI 中,在输入其次个小于 4 位十六进制数存入 BX中,然后显示 BX 和SI中的内容相减存在 BX中,然后用 NEG来求反,即为第一个数减去其次个数的差,显示 BX的内容即为差;乘法:先输入第一个小于 4 位十六进制数存入 SI 中,在输入其次个小于 4 位十六进制数存入 BX中,把 BX的值给 AX,然后让 AX乘以 SI ,然后再分别将 DX,AX中的内容赋给 BX,
8、接着依次显示 DX,AX的内容,即为积;除法:先输入第一个小于 4 位十六进制数存入 SI 中,在输入其次个小于 4 位十六进制数存入 BX中,将 SI 赋给 AX作被除数,让 BX作除数,得到的商存放在 AX中,余数放在 DX中,然后依次赋给 BX,将其依次显示即为商;4.3 十进制转换设置要完成十进制转换成十六,一般采纳除十六取余法来完成,其大致过程如下:将待转换的数除以 16 得到第一个商和余数,此第一个余数就是所求的十六进制数的各位,再用第一个商除以 16,得到其次个商和余数,此其次个余数就是所求十六进制数的十位,重复这一过程直至商为 0,此时的余数就是所求十六进制数的最高位;在内存中
9、安排一缓冲区,用来存放以上别离出来的使十进制数的每一位,然后再逐个转换成 ASCII 码,转换成 ASCII 码的过程很简洁,就是给每个十六进制位加上 30H即可,最终送显示器输出;5 测试5.1 测试方案对程序源代码进行功能调试和功能验证;程序代码运行胜利后,分别检验测试其加、减、乘、除功能,并对结果进行分析;当用户挑选 否退出程序;5.2 测试结果0 时,输入 Y 或 N打算是输入数字进行加减乘除运算,运算结果如以下图所示:图 5.2.1 运算结果3 名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算
10、器测试终止后,退出程序,如以下图所示:图 5.2.2 退出程序6 小结程序的主要功能是实现四就运算,整个程序中主要分为,输入算式,加法,减 法,乘法,除法和以十进制显示结果这几个部分;本程序基本实现了四就运算的功 能,但仍没能实现带有括号的四就运算,仍有在除法运算中不能运算较大的数,会 产生溢显现象; 一开头的时候自己编出来的程序有许多问题,特别是在循环程序上,因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行;由于才能有限,程序仍是有不完善的地方;这次的综合试验让我对汇编有了更深刻 的熟悉,对各种指令有了进一步的懂得;4 名师归纳总结 - - - - - - -第 7 页
11、,共 14 页精选学习资料 - - - - - - - - - 汇编语言设计课程设计参考文献1 刘其明 . 汇编语言程序设计教程 . 徐州:中国矿业高校出版社 , 20 5 名师归纳总结 - - - - - - -第 8 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算器附 录附录 源程序清单IN16 MACRO ;完成从键盘接受二个数并转换为十六制数,第一个数由SI 指向,其次LEA DX,PR ;DX个数存放在BX中指向 PR换行CALL OUTPUT ; LEA DX,INPUT1 ;DX 指向 INPUT1,提示输入第一个数 CALL OUT
12、PUT CALL INPUT ; 把输入的数存放在 BX中 LEA SI,RESULT ;SI 指向 RESULT MOV SI,BX ; 把第一个十六制数存入 RESULT的第一个位置 LEA DX,PR ;DX 指向 PR,换行 CALL OUTPUT LEA DX,INPUT2 ;DX 指向 INPUT2,提示输入第一个数 CALL OUTPUT CALL INPUT ;把输入的数存放在BX中ENDM ;宏终止DATA SEGMENT ;数据段BUF DB ,0DH,0AH DB *- WELCOME TO CALCULATOR SYSTEM -*,0DH,0AH DB *-1:ADD-
13、2:SUB-3:MUL-4:DIV-0:QUIT-*,0DH,0AH DB *- 2022*6*21-*,0DH,0AH DB 0DH,0AH,Please input the choose number:,$ INPUT1 DB Please input the first number xiao yu 4 wei:,$ INPUT2 DB Please input the second number xiao yu 4 wei:,$ RESULT DW .,. ; 存放键盘输入的两个十六制数WRO DB You input the number is wrong,please input
14、again:,0DH,0AH,$; PR DB 0DH,0AH,$ ; 将光标移到下一行起始位置 PR1 DB A + B=$ PR2 DB A - B=$ PR3 DB A * B=$ PR4 DB A / B=$ 6 名师归纳总结 - - - - - - -第 9 页,共 14 页精选学习资料 - - - - - - - - - 汇编语言设计课程设计PR5 DB .$ PR6 DB Are you sure exit.Y/N$ DATA ENDS ; 数据段落定义终止 CODE SEGMENT MAIN PROC FAR ; 主函数ASSUME CS:CODE ,DS:DATA START
15、: MOV AX,DATA MOV DS,AX LEA DX,BUF ;DX 指向 BUF换行 CALL OUTPUT ; 调用显示字符串函数换行SUB AX,AX ;AX 清零CALL CHOOSE ; 调用挑选函数 JMP START ; 跳转到 START RET MAIN ENDP INPUT PROC NEAR ;定义 INPUT函数,就是将从键盘输入的数按原十六进制数存放在BX中MOV BX,0 ;BX清零NEWCHAR: MOV AH,1 INT 21H ; 接受键盘输入一个字符 CMP AL,0DH ; 输入的字符与回车比较 JE EXIT ; 是回车就终止CMP AL,A ;
16、 与 A 比较 JAE H0 ; 大于等于就跳转到 H0 CMP AL,0 ; 与 0 比较 JAE H1 ; 大于等于就跳转到 H1 H0:SUB AL,37H ; 由于 41-A=37, 完成把字母字符转换成对应的十六进制数 JMP ADDTO ; 跳转到 ADDTO H1:SUB AL,30H ; 把 0 到 9 的字符转换成对应的十六进制数 JMP ADDTO ; 跳转到 ADDTO ADDTO: MOV CL,4 ; 相当于让 BX乘以 16 SHL BX,CL ; 将 BX规律左移7 名师归纳总结 - - - - - - -第 10 页,共 14 页精选学习资料 - - - - -
17、 - - - - 实现加减乘除四就运算的运算器MOV AH,0 ; 将 AX清零ADD BX,AX ;AX+BX 送到 BX JMP NEWCHAR ; 跳转到 NEWCHAR, 把其次个输入的字符存放到 BX的其次位EXIT: RET INPUT ENDP OUTPUT PROC NEAR ;显示字符串函数MOV AH,09H INT 21H RET OUTPUT ENDP CHOOSE PROC NEAR ;挑选函数MOV AH,1 ; 从键盘接受一个数INT 21H CMP AL,1 ; 与 1 比较JE YES1 ; 等于 1 就跳转到 YES1,进行加法CMP AL,2 ; 与 1
18、比较JE YES2 ; 等于 2 就跳转到 YES2,进行减法CMP AL,3 ; 与 1 比较JE YES3 ; 等于 3 就跳转到 YES2,进行乘法CMP AL,4 ; 与 1 比较JE YES4 ; 等于 4 就跳转到 YES2,进行除法CMP AL,0 ; 与 0 比较JE EXIT1 ; 等于 4 就跳转到 EXIT1, 终止程序CALL WRONG ; 假如不是 0 到 4 之间的数就提示出错EXIT1: LEA DX,PR ;DX 指向 PR换行CALL OUTPUT LEA DX,PR6 ;DX 指向 PR6,确认是否退出CALL OUTPUT MOV AH,1 ; 从键盘接
19、受一个数INT 21H CMP AL,Y ; 与 Y 比较JE EXIT0 ; 不是 Y 就看是否为 y CMP AL,y ; 与 y 比较JNE START ; 不是 y 就跳转到 START 8 名师归纳总结 - - - - - - -第 11 页,共 14 页精选学习资料 - - - - - - - - - 汇编语言设计课程设计EXIT0:MOV AH,4CH ; 终止本程序INT 21H YES1:CALL JIA ;调用 JIA 函数START JMP START ;调用完之后跳转到YES2:CALL JIAN ;调用 JIAN 函数START JMP START ;调用完之后跳转到
20、YES3:CALL CHENG ;调用 CHENG函数START JMP START ;调用完之后跳转到YES4:CALL CHU ;调用 CHU函数RET CHOOSE ENDP ; 挑选函数终止WRONG PROC NEAR ;报错函数LEA DX,PR ;DX 指向 PR换行LEA DX,WRO ;DX 指向 WRO,提示输入有错,请重新输入JMP START ; 跳转到 START RET WRONG ENDP ;报错函数终止第一个数由SI 指向,其次个JIA PROC NEAR ;加法函数IN16 ;调用宏 , 接受键盘输入的两个十六进制数,数存放在 BX中ADD BX,SI ;把第
21、一个数加其次个数存放到BX中LEA DX,PR ;DX指向 PR,换行CALL OUTPUT LEA DX,PR1 ;DX指向 PR1,显示A + B= CALL OUTPUT CALL OUTBX ; 调用显示 BX寄存器的内容函数RET JIA ENDP ;加法终止第一个数由SI 指向,其次个JIAN PROC NEAR ;减法函数IN16 ;调用宏 , 接受键盘输入的两个十六进制数,数存放在 BX中SUB BX,SI ;其次个数减第一个数, 结果存放到BX中NEG BX ;对结果取反后才是A-B 的值 , 才是第一个数减去其次个数LEA DX,PR ;DX指向 PR,换行9 名师归纳总结
22、 - - - - - - -第 12 页,共 14 页精选学习资料 - - - - - - - - - 实现加减乘除四就运算的运算器CALL OUTPUT LEA DX,PR2 ;DX指向 PR2,显示A - B= CALL OUTPUT CALL OUTBX ; 调用显示 BX寄存器的内容RET JIAN ENDP ; 加法函数终止CHENG PROC NEAR ; 乘法函数IN16 ;调用宏 , 接受键盘输入的两个十六进制数,第一个数由SI 指向,其次个数存放在 BX中MOV DX,0 ; 把 DX清零MOV AX,BX ; 把其次个数赋给 AX MUL WORD PTRSI ;AX 乘S
23、I 并把结果存放到 DX,AX中, 是字的操作MOV BX,AX ; 将 AX赋给 BX PUSH BX ; 将 BX压栈,显示下面 DX的内容时要将 DX的值赋给 BX PUSH DX ; 将 DX压栈,由于下面要换行输出,会转变 DX的值LEA DX,PR ;DX 指向 PR,换行输出CALL OUTPUT LEA DX,PR3 ;DX指向 PR3,显示A * B= CALL OUTPUT POP DX ;将 DX出栈,要将做乘法后DX的内容显示出来MOV BX,DX ;把 DX给 BX CALL OUTBX ;显示 DX的内容POP BX ;将 BX出栈CALL OUTBX ;显示 AX
24、的内容RET CHENG ENDP ;乘法函数终止第一个数 SI 指向,其次个数CHU PROC NEAR ;除法函数IN16 ;调用宏 , 接受键盘输入的两个十六进制数,存放在 BX中MOV AX,SI ;将第一个数赋给AX DX,AX,DX存放余数, AX存放商MOV DX,0 ;将 DX清零DIV BX ;AX除 BX,结果存放到PUSH DX ;压栈 DX PUSH AX ;压栈 AX 10 名师归纳总结 - - - - - - -第 13 页,共 14 页精选学习资料 - - - - - - - - - 汇编语言设计课程设计LEA DX,PR ;DX 指向 PR,换行CALL OUT
25、PUT LEA DX,PR4 ;DX指向 PR4,显示A / B= CALL OUTPUT POP AX ; 出栈 AX MOV BX,AX ; 将 AX赋给 BX,将商给 BX CALL OUTBX ; 显示 AX寄存器的内容,即显示商LEA DX,PR5 ;DX 指向 PR5,显示省略号CALL OUTPUT POP DX ; 出栈 DX MOV BX,DX ; 将 DX赋给 BX,即将余数赋给 BX,CALL OUTBX ; 显示 DX寄存器的内容,显示余数RET CHU ENDP ; 除法函数终止OUTBX PROC NEAR ; 显示 BX寄存器的内容函数MOV CH,4 ;CH 等
26、于 4 ROTATE:MOV CL,4 ;CL 等于 4 ROL BX,CL ; 将 BX循环左移 4 位MOV AL,BL ; 将 BL 赋给 AL AND AL,0FH ; 将 AL 的高位置 0 ADD AL,30H ;AL+30H 可将 AL 变为对应的 ASCII 的值CMP AL,3AH ; 判定是否是 0-9 之间JL PRINTIT ; 是就跳转到 PRINTIT ADD AL,7H ; 是 A-F 再加上 7H PRINTIT:MOV DL,AL ; 将 AL 赋给 DL MOV AH,2 INT 21H ; 显示 AL DEC CH ;CH-1 再赋给 CH JNZ ROTATE ;CH.=0 就跳转到 ROTATE RET ;CH=0 就终止OUTBX ENDP ; 显示寄存器 BX内容函数终止CODE ENDS END MAIN 11 名师归纳总结 - - - - - - -第 14 页,共 14 页