收藏 分享(赏)

微机原理简易计算器课程设计.doc

上传人:精品资料 文档编号:8791315 上传时间:2019-07-11 格式:DOC 页数:24 大小:3.32MB
下载 相关 举报
微机原理简易计算器课程设计.doc_第1页
第1页 / 共24页
微机原理简易计算器课程设计.doc_第2页
第2页 / 共24页
微机原理简易计算器课程设计.doc_第3页
第3页 / 共24页
微机原理简易计算器课程设计.doc_第4页
第4页 / 共24页
微机原理简易计算器课程设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、 课 程 设 计 报 告课程设计名称: 简易计算器 系 别: 三系 学生姓名: 张梦瑶 班 级: 11 通信 1 班 学 号: 20110306111 成 绩: 指导教师: 袁静 开课时间: 2013-2014 学年 1 学期微机原理课程设计简易计算器第 2 页 共 24 页一设计题目简易计算器二主要内容1、采用模块化程序结构设计软件,可将整个软件分成若干功能模块。2、画出程序流程图。3、根据流程图,编写源程序。4、上机调试程序。三具体要求1、利用 BIOS 和 DOS 的中断来设计一个计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的

2、功能。2、利用 BIOS 中断的 10 号功能调用来设置显示方式。3、利用 DOS 中断的 01 号和 02 号子功能来完成键盘接收,结果显示。四进度安排周一 周二 周三 周四 周五讲课设内容,安排任务查资料,确定硬件电路方案编程调试 编程调试 写总结报告五成绩评定考核方法:现场验收(占 50%),课程设计报告(占 50%)。考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。成绩评定:优,良,中,及格,不及格。特别说明:如发现抄袭,按照不及格处理。微机原理课程设计简易计算器第 3 页 共 24 页目 录前言 41、设计题目 .52、设计内容 .52.

3、1 基本内容 .52.2 主要功能 .53、设计原理及方案 .63.1 总体方案 .63.2 程序流程图 .73.2.1 主程序 73.2.2 计算子程序 83.3 系统模块详细设计 .93.3.1 界面设置 93.3.2 算法选择设置 .103.3.3 数制转换设置 .114.汇编源程序代码 .135、调试运行结果 205.1 操作说明 205.2 调试运行结果 206、心得体会 237、参考文献 24微机原理课程设计简易计算器第 4 页 共 24 页前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实

4、际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。计算器在我们日常生活中应用是相当普遍的,可以说它已经成为现代社会生活不可或缺的一部分。本次课程设计就是根据微机原理与接口的相关知识,利用 BIOS 和 DOS 的中断来设计一个简易计算器,能够实现加减乘除四则运算,并在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的功能。同时利用 BIOS 中断的 10 号功能调用来设置显示方式,利用 DOS 中断的 01 号和 02 号子功能来完成键盘接收,结果显示。通过本次课程设计,要求学

5、生熟悉和掌握微机系统的软件的方法、设计步骤,使学生得到微机开发应用方面的初步训练,熟练应用 8086 汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。微机原理课程设计简易计算器第 5 页 共 24 页1、设计题目简易计算器2、设计内容2.1 基本内容1、编写一个程序,能从键盘上读入数据,并完成加、减、乘、除的计算。2、利用 BIOS 和 DOS 的中断来设计一个

6、计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的功能。3、利用 BIOS 中断的 10 号功能调用来设置显示方式。4、利用 DOS 中断的 01 号和 02 号子功能来完成键盘接收,结果显示。2.2 主要功能一、显示主菜单功能主菜单如下:Please input a number to choose the arithmetic operation1add 2subtract 3multiply 4divide qreturn to DOS二、计算功能1、别按数字键“1” 、 “2”、 “3”,则执行相应子模块 1、2、3,进行两个字

7、节与两个字节的加法、减法和乘法运算,并在屏幕上显示运算结果。2、按数字键“4” ,执行子模块 4,进行两个字节除一个字节的除法运算,并显示结果。3、按字母键“q” ,执行子模块 5,程序退出,返回 DOS。4、若按其它键则显示提示字符串:“Please Press Number 1、2、3、4、q:” ,然后继续显示主菜单。微机原理课程设计简易计算器第 6 页 共 24 页3、设计原理及方案3.1 总体方案利用 BIOS 中断的 10 号功能调用来设置显示方式。利用 DOS 中断的 01 号、02 号子功能来完成键盘接受、结果显示。设置屏幕显示方式。MOV AH,00HMOV AL,NUM (

8、NUM 为显示方式属性字)INT 10H接着从键盘上接受键值,并判别后转到相应的子模块进行运算,并显示结果。MOV AH,01HINT 21H ;AL=键入字符的 ASCII 码从键盘上接收一串字符串命令:MOV AH,0AHMOV DX,OFFSET BUF ;BUF 为数据段中定义的数据缓冲区INT 21H显示单个字符命令:MOV AH,02HINT 21H显示一串字符串的命令:MOV AH,09HMOV DX,OFFSET BUF ;BUF 为被显示字符串的首地址INT 21H十进制数显示过程:将十进制数送到 BX 中,BX 除以 1000,余数送 BX 中,商在 AL 中,范围为 09

9、,显示 AL 中的内容。BX 除以 100,余数送 BX 中,商在 AL 中,显示 AL 中的内容,依次类推,直到分出个位数字。如最高位为 0,则不应显示,而非最高位的 0 则显示。可利用设标志位并结合商的方法来决定是否显示 0。微机原理课程设计简易计算器第 7 页 共 24 页3.2 程序流程图3.2.1 主程序显示主菜单接收数字AL=1?AL=2?AL=3?AL=4?AL=5?调用加法子程序调用减法子程序调用乘法子程序调用除法子程序结束开始图 3.1 主程序流程图微机原理课程设计简易计算器第 8 页 共 24 页3.2.2 计算子程序提示输入第一个数提示输入第二个数计 算判断结果正负,并储

10、存结果将结果转为 ASCII 码,并显示结果提示返回 DOS 还是重新计算将第一个数的 ASCII 码转为二进制并保存将第二个数的 ASCII 码转为二进制并保存结 束微机原理课程设计简易计算器第 9 页 共 24 页图 3.2 计算子程序流程图3.3 系统模块详细设计本次设计需要实现的模块图图如 1 所示图 3.3 模块图(1)界面设置主要实现确定界面样式的功能,以菜单形式显示。(2)算法选择设置用于选择加、减、乘、除来进行运算。(3)数制转换设置应用十进制二进制的转换算法来处理加、减、乘、除四则运算。3.3.1 界面设置1、设置屏幕显示方式:MOV AH,00H MOV AL,2INT 1

11、0H通过调用 BOIS 的 O2H 号功能来设置屏幕显示方式。此处 AL=2,即设置屏幕显示方式为 80*25 黑白文本。2、显示主菜单:DOS 不仅为用户提供了许多指令,而且还有用户可以直接调用的上百个常四则运算器程序设计界面设置算法选择设置数制转换设置微机原理课程设计简易计算器第 10 页 共 24 页用子程序。这些子程序的功能主要是进行磁盘读/写、基本输入/输出管理等。在使用时,用户只需要了解各个子程序的编号即可,这些编号成为 DOS 功能调用号。其调用过程为:(1)DOS 功能条用号送 AH 寄存器。(2)如果需要,按要求给定输入参数(由得不需要输入参数) 。(3)写入中断指令“INT

12、 21H” 。调用结束,按功能使用其输出参数。本程序主菜单显示代码如下:MOV AH,09H MOV DX,OFFSET TOPINT 21H先在数据段中定义主菜单中要显示的字符串,再通过调用 DOS 系统的 09H号功能显示字符串(串尾字符为,但不显示)来完成。3.3.2 算法选择设置汇编语言中加减乘除运算指令分别为 ADD、SUB、 、MUL、DIV。首先选择要进行的四则运算,规定:若选择 1,则进行加法;选择 2,则进行减法;选择 3,则进行乘法;选择 4,则进行除法。具体计算过程分析如下:1、从键盘接收一个数字:MOV AH,01H INT 21H通过调用 DOS 系统的 01H 号功

13、能键入字符并回车来实现,其出口参数为键入字符的 ASCII 码,存在 AL 中。2、接收键入用于计算的数:MOV AH,0AH MOV DX,OFFSET BUF1通过调用 DOS 系统的 0AH 号功能键入字符串至内存缓冲区来实现,其入口参数如下:DS:DX=存放键入字符串的缓冲区的首地址;(DS:DX)=用户规定的缓冲区;(DS:DX+1)=实际键入的字符数;从(DS:DX+2)开始放键入的字符串。因此,在下面的程序中运用所键入的数字时要注意字符串的首地址。微机原理课程设计简易计算器第 11 页 共 24 页3、显示结果:MOV AH,09H MOV DX,OFFSET BUF3INT 2

14、1H将结果存入数据段中定义的缓冲区 BUF3 中,再通过调用 DOS 系统的 09H 号功能显示字符串(串尾字符为,但不显示)来完成。3.3.3 数制转换设置1、子程序 A2将数的 ASCII 码转为二进制数:A2 PROC NEARMOV CL,BUF1+1 ; 把 BUF1+1 中的实际键入的字符数放入 CLMOV CH,0 ; CH 清零MOV BX,OFFSET BUF1+2 ; 把第一个数字的地址放在 BXPUSH BX ; 保存 BX 中的值PUSH CX ; 保存 CX 中的值L1: MOV AL,BXAND AL,0FH ; 把 ASCII 码转换为十进制MOV BX,AL ;

15、 存放十进制INC BX ; 下一个数字的地址LOOP L1POP CX ; 恢复 CXPOP BX ; 恢复 BXMOV AX,0 ; 将累加和赋零MOV SI,10L2: MUL SIADD AL,BXADC AH,0INC BX微机原理课程设计简易计算器第 12 页 共 24 页LOOP L2 ; 累加乘 10L3: RET A2 ENDP入口:十进制数的 ASCII 在 BUF1 内;出口:转换后的二进制数在 AX 内。算法:先将其转换为十进制,再用累加和乘 10 加 X 的方法变为二进制,如将 163 转换为二进制数,可先将累加和赋 0,再计算(0*10+1)*10+6)*10+3)

16、结果为二进制数。2、将计算结果的二进制数转换为对应的十进制数 ASCII 码并输出显示(A3程序段):该模块的程序设计详见程序清单及说明中 A3、BB 程序段入口:二进制数在 AX 内;出口:转换后的 ASCII 码在 BUF 内。算法:AX 内的数范围在+32767 到-32768 之间,先检查 AX 符号位,决定输出+ - ,若为负,先求补码得到原码后可与正数统一处理。方法:把将被转换的二进制数先除以 10000,商为万位数,再将余数除以 1000,商为千位数,以此类推,求出百十位数,剩下的为个位数。最后各个数加上 30H,即为对应字符。微机原理课程设计简易计算器第 13 页 共 24 页

17、4.汇编源程序代码DATA SEGMENTN=15TOP DB 5 DUP(0AH)DB N DUP( ), Please input a number to choose the arithmetic operation, 0DH,0AHDB N DUP( ), , 0DH,0AHDB N DUP( ),1add 2subtract 3multiply, 0DH,0AHDB N DUP( ),4divide qreturn to DOS, 0DH,0AHDB N DUP( ), , 0DH,0AHDB N DUP( ),Choice (1.2.3.4.q):$MESG1 DB 0DH,0AH

18、,Please press number: 1.2.3.4.q !$ MESG2 DB 0DH,0AH,Please input the first number :$MESG3 DB 0DH,0AH,Please input the second number :$MESG4 DB 0DH,0AH,Play Add :$MESG5 DB 0DH,0AH,Play Subtract :$MESG6 DB 0DH,0AH,Play Multiply :$MESG7 DB 0DH,0AH,Play Divide :$MESG8 DB 0DH,0AH,The Result :$MESG9 DB 0D

19、H,0AH,PRESS Q RETURN DOC,ANY PRESS RETURN START!$BUF1 DB 6 ; 十进制数的缓冲区,可接收 6 个字符DB ? ; 保留,用于 10 号调用时 DOC 填入实际输入字符数DB 6 DUP(?) ; 一个符号位 ,四位数字 ASCII 码,加上一个回车符BUF2 DW ? ; 将第一个数转换为二进制后,放于这里微机原理课程设计简易计算器第 14 页 共 24 页BUF3 DB 6 DUP(?),$ ; 将结果转换为 ASCII 码后,放在这里DATA ENDSSTACK SEGMENT STACKSTACKCODE SEGMENTASSUM

20、E CS:CODE , DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,00H ; 设置屏幕显示方式MOV AL,2INT 10HMOV AH,09H ; 显示菜单MOV DX,OFFSET TOPINT 21HAA: MOV AH,01H ; 从键盘接收一个数字INT 21HCMP AL,1 ; 与 1 比较JNE NEXT1 ; 不等于 1 就转到 NEXT1JMP JIA ; 等于 1 就转到加法程序NEXT1: CMP AL,2 ; 与 2 比较JNE NEXT2 ; 不等于 2 就转到 NEXT2JMP JIAN ; 等于 2 就转到减法程序NEXT

21、2: CMP AL,3 ; 与 3 比较JNE NEXT3 ; 不等于 3 就转到 NEXT3JMP CHENG ; 等于 3 就转到乘法程序NEXT3: CMP AL,4 ; 与 4 比较JNE NEXT4 ; 不等于 4 就转到 NEXT4JMP CHU ; 等于 4 就转到除法程序NEXT4: CMP AL,q ; 与 q 比较JNE NEXT5 ; 不等于 q 就转到 NEXT5微机原理课程设计简易计算器第 15 页 共 24 页MOV AH,4CH ; 回 DOSINT 21HNEXT5: MOV AH,09H ; 显示 MESG1MOV DX,OFFSET MESG1INT 21H

22、JMP AA ; 跳到 AAA1 PROC NEARMOV AH,09H ; 提示输入第一个数MOV DX,OFFSET MESG2INT 21HMOV AH,0AH ; 接收第一个数MOV DX,OFFSET BUF1INT 21HCALL A2 ; 调用 A2 进行 ASCII-二进制的转换MOV BUF2,AX ; 把第一个数转换的二进制放在BUF2MOV AH,09H ; 提示输入第二个数MOV DX,OFFSET MESG3INT 21HMOV AH,0AH ; 接收第二个数MOV DX,OFFSET BUF1INT 21HCALL A2 ; 调用 A2 把第二个数进行 ASCII-

23、二进制转换RETA1 ENDPA2 PROC NEARMOV CL,BUF1+1 ; 把 BUF1+1 中的实际键入的字符数微机原理课程设计简易计算器第 16 页 共 24 页放入 CLMOV CH,0 ; CH 清零MOV BX,OFFSET BUF1+2 ; 把第一个数字的地址放在 BXPUSH BX ; 保存 BX 中的值PUSH CX ; 保存 CX 中的值L1: MOV AL,BXAND AL,0FH ; 把 ASCII 码转换为十进制MOV BX,AL ; 存放十进制INC BX ; 下一个数字的地址LOOP L1POP CX ; 恢复 CXPOP BX ; 恢复 BXMOV AX

24、,0 ; 将累加和赋零MOV SI,10L2: MUL SIADD AL,BXADC AH,0INC BXLOOP L2 ; 累加乘 10L3: RET A2 ENDPJIA: MOV AH,09H ; 加法程序MOV DX,OFFSET MESG4INT 21HCALL A1 ; 调用 A1ADD AX,BUF2 ; 把转换后的放在 BUF2 中的第一个数和放在 AX JMP A3 ; 的第二个数相加JIAN: MOV AH,09H ; 减法程序微机原理课程设计简易计算器第 17 页 共 24 页MOV DX,OFFSET MESG5INT 21HCALL A1MOV BX,AX ; 把转换

25、后的放在 AX 的第二个数放到 BXMOV AX,BUF2 ; 把转换后放在 BUF2 中的第一个数放到 AXSBB AX,BX ; 两数相减JMP A3CHENG: MOV AH,09H ; 乘法程序MOV DX,OFFSET MESG6INT 21HCALL A1MOV BX,AX ; 把转换后的放在 AX 的第二个数放到 BXMOV AX,BUF2 ; 把转换后的放在 BUF2 中第一个数放到 AXMUL BX ; 两数相乘JMP A3CHU: MOV AH,09H ; 除法程序MOV DX,OFFSET MESG7INT 21HCALL A1MOV DX,AX ; 把转换后的放在 AX

26、 的第二个数放到 DXMOV AX,BUF2 ; 把转换后的放在 BUF2 中第一个数放到 AXDIV DL ; 两数相除,商在 AL 里MOV AH,0H ; 使 AH 清零微机原理课程设计简易计算器第 18 页 共 24 页JMP A3A3: MOV BUF3,+ ; 把 BUF3 放+CMP AX,0 ; 把结果于 0 比较JGE L4 ; AX0 转到 L4NEG AX ; AX0 将 AX 取反MOV BUF3,- ; 把 BUF3 放-L4: CWDMOV BX,10000DIV BX ; 商为第一位数字放在 AL,余数放在DXCALL BBMOV BUF3+1,AL ; 把第一个

27、数放在 BUF3+1 单元中MOV AX,DX ; 把放在 DX 中的余数放到 AXCWDMOV BX,1000DIV BX ; 商为第二位数字放在 AL,余数放在DXCALL BBMOV BUF3+2,AL ; 把第二个数放在 BUF3+2 单元中MOV AX,DX ; 把放在 DX 中的余数放到 AXMOV BL,100DIV BL ; 商为第三位数字放在 AL,余数放在AHCALL BBMOV BUF3+3,AL ; 把第三个数放在 BUF3+3 单元中MOV AL,AH ; 把放在 AH 中的余数放到 ALCBWMOV BL,10DIV BL ; 商为第四位数字放在 AL,余数放在微机

28、原理课程设计简易计算器第 19 页 共 24 页ACALL BBMOV BUF3+4,AL ; 把第四个数放在 BUF3+4 单元中ADD AH,30H ; 把个位转为 ASSCII 码MOV BUF3+5,AH ; 把第五个数放在 BUF3+5 单元中MOV AH,09H ; 提示结果MOV DX,OFFSET MESG8INT 21HMOV AH,09HMOV DX,OFFSET BUF3 ; 把放在 BUF3 缓冲区中的结果显示出来INT 21HMOV AH,09H ; 提示是返回 DOS 还是重新计算MOV DX,OFFSET TOPINT 21HJMP NEXT5 ; 其他数字重新计

29、算BB PROC NEARCMP AL,0H ; 与零比较JE L5JMP L6L5: MOV AL,20H ; 等于零,赋 AL 空格JMP L7L6: ADD AL,30H ; 不等于零,把数转为 ASSCII 码L7: RETBB ENDPA4: MOV AH,4CH ; AL 等于Q就返回 DOSINT 21HCODE ENDSEND START微机原理课程设计简易计算器第 20 页 共 24 页5、调试运行结果5.1 操作说明(1)按提示输入 1,2,3,4。(2)1:加法 ADD。(3)2:减法 SUB。(4)3:乘法 MUL。(5)4:除法 DIV。(6)输入一个十进制数,回车。

30、(7)再输入一个十进制数,回车。(8)显示计算结果。(9)退出按 q。5.2 调试运行结果(1)进入系统界面,程序运行截图如图 5.1 所示。图 5.1 进入系统界面(2)加法:算法选择 1,按提示输入两个十六进制数,回车后显示计算式和结果。程序运行截图如图 5.2 所示。微机原理课程设计简易计算器第 21 页 共 24 页图 5.2 加法程序截图(3)减法:算法选择 2,按提示输入两个十进制数,回车后显示计算结果,程序运行截图如图 5.3 所示。图 5.3 减法程序截图(4)乘法:算法选择 3,按提示输入两个十进制数,回车后显示计算结果。程序运行截图如图 5.4 所示。图 5.4 乘法程序截

31、图(5)除法:算法选择 3,按提示出入两个十进制数,回车后显示计算结果,程序运行截图如图 5.5 所示。微机原理课程设计简易计算器第 22 页 共 24 页图 5.5 除法程序截图(6)退出:按 q 键即可退出程序。程序运行截图如图 5.6 所示。图 5.6 退出运行截图程序运行后可以看出,程序完成了十进制加减乘除四则运算,按 q 键则退出程序,符合设计要求。同时,屏幕上可以显示计算结果,也完成了设计要求。微机原理课程设计简易计算器第 23 页 共 24 页6、心得体会本次为期一周的微机原理与接口课程设计已经结束了,在这并不算长的时间里我却获益良多。第一,我对本学期所学的理论知识有了更加深刻的

32、理解。首先是对汇编语言的编程思想、程序设计流程有了更加深刻的认识。另外,我的课程设计中运用了许多 BIOS 中断和 DOS 中断的功能,例如利用 BIOS 中断的 10 号功能调用来设置显示方式,利用 DOS 中断的 01 号、02 号子功能来完成键盘接受、结果显示。从而加深了我对 BIOS 和 DOS 中断的理解。以前在课堂上一些一知半解的东西,经过这次的实际应用也顿时觉得豁然开朗。第二,提高了我理论联系实际的能力。在本科生的学习中,大部分是对理论知识的学习,很少有真正实际应用与实践的机会。每个学期末的课程设计无疑是十分难得的,我们应好好利用并倍加珍惜。在上理论课时,对各种程序设计思想都只是

33、有一种肤浅的认识,并没有特别深刻的了解。即使是实验课也只是停留在比较浅显的阶段,并不能对所学知识进行深入的研究。但这次的课程设计却让我对学习的理论知识有了更加深刻的认识,并将其运用到实际的软件设计中,在学会运用的过程中再一次对理论进行了升华。为以后的工作打下了良好的基础。第三,使我认识到了团结协作的重要性。完成本次课程设计也不是一件轻松的事情,设计的过程中也总会出现这样那样的问题。有些问题凭自己绞尽脑汁的空想是很难解决的,这个时候我们就需要其他同学或老师的帮助。在遇到微机原理课程设计简易计算器第 24 页 共 24 页疑难时,有时看着很困难的问题,在通过与同学们的讨论分析之后就迎刃而解了。由此

34、可见,同学间的互帮互助是非常重要的。同时,在有些问题实在无法解决之时,老师的指点总是关键性的。课程设计的开设不仅巩固了我们对理论知识的掌握,激发了我们对学习的兴趣,同时也锻炼了我们实际动手与应用的能力,使我们对专业领域的知识有了初步的了解,并且提高了我们应用理论知识解决生活中实际存在的问题的能力,这对我们今后走向社会做了良好的开端与铺垫。7、参考文献1 戴梅萼 史嘉权.微型计算机技术及应用(第 4 版).北京:清华大学出版社,2008.32 黄战华.微机原理与接口技术.北京:机械工业出版社,2002.13 周孟初.微型计算机原理与接口技术.合肥:中国科学技术大学出版社,2012.14 彭虎 周佩珍 傅忠谦.微机原理与接口技术学习指导(第 3 版).北京:电子工业出版社,20135 凌志浩 张建正.微机原理与接口技术.上海:华东理工大学出版社,20136 邹逢兴.微机原理与接口技术经典实验案例集.北京:高等教育出版社,2012

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报