收藏 分销(赏)

微型计算机原理课程设计详细版样本.doc

上传人:二*** 文档编号:4571510 上传时间:2024-09-30 格式:DOC 页数:14 大小:415.52KB
下载 相关 举报
微型计算机原理课程设计详细版样本.doc_第1页
第1页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 微型计算机原理课程设计学院 专业 班级 学号 姓名 一、目结合微型计算机课程学习,进一步巩固已学知识,同步针对计算机原理知识详细应用,学会对系统中DOS和BIOS使用。学会使用屏幕编辑程序EDIT,弄懂汇编程序上级过程以及如何运用DEBUG软件进行汇编程序调试。二、内容1.字符串匹配 为掌握提示信息设立办法及读取键入信息办法。编写程序事先两个字符串比较。如相似,则显示“MATCH”,否则,则显示“NO MATCH”2.从键盘输入数据并显示设计 为掌握接受键盘数据办法,并理解将键盘数据显示时必要转化为ASCII码原理。编写程序,将键盘接受到四位十六进制数据转化为等值二进制数,再显示在终端上。3

2、.响铃设计 为掌握响铃用法。编写程序,从键盘接受输入字符,如是数字N,则响铃N次,如果不是数字,则不响。4.将键盘输入小写字母转化成大写字母设计为理解小写字母和大写字母在计算机内表达办法,并学习如何进行转换,编写程序,接受键盘字符,并将其中小写字母转变为大写字母,然后显示在屏幕上。5. 学生成绩名次表设计为进一步熟悉排序办法,编写程序,将100以内30个成绩存入首址为1000H存储区中。1000H+i表达学号为i学生成绩。编写程序使得在H开始区域排出名次表,H+i为学号i学生名次。 编写程序如下学生成绩名次表流程图入口CX入栈保存 学生数送CSAL送0分BX和SI发向成绩表首址AL=SISI送

3、AL,DX记录相应学号SI+1CX-1=0将本次扫描最高成绩清0CX出栈返回YNYN开始YNYN初始化显示提示信息SI指向成绩表首址学生送数CX调GETNUN,该成绩送SISI+1CX-1=0学生送数CXDI指向名次表首址调SCAN子程序,扫描成绩表计算名次,填入DX举号相应名次单元CX-1=0显示学生名次返回DOS 编写程序如下CRLF MACROA MOV AH,02H AS MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTSTUNUM EQU 30MESS1 DB PLEASE INPUT THE 30 SC

4、ORE 0DH,0AH,$ERROR DB ERROR!,0DH,0AH,$MESS2 DB THE ORDER :0DH,0AH ,$EMARK DB ? ORG 1000HSCORE DB 30 DUP(?) ORG HSEQU DB 30 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;程序初始化 MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS1 INT 21H ; 9号功能调用,显示提示信息 MOV SI,OFFSET SCORE ; 成绩表首址

5、赋给SI MOV CX,STUNUM ;学生数送CX MOV EMARK,0UUU: CALL GETNUM ;读取键入成绩值送DX CMP EMARK,01H ;如果输入不符合规定则重新输入 JZ START MOV SI,DL ; 存入成绩表缓冲区中 INC SI ;指向下一单元 LOOP UUU MOV CX,STUNUM ;学生数 MOV DI,OFFSET SEQU ;名次表首地址赋给DIVVV: CALL SCAN ;扫描子程序 MOV AL,STUNUM ;学生数送给AL SUB AL,CL INC AL ;计算名次,并把名次赋给AL MOV BX,DX MOV DI+BX,AL

6、 ;把名次再赋给相应DX学号 LOOP VVV ; MOV AH,09H LEA DX,MESS2 INT 21H MOV CX,STUNUM ;学生数赋给CX MOV SI,OFFSET SEQU ;名次表首地址赋给SIWWW: MOV AL,SI CALL DISPI PUSH DX PUSH AX MOV AH,02 MOV DL,20H INT 21H POP AX POP DXI NC SI LOOP WWW ;显示排定学生名次 MOV AX,4CH INT 21HSCAN PROC NEAR ;子程序,每扫描一遍成绩表缓冲区,找出其成绩最高者 ;(由DX指针批示相应学生),之后将该

7、成绩清除以便下一次扫描 PUSH CX MOV CX,STUNUM ;学生数 MOV AL,00H ;最低成绩 MOV BX,OFFSET SCORE MOV SI,BX ;指向成绩表首址CCC: CMP AL,SI JAE JJJ ;AL中成绩不低于成绩表指针SI所指单元成绩则转JJJ MOV AL,SI ;AL存储较高成绩 MOV DX,SI SUB DX,BX ;DX为相应学号JJJ: INC SI ;指向下一单元 LOOP CCC ADD BX,DX MOV BYTE PTR BX,00H ;本次扫描成绩最高者清0,以便背面比较 POP CX RETSCAN ENDPDISPI PRO

8、C NEAR ;显示子程序 PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL POP CX RETDISPI ENDPDISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27HDDD: MOV AH,02H INT 21H RET DISPL ENDP GETNUM PROC NEAR ;键读入子程序 PUSH CX XOR DX,DXGGG: MOV AH,01H INT 21H CMP

9、AL,0DH JZ PPP SUB AL,30H JB KKK CMP AL,09H JBE GETS JMP KKKGETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGGKKK: MOV AH,09H MOV DX,OFFSET ERROR ;显示错误 INT 21H MOV EMARK,01HPPP: PUSH DX CRLF POP DX POP CX RETGETNUM ENDPCODE ENDS END START成果:三,心得体会 通过这一周微机原理课程设计磨练,一方面让我结识到自己局限性,对编程生疏,思路限制,懂得自己尚有诸多不

10、懂地方,尚有很大发展余地,固然正由于如此我也成为了一名受益者,让自己得到了一种星期锻炼,对CMD命令提示符这个编程有了更多结识。 在这一种星期中,可以说是苦不不大于甜,这些程序题目都像一座座大山在我前面,我必要很努力去克服这些困难,通过在网上收集资料以及去询问同窗,我也徐徐克服了这些。下面我就一种一种程序来论述一下我这个星期成果吧 一方面第一种程序是字符串匹配设计,思路是:字符串输入是用9号功能调用,但是要注意是必要以$作为结束符,否则运营成果是乱码,我就是遇到乱码,日后询问同窗以及查看书籍懂得了这个很重要一点,然后既然是匹配,那必定是两个相等长度字符串比较了,如果是两个长度不等字符串那么就可

11、以直接输出NO MATCH,然后一种一种字符进行比较,如果相等则比较下一种,如果不相等,则直接输出 NO MATCH,懂得每一种字符都相等那么输出 MATCH,则可以得出编写此程序得到MATCH成果规定是1、两个字符串长度必要相等2、相相应每一种字符都必要相等。程序运营成果 第二个程序是从键盘输入数据并显示设计。大概思路:从键盘接受到四位十六进制,一方面要判断接受到是不是符合规定,是不是在0-F中,则要先判断,如果是则进行下面环节,如果是回车或者空格则结束程序,如果不是则显示ERROR!,另一方面输出二进制是一位一位显示,咱们可以把四位十六进制数放在BX中,让它循环左移一位,并且取二进制第八位

12、,让高七位置零,显示最低位加上30H相应ASCII表中数字,如此循环16次,就可以把四位十六进制相应16位二进制输出。 固然在期间遇到了困难,例如最初没有想到要判断输入与否对的,整个重心只在如何输出,因此在运营时浮现了困难,尚有不懂2号功能调用后键入值去哪里了,不懂得下面应当怎么写,日后懂得是赋给了AL了。 下面程序运营成果:第三个程序是响铃设计,大概思路是:一方面要键入一种数,用是1号功能调用,咱们采用是输入一种数ASCII码,由于这样以便比较,则如果在30H-39H则可以运营下面程序,如果是回车0DH,或者空格20H则退出程序,不是话则重新输入,然后讲ASCII码减去2FH则作为响铃次数,

13、响铃中比较重要一点是延时,在两次响铃中间有延时,这样才干更加清晰,为此咱们采用在每两次响铃之间进行CX自循环,设CX=0FFFFH,然后让它循环减1直到为0了则可以进行第二次响铃了,则完毕了两次响铃之间一种延时,响铃次数由键入数决定。在程序设计过程中也遇到了困难,例如刚开始我不懂得响铃是用什么来实现,日后询问同窗和查询资料后懂得响铃是用MOV AH,02H MOV DL,07H INT 21H 来实现,增长了我知识。另一方面不懂得延时是什么东西,日后在参照资料时时发现了本来是用CX自循环来实现,很巧妙一种办法。 第四个程序是将键盘输入小写字母转换为大写字母, 大概思路是这样:一方面用1号功能调

14、用接受从键盘输入字母,然后要判断与否是小写字母,如果键入为回车0DH,,则退出程序20H如果键入值ASCII码不大于61H,及不是小写字母,则重新输入,如果是小写字母,则将小写字母ASCII码减去20H,转换为相应大写字母ASCII码按回车后变成第五个程序是学生成绩名次表设计,大概思路是:一方面要设立数据段放30个学生成绩,尚有30个学生排名。然后调用GETNUM来接受键入成绩,一方面在GETNUM中要判断成绩输入形式与否对的,如果ASCII码不大于30H及不大于0了,就显示出错重新输入,如果输入在0-9之间则将输入值放入DX高四位,然后在将紧接着一种数字存到DX低四位,也就是将一种人成绩存储

15、到DX中去,然后将DL存到相应数据段存储成绩位置由于题目给定,因此存储首地址是1000H,懂得取满30个为止,然后开始判断成绩高低了,可以一方面假设一种AL=00H,然后 将学生成绩与之进行比较,用循环,设CX初值是30,每次将AL与所有其她比完后减1,如果比AL大话,就取代AL,并且判断下一种,如果比AL小话就直接判断下一种,直到30个所有比完为止,将最大成绩学号(即相应地址减去首地址得到数),并将最高成绩清零,是为了下面比较,将学生总数30减去CX,就是该学生成绩名次。然后将学生名次存入相应名次表中相应学号位置处。直到所有30个名次所有存完。然后将名次表输出。就可以得到每个人相应名次了。固然还遇到了某些困难,就是思路不清晰,不懂得详细该怎么做,日后懂得名次表和成绩表用不同数据段来表达,这样就不会混淆了,尚有很重要一点就是不懂得比较完一次之后要把最高那个成绩置零,导致成果出错,日后在参照资料下懂得了这一点。 最后成果是:

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服