已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人资料整理 仅限学习使用课程设计报告( 2018- 2018 年度第 一 学期课 程: 微机原理及应用 题 目:冒泡法排序与筛选法求素数院 系: 自动化系 班 级: 自动化0904 学 号: 200902020423学生姓名:阎立恒指导教师:马永光设计周数: 一周 成 绩: 日期:2018年 1 月 12 日微机原理及应用课程设计任 务 书一、 目的与要求1 通过对微机系统分析和具体设计,使学生加深对所学课程的理解。2 掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。3 培养学生分析问题、解决问题的能力。4 培养学生对微型计算机应用系统的基本设计能力。5 提高学生的实践动手能力和创新能力。二、 主要内容1 根据个人情况选择课程设计参考题目,或者依照个人兴趣自拟题目。2 针对所选择的设计题目进行硬件设计,合理选用所需元器件,绘制系统结构框图、硬件接线图,并在实验系统上完成电路的连接和调试。3 根据所选题目的要求对微机系统进行程序设计,绘制程序总体流程图并编写源程序上机调试。4 写出课程设计报告,对整个设计过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识和收获。三、 进度计划序号设计内容完成时间备注1选择课程设计题目,查阅相关资料2进行软硬件设计3上机调试4撰写设计报告5演示及答辩四、 设计成果要求1 系统硬件设计合理,软件编程达到设计要求。2 系统硬件结构图和软件流程图绘制清楚规范。3 设计报告完整规范。五、 考核方式根据设计任务的完成情况、课程设计报告撰写情况及演示答辩情况采用五级记分制评定成绩。 学生姓名:指导教师:一、课程设计目的与要求1 通过对微机系统分析和具体设计,使学生加深对所学课程的理解。2 掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。3 培养学生分析问题、解决问题的能力。4 培养学生对微型计算机应用系统的基本设计能力。5 提高学生的实践动手能力和创新能力二、课程设计正文1 设计题目1) 排序程序设计。要求:从键盘输入10位学生的考试成绩,由高到低排序后显示排序结果。2) 筛选法求素数。要求:编写程序,求出2254之间的所有素数,并显示在屏幕上数与数之间用逗号分开)。提示:从n2开始,将所有n的倍数做上记号;再对n后面的数进行同样的操作;重复这个过程直到找出所有的素数。最后结束时,凡是未标记号的数就是素数。)2 设计思想总体设计方案、系统的主要功能、作用)1) 成绩排序程序输入数字:建立存储区域IBF,调用DOS系统功能0AH从键盘输入字符串。则IBF1里存储的为实际输入的字符数。如果IBF1为3,因为输入的是学生的成绩,所以默认输入的数为100。如果IBF1为2,则先将IBF2,IBF3的ASCII码减去30转为数字,再把IBF2乘以10加上IBF3,即可还原成数字。如果IBF1为1,则直接将IBF2减去30即可还原成数字。冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。即在第一趟:首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后。至此第一趟结束,将最小的数放到了最后。在第二趟:仍从第一对数开始比较,将大数放前,小数放后,一直比较到倒数第二个数254。 计算m/n,若除不尽则不进行操作,若可以除尽则将存放m的存储空间的第一位置1。 将m增大1重复,直至m为254 将n增大1重复,直至n为253 此时被除数若为质数则其存储空间首位为0,若为和数则其存储空间首位为1。据此判断并输出。输出原理同冒泡法排序的输出原理3 系统工作原理介绍此课程设计不涉及硬件,故无接口设计和系统框图.4 系统程序设计 BUF DW 10 DUP(? MSG1 DB INPUT 10 NUMBERS,0AH,0DH,$ MSG2 DB RESULT:,0AH,0DH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX 。定义数据段基址 MOV DX,OFFSET MSG1 。取MSG1偏移地址 MOV AH,09H INT 21H 。输出MSG1 MOV CX,10 。规定输入次数为10 MOV BX,0 MOV DX,OFFSET IBF 。取IBF偏移地址存储输入的字符串INPUT: MOV AH,0AH INT 21H 。调用键盘输入字符串 PUSH DX PUSH BX 。保护DX和BX CALL CTN 。调用CTN将字符串变为数字 POP BX 。弹出BX MOV BUFBX,DX 。将转换完的数字放入BUF中 POP DX 。弹出DX ADD BX,2 。指向下一个存储空间 LOOP INPUT 。输入10个数 MOV CX,10 DEC CX 。规定排序次数LOOP1: MOV DI,CX 。保护排序次数将CX空出留给内圈循环使用 MOV BX,0 。从第一个数开始比较LOOP2: MOV AX,BUFBX CMP AX,BUFBX+2 。取两个数比较 JGE NEXT 。前者大则不交换 XCHG AX,BUFBX+2 MOV BUFBX,AX 。前者小则两数交换NEXT: ADD BX,2 。将比较的位置后移 LOOP LOOP2 。循环再次比较共循环DI次比较即完成1次排序 MOV CX,DI 。将外圈循环的次数放回CX LOOP LOOP1 。循环再次排序共进行10次排序 MOV DX,OFFSET MSG2 。取MSG2偏移地址 MOV AH,09H INT 21H 。以下为输出程序先输出MSG2 MOV CX,10 。输出数字10次 MOV BX,0OUTPUT: PUSH BX 。输出BUF的内容先保护BX PUSH CX 。保护CX MOV AX,BUFBX 。取BX所指的数放入AX OR AX,AX JNZ NOTZ 。判断数字是否为0 为0则直接输出不为0则调用输出程序 MOV DL,30H MOV AH,02H INT 21H JMP OTPSPCNOTZ: CALL DISPLAY 。将非0数按十进制输出OTPSPC: MOV DX,20H MOV AL,02H INT 21H 。输出空格 POP CX 。弹出CX POP BX 。弹出BX ADD BX,2 。将BX指向下一个数 LOOP OUTPUT JMP $CTN PROC NEAR MOV AH,0 。将AH清零 CMP IBF1,3 。判断输入的是否为3位数 JZ NXTC 。若是则跳转到NXTC CMP IBF1,2 。判断输入的是否为2位数 JZ NXCT2 。若是则跳转到NXCT2 MOV DL,IBF2 。否则为1位数直接存入DL SUB DL,30H 。变为数字 JMP EXTCNXTC: MOV DX,100D 。若为3位数默认为100 JMP EXTCNXCT2: MOV BX,10D 。若为2位数 MOV AL,IBF2 。取十位数ASCII码放在AL中 SUB AX,30H 。变为数字 MUL BX 。乘以10 MOV DX,AX 。放入DX ADD DL,IBF3 。与个位数ASCII码相加 SUB DX,30H 。-30 JMP EXTCEXTC: RETCTN ENDPDISPLAY PROC NEARLOOPD: MOV DX,0 。DX清零 MOV CL,10 DIV CX 。将AX除以10 MOV CL,AL 。取商 OR CX,DX JZ EXIT 。若商和余数均为0则结束递归 PUSH DX 。压入余数 CALL DISPLAY 。递归调用 POP DX 。弹出余数 ADD DL,30H 。变为ASCII码 JMP PRT 。跳转到输出字符PRT: MOV AH,02H INT 21H 。输出DX中的字符EXIT: RETDISPLAY ENDPCODE ENDS END START2) 筛选法求素数开始n=2m=n+1m/nN整除?Yn=n+1m=m+1m存储空间首位置1NNNm=254?Yn=253?Y存储空间首位是否为1Y输出结束DATA SEGMENT DTBS DW 255 DUP(? DIVD DW 255 DUP(?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV BX,0 MOV AX,0 MOV CL,255 。AX,BX清零设置循环次数LOOPI: MOV DTBSBX,AX 。将0-254输入到DTBS和DIVD中 MOV DIVDBX,AX ADD BX,2 INC AX LOOP LOOPI MOV CL,253 。设置外圈循环次数为253 即需要对2-254这253个数进行素数判断 MOV BX,4 。从2开始判断LOOP1: MOV DI,CX 。保护CX 将CX空出留给内圈循环使用 MOV DX,DIVDBX 。取一个除数 PUSH BX 。保护BX ADD BX,2 。被除数从除数+1)开始取LOOP2: MOV AX,DTBSBX 。取被除数 MOV AH,0 。高位置零 DIV DL 。将被除数除以除数 OR AH,AH 。判断余数是否为零 JNZ PN 。不为零则不操作直接跳转 OR DTBSBX,1000H 。为零则将此数存储空间第一位置1PN: ADD BX,2 。指针指向一个被除数 LOOP LOOP2 。再次进行判断 POP BX 。还原除数的指针 ADD BX,2 。指针指向下一个除数 MOV CX,DI 。还原外圈循环控制数 LOOP LOOP1 。进行下一轮判断 MOV CL,253 。此下开始为输出程序先设置输出次数为253 MOV BX,4 。从2开始输出OUTPUT: PUSH BX 。输出素数先保护BX PUSH CX 。保护CX MOV AX,DTBSBX 。取BX所指的数放入AX OR AH,AH JNZ NOTZ 。判断是否有标记 MOV AH,0 CALL DISPLAY 。按十进制输出 MOV DX,2CH MOV AL,02H INT 21H 。输出逗号NOTZ: POP CX 。弹出CX POP BX 。弹出BX ADD BX,2 。将BX指向下一个数 LOOP OUTPUT JMP $DISPLAY PROC NEARLOOPD: MOV DX,0 。DX清零 MOV CL,10 DIV CX 。将AX除以10 MOV CL,AL 。取商 OR CX,DX JZ EXIT 。若商和余数均为0则结束递归 PUSH DX 。压入余数 CALL DISPLAY 。递归调用 POP DX 。弹出余数 ADD DL,30H 。变为ASCII码 JMP PRT 。跳转到输出字符PRT: MOV AH,02H INT 21H 。输出DX中的数EXIT: RETDISPLAY ENDPCODE ENDS END START5 系统调试结果1) 排序程序可按照要求对10个由键盘输入的2100的数进行排序并输出在屏幕上。2) 筛选法求素数可求出2254之间所有的素数并输出在屏幕上。三、课程设计总结通过本次课程设计过程中对微机系统分析和具体设计,我加深对所学课程的理解,掌握汇编语言程序设计的基本方法,培养了我分析问题、解决问题的能力,培养了我对微型计算机应用系统的基本设计能力,提高了我的实践动手能力和创新能力。因为我曾在小学的时候学过BASIC语言,初中的时候学过Pascal语言,进入大学之后又学习了C+语言,所以对编写各种软件程序有一定的基础,因此我选择了两道比较具有代表性的题,第一道是冒泡法排序,第二道是筛选法求素数。做第一道题时,我的思路是很清晰的,整个程序分为3部分:输入、排序、输出。排序部分由于是考试内容所以非常熟悉,不费力气就可以编写出来。但是输入输出部分的编写调试所费时间精力超出了我的预期。最开始的时候输入部分和输出部分我都是按照之前所学的高级语言的方式来写,结果大错特错。输入时一个数字的每位数都占一个存储空间,而且是按照ASCII码来存储,根本不能直接拿来用,还需要先还原成数字存储起来。输出则是和输入相反的一个过程。编程中还遇到了一个问题,就是寄存器数量十分有限。在编写程序的时候要十分小心会不会把还需要用到的一个存放在寄存器里的数据不小心覆盖掉了,因此要时时刻刻注意保护寄存器中的数据,尤其是调用过程的时候。通过这些曲折,我对汇编语言的特点和其与高级语言的区别有了更加深刻的理解。有了做第一道题时的经验教训,我在做第二道题时十分顺利。之前我曾用其他语言写过求素数的程序,虽然不是筛选法。以上经验使我在做这道题的求素数部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务礼仪技巧培训课件
- 法务经理竞聘课件
- 法务会模板课件
- 伐檀语文课件
- 防烫伤照片文案课件
- 飞天教学课件
- 事业单位财会岗面试经典考题2026试卷及答案
- 防台防汛预案课件
- 飞艇的种类课件
- 飞天导入课件
- 银川创投集团全资子公司银川商功人工智能科技有限公司公开招聘人工智能工程师等专业技术人员笔试备考试题及答案解析
- GB/T 7251.3-2026低压成套开关设备和控制设备第3部分:由一般人员操作的配电板(DBO)
- 2027贵州航天电器秋季招聘284人考试参考题库及答案解析
- 钢筋弯曲机使用安全要求培训
- 2026年上海高考英语真题试卷(春考+秋考)完整版(含答案、听力原文、详细解析、满分范文)
- 2026年产前筛查与诊断知识课件
- 2026年秋季开学高二学生:学业水平考试备考课课件
- 考研形近易混词汇 (二)
- GB/T 32734-2026葫芦巴
- 骨科护理患者临终关怀与安宁疗护
- 实验室与临床科室的沟通
评论
0/150
提交评论