微机原理与汇编语言程序设计课程设计报告.docx
- 文档编号:2723126
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:27
- 大小:23.63KB
微机原理与汇编语言程序设计课程设计报告.docx
《微机原理与汇编语言程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理与汇编语言程序设计课程设计报告.docx(27页珍藏版)》请在冰点文库上搜索。
微机原理与汇编语言程序设计课程设计报告
课程设计报告
名称:
微机原理与汇编语言程序设计课程设计
题目:
汇编语言编程实践及电子钟设计
院系:
计算机系
班级:
学号:
学生姓名:
指导教师:
设计周数:
成绩:
《微机原理与汇编语言程序设计课程设计》评分表
实验结果
(60分)
电话号码本程序完善(5分)
显示器I/O程序设计(10分)
中断程序设计(5分)
发声系统设计(10分)
键盘程序设计(10分)
电子钟设计(20分)
实验报告
(30分)
报告规范完整、符合要求,工作量大,文档逻辑性强,表述流畅(24-30分)
报告较规范完整、基本符合要求,工作量适中,文档逻辑性较强,表述较流畅(15-23分)
报告不规范完整、不符合要求、文档逻辑性差,表述不清(0-14分)
实验过程
(10分)
实验认真,主动性强,反映出较强的综合分析、解决问题的能力,出勤率高,无迟到早退现象(7-10分)
实验较认真,较积极主动,反映出一定的综合分析、解决问题的能力,出勤率较高,较少迟到早退(4-6分)
实验不认真主动,分析解决问题能力一般,出勤率低(1-3分)
总成绩
(0-100分)
优(90-100分)
良(80-89分)
中(70-79分)
通过(60-69分)
不通过(≤60分)
任务书
一、目的与要求
本课程设计包含软件部分和硬件部分两个环节。
软件部分:
进一步熟悉汇编语言设计方法和步骤,完成在有限的课内实验环节无法涉及到的具有综合设计性的软件实验,如中断程序设计、I/O程序设计、宏设计等。
硬件部分:
利用伟福试验设备中的8253可编程定时/计数器,8259中断控制器,8255可编程并行接口芯片和七段数码管等设计一个电子钟电路,并编制一个程序使电子钟能正常运行。
通过软硬件环节的设计和调试,巩固所学知识,增强动手能力,提高综合性工程素质。
二、主要内容
软件部分:
1.熟悉编程环境,完善前期电话号码本设计的功能;2.显示器I/O程序设计,完成窗口控制程序;3.中断程序设计,完成内部中断服务程序和外部中断服务程序设计;4.发声系统设计;5.键盘程序设计。
硬件部分:
1.总体模块设计,查阅资料,设计主程序和中断服务程序的流程;2.详细设计,完成软硬件模块的框架。
3.调试,对前述工作进一步细化;4.完善功能,实现电子钟的准确运行,并进一步改进其功能;5.验收、实验报告撰写。
三、进度计划
序号
设计(实验)内容
完成时间
备注
1
熟悉环境,完善电话号码本设计的功能
半天
2
显示器I/O程序设计
1天
3
中断程序设计
1天
4
发声系统设计
1天
5
键盘程序设计
1天
6
验收、实验报告总结、撰写
半天
7
总体模块设计
半天
8
详细设计
1天半
9
调试
1天
10
完善功能
1天
11
系统验收、实验报告撰写
1天
四、设计(实验)成果要求
1.软件环节要求掌握各环节的设计原理、能实现各环节要求的功能。
2.硬件环节要求利用相关接口芯片,实现电子钟的准确运行等功能。
3.总结实验,撰写实验报告。
五、考核方式
实验结果(60%)+实验报告(30%)+实验过程表现(10%)
1.验收:
完成课程设计题目后由指导老师验收,学生汇报上机题目完成情况,回答提出的问题。
2.撰写课程设计实验报告:
完成课程设计题目后,应认真撰写课程设计报告,报告应内容全面、格式规范。
学生姓名:
指导教师:
年月日
实验一电话号码本设计完善
一、课程设计(综合实验)的目的与要求
1.熟练掌握汇编语言程序设计环境,根据前期掌握程度,可选择Masmforwindows集成实验环境(实验室配备),或自行安装masm5.0、masm6.0、Emu8086,Tasm等,软件开发环境可由学生根据使用爱好自选。
2.根据课内实验验收时指导教师提出的意见,以及和同学讨论的结果,设计实现一个功能比较完善的电话号码本,并在设计中体现自己的工作特色,即具备和其他设计不同之处。
二、设计(实验)正文
1.定义电话本的结构体
2.删除子程序
CANCELPROC;删除记录的过程
newline
MOVDX,OFFSETCZTS
MOVAH,9H
INT21H
MOVAH,01H;输入学号
INT21H
MOVBJ1,AL
MOVAH,01H
INT21H
MOVBJ2,AL
MOVBX,0
MOVDI,30
ALCZ9:
MOVSI,0;先检查是否有要删除的数据
MOVAH,BJ1
CMPAH,STU[BX].NUM[SI]
JNEALCZ8
INCSI
MOVAL,BJ2
CMPAL,STU[BX].NUM[SI]
JEALSC1;有此学号就转到删除它
ALCZ8:
ADDBX,TYPESTU
DECDI
CMPDI,0
JNEALCZ9
newline
MOVAH,9H
MOVDX,OFFSETNO;没有就告知用户
INT21H
newline
CALLTO_DOES
ALSC1:
MOVBX,0
LSC4:
MOVSI,0
MOVAH,BJ1
CMPAH,STU[BX].NUM[SI]
JNELSC1
INCSI
MOVAL,BJ2
CMPAL,STU[BX].NUM[SI]
JELSC2;找到要删除的学生就删除
LSC1:
ADDBX,TYPESTU
JMPLSC4
LSC2:
MOVSI,0;删除学生资料,即把它清零
MOVSTU[BX].NUM[SI],0
INCSI
MOVSTU[BX].NUM[SI],0
MOVSI,0
MOVCX,20
LSC3:
MOVSTU[BX].NAM[SI],0
INCSI
LOOPLSC3
MOVSI,0
MOVCX,12
SC1:
MOVSTU[BX].TLE[SI],''
INCSI
LOOPSC1
newline
MOVAH,9
MOVDX,OFFSETSCCG;显示‘删除成功’
INT21H
newline
RET
CANCELENDP
3.查找记录
FINDPROC;查找记录的过程
newline
MOVDX,OFFSETCZTS
MOVAH,9H
INT21H
MOVAH,01H;输入查找的学号
INT21H
MOVBJ1,AL
MOVAH,01H
INT21H
MOVBJ2,AL
newline
MOVBX,0
MOVDI,30;循环次数
LCZ9:
MOVSI,0;先检查是否有要查找数据
MOVAH,BJ1
CMPAH,STU[BX].NUM[SI]
JNELCZ8
INCSI
MOVAL,BJ2
CMPAL,STU[BX].NUM[SI]
JELCZ7
LCZ8:
ADDBX,TYPESTU
DECDI
CMPDI,0
JNELCZ9
MOVAH,9H;没有数据就告知用户
MOVDX,OFFSETNO
INT21H
newline
CALLTO_DOES
LCZ7:
CALLLINE;有要找的学号时先输出栏目名称
newline
MOVDX,OFFSETML
MOVAH,9H
INT21H
newline
movah,02h;
MOVDL,''
MOVDL,''
INT21H
MOVBX,0;从第1个学生开始查找
LCZ4:
MOVSI,0
MOVAH,BJ1
CMPSTU[BX].NUM[SI],AH
JNELCZ5
INCSI
MOVAL,BJ2
CMPSTU[BX].NUM[SI],AL
JZLCZ2
LCZ5:
ADDBX,TYPESTU
JMPLCZ4
LCZ2:
MOVSI,0;开始输出要找的学生的资料
MOVAH,02H
MOVDL,STU[BX].NUM[SI];输出学号
INT21H
INCSI
MOVDL,STU[BX].NUM[SI]
INT21H
MOVCX,4;输出空格
MOVAH,02H
HG:
MOVDL,''
INT21H
LOOPHG
MOVSI,0
LCZ3:
MOVDL,STU[BX].NAM[SI];输出姓名
INT21H
INCSI
CMPSTU[BX].NAM[SI],0
JNELCZ3
MOVCX,20
SUBCX,SI;输出空格以便使数据输出时对齐
HG4:
MOVDL,''
INT21H
LOOPHG4
MOVSI,0
LDY1:
MOVDL,STU[BX].TLE[SI];输出电话号码
CMPDL,''
JEJJB
INT21H
INCSI
JMPLDY1
JJB:
newline
CALLLINE
newline
CALLTO_DOES
RET
FINDENDP
5.浏览记录
SKIMPROC;浏览记录的过程
newline
MOVBX,0
MOVDI,30
YY1:
MOVSI,0;检查是否一个数据都没有
CMPSTU[BX].NAM[SI],0
JNEKK1;有数据时转输出
ADDBX,TYPESTU
DECDI
CMPDI,0
JNEYY1
MOVAH,9H;没有就告知用户
MOVDX,OFFSETNODA
INT21H
newline
CALLTO_DOES
KK1:
CALLLINE
newline
MOVAH,9H;先输出栏目名称
MOVDX,OFFSETML
INT21H
newline
MOVBX,0
MOVDI,30
LL1:
MOVSI,0;开始输出所有学生资料
CMPSTU[BX].NAM[SI],0
JNZPP1
ADDBX,TYPESTU
DECDI
CMPDI,0
JNELL1
JMPDOES10
PP1:
MOVSI,0
MOVDL,''
INT21H
MOVDL,''
INT21H
MOVDL,STU[BX].NUM[SI];输出学号
INT21H
INCSI
MOVDL,STU[BX].NUM[SI];输出学号
INT21H
MOVSI,0
MOVCX,4
MOVAH,02H
HG3:
MOVDL,''
INT21H
LOOPHG3
NA1:
MOVDL,STU[BX].NAM[SI];输出姓名
INT21H
INCSI
CMPSTU[BX].NAM[SI],0
JNZNA1
MOVCX,20
SUBCX,SI
HG2:
MOVDL,''
INT21H
LOOPHG2
MOVSI,0
LDY2:
MOVDL,STU[BX].TLE[SI];输出电话号码
CMPDL,''
JEJJ1
INT21H
INCSI
JMPLDY2
JJ1:
newline
ADDBX,TYPESTU
DECDI
CMPDI,0
JNELL1
DOES10:
CALLLINE
newline
CALLTO_DOES
RET
SKIMENDP
三、课程设计(综合实验)总结或结论
通过本次课程设计,进一步掌握了汇编的程序设计方法,对原来学过的和没学过的知识都有了较深的理解,也深刻体会到用汇编语言编写代码却是不容易,汇编好几行语句在高级语言中只需要一条就可以完成,但事物总有两面行,存在即具其合理性,asm的优越的性能(时间和空间),高级语言是望尘莫及的,所以学号汇编也是为我们以后的成功奠定基础。
相信通过这次汇编的课程实际,自己的分析问题和处理问题的能力都有了一次不小的提高,收获不少。
同时也要感谢在课程设计中给予我帮助的老师。
此次课程设计目的已经达到。
实验二:
显示器I/O程序设计
一.课程设计(综合实验)的目的与要求
示器I/O程序设计,完成屏幕窗口控制程序。
要求在屏幕上开出三个窗口,它们的左上角和右下角的坐标分别是(5,10),(15,30)和(5,50),(15,70)和(18,15),(22,65),如从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。
若需要将字符显示于左窗口,则先按下←键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示出左窗口的内容。
如果再按下→键,输入字符就会接在先前输入的字符之后显示出来。
当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示与最低一行,窗口最高一行向上卷动后消失。
二.设计(实验)正文
I/O窗口中自己达到的目的有:
1.回车:
通过获取回车键的接通码进入该程序段,进行卷一行,且光标设置,并进行分左右窗口设置,跳转不同。
ENTERHUAN:
SCROLL18,15,22,65,1
MOVDWY,15
CMPWINDOWNUM,0
JZONE
SCROLL5,50,15,70,1
POS_CURSE15,50
MOVRY,50
movrx,15
JMPINPUT
ONE:
SCROLL5,10,15,30,1
POS_CURSE15,10
MOVLY,10
movlx,15
JMPINPUT
2.删除:
通过int10功能中03H获取光标位置,通过卷行,向前卷动,以达到删除效果。
DEL:
movah,03h
int10h
decdl
pushdx
SCROLLdh,dl,dh,dl,0
popdx
pos_cursedh,dl
movry,dl
jmpinput
三.课程设计(综合实验)总结或结论
此实验中是在别人的基础上进行改动,虽然自己编写的程序不太长,但是仍然存在很多困难。
并且在此程序中仍然存在错误,如删除中,向前滚动,并不能达到删除,会出现输出第二个字母的时候向后跳显示,只是屏幕上显示删除,实际内存中并没删除。
并且并没有判断到窗口的最左行想上一行跳。
实验三:
中断程序设计
一.课程设计(综合实验)的目的与要求
中断程序设计,完成内部中断服务程序和外部中断服务程序设计。
具体要求为:
(1).编写一个内部中断服务程序,使其能够显示以“0”结尾的字符串(利用显示器功能调用INT10H)。
字符串缓冲区首地址为入口参数,利用DS:
DX传递此参数。
(2).编写一个可屏蔽的外部中断服务程序,中断请求来自8259A的IRQ0,在新的外部中断服务程序(新08H中断)中,使得每55ms的中断在屏幕上显示一串信息“A8259AInterrupt!
”,显示10次后,恢复原中断服务程序,返回DOS。
二.设计(实验)正文
1.内部中断
2.外部中断
3.其中增加了一小段进行延迟,及中断10次才输出一次
inccounter1
cmpcounter1,0ah
jbstop
movcounter1,0
inccounter
三.课程设计(综合实验)总结或结论
通过本次试验,我了解了汇编程序的开发过程,能够在MASMforwindow环境下的进行编辑,变异,连接程序,掌握了INT21H软件中的的调用DOS内部子程序的方法。
但对于dos环境下的汇编程序的编辑编译连接使用还不是很熟悉,只能是在masmforwindow继承软件开发环境熟悉的编译连接运行。
实验四:
发声系统设计
一.课程设计(综合实验)的目的与要求
发声系统设计,参考教材中的例9.1,利用扬声器控制原理,编写一个简易乐器程序。
要求当按下1~8数字键时,分别发出连续的中音1~7和高音i(对应频率依次为524Hz、588Hz、660Hz、698Hz、784Hz、880Hz、988Hz和1048Hz);当按下其他键时,暂停发声。
如果时间允许,可在此基础上自行发挥,如增加按键功能、编辑歌曲等。
二.设计(实验)正文
1.扬声器设置
speakerproc
pushax
moval,0b6h;10110110
out43h,al
popax
out42h,al
moval,ah
out42h,al
ret
speakerendp
speakonproc;扬声器开
pushax
inal,61h
oral,03h
out61h,al
popax
ret
speakonendp
speakoffproc;扬声器关
pushax
inal,61h
andal,0fch
out61h,al
popax
ret
speakoffendp
2.输入判断,并调用
first:
movah,1h
int21h
cmpal,1bh
jzexit
cmpal,31h
jbclose
cmpal,38h
jaclose
andal,0fh
movah,00h
addax,ax
movsi,ax
movbx,offsetfreq
movax,[bx+si]
movcx,ax
movdx,0012h
movax,34dch
divcx
callspeaker
callspeakon
jmpfirst
close:
callspeakoff
jmpfirst
三.课程设计(综合实验)总结或结论
音符和频率之间有一定的对应关系,如果计算机键盘上的一些键和音符、频率也形成一种对应关系,则可通过键盘控制扬声器发出各种音符声音,这时计算机键盘就变成了钢琴键盘,就可以用他弹奏出简单的乐曲了。
实验五:
键盘程序设计
一.课程设计(综合实验)的目的与要求
键盘程序设计,编写一个程序,每当在键盘上按下一个按键时,就显示其接通和断开扫描码。
具体原理参见教材第十一章,并行接口。
二.设计(实验)正文
1.输出接通扫描码的十位个位计算
binihexproc
movch,4
rotate:
movcl,4
rolbx,cl;循环左移
moval,bl
andal,0fh
addal,30h
cmpal,3ah
jlprint
addal,7
print:
movdl,al
movah,2
int21h
decch
jnzrotate
ret
binihexendp
1.计算断开扫描码,在接通扫描码的基础上加80h并调用以上程序
2.键盘上F1~F9在字符上的输出,先输出F,再对其接通扫描码减去3bh,进行输出
movah,2;是就输出F
movdl,46h
int21h
subch,3bh
addch,30h
movdl,ch
movah,2
int21h
movdl,0Dh
movah,2
int21h
movdl,0Ah
movah,2
int21h
jmpagain
next:
movdl,cl
movah,2
int21h
;打印回车换行
movdl,0Dh
movah,2
int21h
movdl,0Ah
movah,2
int21h
三.课程设计(综合实验)总结或结论
本实验中的要求是将输入的十六进制的数转换为十进制的数,并进行输出,结果是将十六进制的数按ASCII码转换而得的。
在此程序中较为复杂的是进行转换,程序中,需要设定循环次数,以及跳转方向。
同时,在输出字符时也需要进行判断,分类输出。
实验六:
电子钟设计
一.课程设计(综合实验)的目的与要求
利用伟福实验系统提供的8253计数器,8259中断控制器、七段数码管、8255并行接口芯片等,设计实现一个电子钟的电路,并编制一个程序使得该电子钟能正常工作。
其中,8253计数器用于产生计时脉冲(如1s、100ms等),中断服务程序用于对时、分、秒的计数更新,并存入相应的存储单元,主程序设置相应芯片的工作方式、完成时、分、秒信息的显示等。
二.设计(实验)正文
在程序中自己进行完成的方面有:
1.闹钟到点报时
NAOZHONGPROCNEAR
MOVAL,MINUTE;将要进行调整的闹钟赋给闹钟的时间
MOVNMINUTE,AL
MOVAL,HOUR
MOVNHOUR,AL
SHI2:
MOVAL,NHOUR;将时间数字转换赋给LED显示缓冲区
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH
MOVAH,0
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX]
MOVLEDBUF,AL
MOVBX,OFFSETLEDMAP
MOVAL,CH
MOVAH,0
ADDBX,AX
MOVAL,[BX]
ORAL,80H
MOVLEDBUF+1,AL
MOVAL,NMINUTE
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH
MOVAH,0
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX]
MOVLEDBUF+2,AL
MOVBX,OFFSETLEDMAP
MOVAL,CH
MOVAH,0
ADDBX,AX
MOVAL,[BX]
ORAL,80H
MOVLEDBUF+3,AL
MOVLEDBUF+4,3FH
MOVLEDBUF+5,3FH
CALLDISPLAYLED;调用完LED显示
CALLTESTKEY;测试是否有输入,有则判断,无则继续显示
JNESHI1
JMPSHI2
SHI1:
CALLGETKEY
CMPAL,0FH
JZNXIAOSHI
CMPAL,0EH
J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编语言 程序设计 课程设计 报告