姓名: 窦龙华
班级: 电科0901
学号: 3090504012
目的:
结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。学会使用屏幕编辑程序——EDIT,弄懂汇编程序的上级过程以及如何运用DEBUG软件进行汇编程序的调试。
内容与要求:
1.字符串匹配设计
为掌握提示信息的设置方法及读取键入信息的方法,编写程序实现两个字符串比较,如相同则显示“MATCH”,否则显示“NO MATCH”。
2.从键盘输入数据并显示的设计
为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。
3.响铃设计
为掌握响铃的使用方法,编写程序,从键盘接受输入字符,如是数字N则响铃N此,如不是数字则不响。
4.将键盘输入的小写字母转换成大写字母的设计
为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
5.学生成绩名次表设计
为进一步熟悉排序方法,编写程序,将100以内的30个成绩存入首址为1000H的存储区中。1000H+i表示学号为i的学生成绩。编写程序使得在2000H开始的区域排出名次表,2000H+i为学号i的学生的名次。
流程图程序代码
1.字符串匹配设计
下面着重介绍程序5——学生成绩名次表设计:
流程图:
主程序流程图 SCAN子函数程序流程图
程序代码及注释:
CRLF MACRO ;宏定义,回车换行
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
STUNUM EQU 30 ;学生数
MESS1 DB 'Please input 30 score',0DH,0AH,'$' ;提示信息
ERROR DB 'Input error,try again',0DH,0AH,'$' ;报错信息
MESS2 DB 'The order is:',0DH,0AH,'$'
EMARK DB ? ;报错标志
ORG 1000H ;存放成绩地址
SCORE DB 30 DUP(?) ;成绩表
ORG 2000H ;存放名次地址
SEQU DB 30 DUP(?) ;名次表
DATA ENDS
STACK SEGMENT
STA DW 32 DUP(?)
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV SP,TOP
MOV AH,09H ;显示提示信息
MOV DX,OFFSET MESS1
INT 21H
MOV SI,OFFSET SCORE ;成绩表首址
MOV CX,STUNUM
MOV EMARK,0 ;报错标志清0
UUU: CALL GETNUM ;调用子函数读取成绩
CMP EMARK,01H ;判断是否出错
JE START ;出错则重新开始
MOV [SI],DL ;没出错则存入成绩
INC SI ;指向下一个成绩单元地址
LOOP UUU ;判断30个成绩是否读取完
MOV CX,STUNUM
MOV DI,OFFSET SEQU ;名次表首址
VVV: CALL SCAN ;调用扫描子程序
MOV AL,STUNUM ;学生总数
SUB AL,CL ;计算名次
INC AL
MOV BX,DX ;学号
PUSH AX ;将名次转换成压缩BCD码方便显示
PUSH BX
PUSH CX
XOR AH,AH
MOV BH,0AH
DIV BH
MOV CL,4
SHL AL,CL
ADD AL,AH
MOV DH,AL
POP CX
POP BX
POP AX
MOV [DI+BX],DH ;存入名次
LOOP VVV ;判断是否存完
MOV AH,09H ;显示名次提示信息
LEA DX,MESS2
INT 21H
MOV CX,STUNUM
MOV SI,OFFSET SEQU
WWW: MOV AL,[SI]
CALL DISPI ;调用子函数显示名次
PUSH DX
PUSH AX
MOV AH,02 ;显示空格
MOV DL,20H
INT 21H
POP AX
POP DX
INC SI ;指向名次表的下一个地址
LOOP WWW ;判断是否输出所有名次
MOV AH,4CH ;返回DOS
INT 21H
SCAN PROC NEAR ;扫面子函数,没调用一遍,找出成绩表
;中最高成绩,记录其学号,并将此成绩
;清0
PUSH CX
MOV CX,STUNUM
MOV AL,00H
MOV BX,OFFSET SCORE
MOV SI,BX
CCC: CMP AL,[SI]
JAE JJJ
MOV AL,[SI]
MOV DX,SI
SUB DX,BX
JJJ: INC SI
LOOP CCC
ADD BX,DX
MOV BYTE PTR [BX],00H
POP CX
RET
SCAN ENDP
DISPI PROC NEAR ;显示子程序
PUSH CX
MOV BL,AL ;显示高4位
MOV DL,BL
MOV CL,04
ROL DL,CL
AND DL,0FH
CALL DISPL
MOV DL,BL ;显示低4位
AND DL,0FH
CALL DISPL
POP CX
RET
DISPI ENDP
DISPL PROC NEAR ;将名次转换成对应的ASCII码值并显示
ADD DL,30H
MOV AH,02H
INT 21H
RET
DISPL ENDP
GETNUM PROC NEAR ;读取成绩子函数
PUSH CX
XOR DX,DX ;清0,用于存放成绩
GGG: MOV AH,01H
INT 21H ;键盘字符输入
CMP AL,0DH
JZ RRR ;如果是回车则结束
SUB AL,30H
JB ERR ;小于0则报错
CMP AL,09H
JBE GETS ;如果在0—9之间则存成绩至DX
JMP ERR ;否则报错
GETS: MOV CL,04
SHL DX,CL ;将DX中已有数值左移四位
XOR AH,AH
ADD DX,AX ;紧接着将数据存在DX中低四位
JMP GGG ;跳转继续读取数据
ERR: MOV AH,09H ;显示报错信息
MOV DX,OFFSET ERROR
INT 21H
MOV EMARK,01H ;报错标志置1
RRR: PUSH DX
CRLF ;回车换行
POP DX
POP CX
RET
GETNUM ENDP
CODE ENDS
END START
心得体会:
在为期一周的微机原理课程设计中,通过查阅书籍,上网收集资料以及向老师和同学请教,我完成了老师定下的任务。在此次课程设计过程中感受颇深。
这一周,可以说是苦多于甜,但是可以学到很多东西,同时巩固了以前所学过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的程序较复杂,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
在设计过程中遇到了不少的麻烦,最典型的是由于程序相对较大,在用JB,JA等条件跳转语句时出项了超出跳转范围的情况,这就给程序设计带来了一些困难。由于之前都没遇到过这样的问题,所以刚开始遇到的时候有点棘手,不知道该从哪下手解决此问题,以至于都有了放弃该课题的想法。但是又觉得不值得,写了这么长的程序就因为这一个小问题而放弃了实在是说不过去,于是就静下新来查阅课本,发现这些条件跳转语句的跳转范围只能在-128B--+127B之间,而无条件跳转指令JMP则不受此约束,于是我添加了一个无条件跳转语句,通过条件跳转语句先跳转到该无条件跳转语句,再通过 JMP跳转到需要的地方,于是问题就迎刃而解。同过这一个小小的问题也暴露出了自身的问题:对课本知识掌握不牢固,只了解指令的基本功能却忽略了它的约束条件。还有一些问题,比如为了显示方便,需把16进制数转化成10进制数显示,在进行ASCII码值转换时也遇到了问题,A—F不能正确显示,通过与同学讨论也是自己的疏忽导致的。
这不是第一次用汇编语言来写程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的一些程序稍微改动都可以作为子程序用到,这大大方便了我的设计,为我节省了很多的时间。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,去找同学讨论一下,收获很大,可以使很多问题迎刃而解。
不可否认,程序任然存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!
参考文献:
1.张荣标,机械工业出版社,《微型计算机原理与接口技术 第二版》
2.张荣标,《微型计算机原理课程设计指导书》
3.李干林,李升等,北京大学出版社《微机原理及接口技术试验指导书》
第二篇:微机原理课程设计指导书
微机原理课程设计
指
导
书
南通大学计算机科学与技术学院计算机科学与技术系
二零一二年五月
目 录
1 课程设计的目的和任务 ....................................... 1
2 课程设计指导及要求 ........................................... 1
3 课程设计的主要步骤 ........................................... 2
3.1 总体设计 ............................................................................................. 2
3.2 硬件设计 ............................................................................................. 2
3.3 软件设计 ............................................................................................. 2
3.4 软、硬件联调..................................................................................... 2
4 课程设计报告内容及格式要求........................... 2
5 进度安排 ................................................................ 3
6 课程设计的考核方法及成绩评定 ...................... 3
7 课程设计题目 .......................................................... 4
8 主要参考资料 .......................................................... 6
1 课程设计的目的和任务
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
2 课程设计指导及要求
在课程设计时,2~3名同学组成1个设计小组,分别完成项目的功能设计、电路编辑及调试、编码及调试和课程设计报告编写工作。同批次同学中选择同一题的不超过3组。在教师指导下,可以相互讨论。每设计小组提交1份设计报告,设计报告由设计小组同学独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。同学应积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。
学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。指导教师要引导学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
1
3 课程设计的主要步骤
课程设计分为硬件设计和软件设计两个部分,其设计过程可以归纳为以下所述的四个步骤:
3.1 总体设计
本阶段的任务是通过调查研究,查阅资料来初步确定系统结构的总体方案,其中主要涉及到硬件和软件的功能划分。
应用系统中硬件和软件具有一定的互换性,即某些功能既可以用硬件实现也可以用软件实现。一般说来,用硬件实现的优点是可以提高系统的工作速度,但会增加电路的复杂性和硬件成本;而用软件代替某些硬件的功能可以使电路简化,便于修改设计,降低硬件成本,但软件工作量增大。
总体设计时,必须在硬件和软件之间权衡,分工明确,然后分头开始设计。
3.2 硬件设计
在Proteus环境下,结合课程设计题目,设计硬件原理图,搭建硬件电路。
3.3 软件设计
1、采用模块化程序结构设计软件,可将整个软件分成若干功能模块。
2、画出程序流程图。
3、根据流程图,编写源程序。
3.4 软、硬件联调
在Proteus环境下,仿真调试程序。
4 课程设计报告内容及格式要求
【课程设计报告内容】
1、设计题目(在封面注明)
2、设计内容(在此部分详细说明所做题目的基本内容和主要功能)
3、设计原理及方案(含电路原理图、硬件连接示意图、系统功能框图、程序流程图等)
4、汇编源程序代码(关键代码要加必要注释)
5、实施结果(可给出程序运行界面、实验箱运行结果照片等)
6、课程设计体会
7、参考文献
2
【格式要求】
1、课程设计报告要求
(1)总体要求
课程设计报告应排版工整、内容完整、结论正确。要在报告封面上注明学院、班级、姓名、学号、指导教师、提交时间等完整信息。要求用计算机打印,纸张大小为A4。
(2)格式要求
? 目录:用四号字,其中每章题目中,中文用宋体,英文用Times New Roman,并注
明各章节起始页码,题目和页码之间用“??”相连。
? 标题:中文采用四号黑体,英文用Times New Roman。
? 正文:中文采用小四号宋体,英文用Times New Roman。段落为:1.5倍行距,段前、
段后均为0磅。
? 页面设置:单面打印:上2cm,下2cm,左2.5 cm,右1.5 cm,装订线0.5cm,页眉
1.2cm,页脚1.5cm。页眉以小五号宋体字键入“接口技术课程设计”,居左。页脚插入页码,居中。
? 参考文献的编写格式:
期刊文献格式:[序号]作者.文目[J].期刊名,年,卷号(期数):起止页码
图书文献格式:[序号]作者.书名[M].出版地:出版者,年份,起止页码
5 进度安排
课程设计任务在课程设计开始之前布置。学生可以在课余时间提前熟悉设计任务,查阅相关资料,确定总体方案,软、硬件功能划分,硬件接口原理图设计,程序设计等工作,为课程设计提前做好准备工作。
课程设计时间为1周。具体安排如下:
周一至周四学生完成设计课题的软硬件联调工作;
周五指导教师检查本周设计任务的完成情况,学生完成课程设计报告的撰写。
6 课程设计的考核方法及成绩评定
? 考核方法:现场验收(占50%),课程设计报告(占50%)。
? 考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演
示效果、答辩情况及设计报告质量。
? 成绩评定:优,良,中,及格,不及格。
3
? 特别说明:
(1)如发现抄袭,按照不及格处理。
(2)若出现2组以上设计方案完全相同,视同抄袭。
7 课程设计题目
【选题说明】
(1)一组一题,不得重复。可从下列题目中任选1题,也可自拟题目。
(2)下列题目仅提出了合格要求,各位同学需要在基本要求的基础上增加功能并实现。指导教师根据各位同学完成课题的质量评分。
题目1 交通灯控制系统
利用8253定时器、8255等接口,设计一电路,模拟十字路口交通灯控制。要求自行设计控制方式。
题目2 利用DAC设计波形发生器
利用DAC设计一个波形发生器,能分别产生三角波、正弦波、锯齿波和方波,要求自行设计波形输出的切换方式。
题目3 利用DAC设计幅值可变的波形发生器
利用DAC设计一个幅值可变的波形发生器,要求自行设计控制方式。
题目4 电子万年历
参考市场上的电子万年历的功能,利用所学接口芯片设计一电子万年历。要求至少能显示日期值、星期值,并可通过键盘修改日期。
题目5 电子秒表
利用8253等接口设计电子秒表,要求完成开始计时、停止计时及计时复位等功能,计时时间精确到毫秒,控制方式自行设计。
题目6 编程控制步进电机的转向
查找资料,了解步进电机的性能及原理,编程控制步进电机的正转或反转。
题目7 直流电机调速系统
了解直流电机闭环调速的方法,实现直流电机的调速功能。
题目8 数字钟
利用LED七段数码管设计数字钟电路,要求自行设计数字钟的显示格式和数值调整控制方式。
4
题目9 花式跑马灯
自行设计电路,实现具有5种以上工作方式的跑马灯,要求设计两种以上的切换方式。 题目10 篮球比赛电子记分牌
根据篮球比赛规则,设计电子记分牌。
题目11 定时器
利用8253等接口芯片设计计时器,要求设计定时时间输入方式和一种以上的报警方式。 题目12 篮球比赛计时器
根据篮球比赛规则,设计篮球比赛计时器。
题目13 电子密码锁
设计一个电子密码锁,利用器件的状态(如:发光二极管的亮与灭)模拟锁的开、闭。要求设计恰当的初始密码设定方式,并能根据密码开锁。
题目14 计算器
设计一计算器,要求至少能完成2位数的加减运算。
题目15 点阵广告牌
利用点阵屏器件(如MATRIX-8X8-RED)设计能显示字符或图案的点阵广告牌。
题目16 音乐播放器
利用8253驱动扬声器发声,实现乐曲播放,音调频率请自行查找参考资料,如参考文献[4]。
题目17 电子琴
本程序将键盘变成钢琴键盘,选择键盘上7个按键,作为“哆来咪?”音的按钮。通过此程序驱动扬声器发出不同的音调。
题目18 电压报警器
设计一个电压报警器,要求利用Proteus ISIS提供的POT-HG(POT-LIN)元件模拟电压变化,利用ADC0808实现电压监控,当输入电压在设定值以内,显示电压值。当输入电压超过设定值,报警。显示方式、报警方式自行设计。
题目19 投票统计器
设计一个投票统计器,完成投票、计票统计和票数显示等功能。
题目20 多路数字抢答器
设计一个多路数字抢答器,要求自行设计有关功能。
题目21 自行拟定的题目
5
各位同学可以结合所学知识,自行拟定本次课程设计题目。自拟的题目须得到指导教师的认可。
8 主要参考资料
1.周明德.微型计算机系统原理及应用.北京:清华大学出版社
2.张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社
3.戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社
4.沈美明,温冬婵.IBM-PC汇编语言程序设计.北京:清华大学出版社
6