微机原理课程设计.docx
- 文档编号:5144012
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:105.35KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
课程设计说明书
课程名称:
微机原理课程设计
题目:
数制转换实验
院系:
理学院
专业班级:
应用物理13-1
学号:
2013305188
学生姓名:
李立才
指导教师:
李声
2016年6月17日
安徽理工大学课程设计(论文)任务书
理学院院系信计教研室
学号
2013305188
学生姓名
李立才
专业(班级)
应物13-1
设计题目
数制转换实验,小写转大写实验
设
计
技
术
参
数
在masmforwindows上经debug调试可运行;可满足设计要求。
设
计
要
求
为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。
为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
工
作
量
查阅相关材料,完成设计,完成设计报告
工
作
计
划
1.综合论证,确定设计方案。
2.查阅资料,完成设计。
3.完成设计报告。
参
考
资
料
[1]姚燕南,薛钧义主编.《微型计算机原理》第四版[M].西安电子科技大学出版社.
[2]潘峰主编.《微型计算机原理与汇编语言》第三版[M].电子工业出版社.
[3]雏逢兴编著.《计算机硬件技术基础》[M],高等教育出版社.
指导教师签字
教研室主任签字
年月日
安徽理工大学课程设计(论文)成绩评定表
学生姓名:
李立才学号:
2013305188专业班级:
应物13-1
课程设计题目:
数制转换实验
指导教师评语:
成绩:
指导教师:
年月日
1.课程设计实验目的与要求
1.1从键盘输入数据并显示
1.掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。
2.掌握子程序定义和调用的方法。
3.掌握循环移位指令的用法和无符号数比较大小的方法。
1.2将键盘输入的小写字母转换成大写字母
1.了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
2.熟练掌握汇编语言程序设计的方法及上机步骤
3.掌握将小写字母转换为相应的大写字母的方法
4.掌握子程序的设计方法
5.掌握DOS功能的调用方法
2.课程设计实验内容
2.1从键盘输入数据并显示
为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
课程设计要求进行小写字母到大写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值
2.2将键盘输入的小写字母转换成大写字母
第一步是实现小写字母向大写字母的转换,主要利用小写字母比大写字母大20H的关系。
第二部要键盘输入,显示输出。
3.课程设计实验流程图
3.1从键盘输入数据并显示
图3-1实验流程图
3.2将键盘输入的小写字母转换成大写字母
图3-2实验流程图
4.课程设计实验程序
4.1从键盘输入数据并显示
datasegment
;数据区定义开始
strrdb'pleaseinputhexadecimalnumber:
$'
errrdb'thisisanerrornumber!
$'
;数据区定义结束
dataends
stacksegmentstack
;堆栈区定义开始
db100dup(?
)
;堆栈区定义结束
stackends
codesegment
;代码区定义开始
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movax,stack
movss,ax
;设定区址
movcx,00h
xorbx,bx
callgetnum
;按提示输入四个字符,存入BX中
movcx,10h
;用于下面的loopnext处,因为BX共有16位
callnewline
;转到新行
movdl,0ah
movah,02h
int21h
;换行
movdl,0dh
movah,02h
int21h
;回车
next:
rolbx,1
;把BX所存字符的二进制的最高位移到最低位
movdl,bl
anddl,01h
;获取最低位
adddl,30h
;将最低位转成数字,即字符'0'或'1'
movah,02h
int21h
;即将之前BX的最高位输出到屏幕
loopnext
;循环,将BX的每一位都输出来
movah,4ch
int21h
;完成
;----------------------------------------
;功能:
接受四个字符,必须输入0-9A-F,否则提示错要重输
;假设先后输入1234,则最后BX为0x1234
getnumprocnear
;子过程getnum开始
again:
pushcx
movcl,4
shlbx,cl
;把BX左移四位,空出了低四位
again1:
callnewline
;转到新行
leadx,strr
movah,09h
int21h
;输出"pleaseinputhexadecimalnumber:
"
movah,01h
int21h
;接受输入字符
cmpal,46h
jadone
;如果字符比'F'大则转到done
cmpal,41h
jbnext1
;如果字符比'A'小则转到next1
subal,07h
;如果字符在'A'和'F'间,则减七
;提示:
数字1-9为0x31-0x39,字符A-F处理后为0x3A-0x3F,正好接在数字后
jmptt
next1:
cmpal,39h
jadone
;如果字符比'9'大则转到done
tt:
cmpal,30h
jbdone
;如果字符比'0'小则转到done
subal,30h
;减0x30,于是原字符0-9A-F变成相应的十六进制数0x0-0xF
movah,00h
addbx,ax
;把0x0-0xF存到bx的低四位
popcx
inccx
cmpcx,04h
;是否循环了四次
jett2
;是的话就跳到tt2结束
jmpagain
;否则跳到again再来一次
done:
callnewline
leadx,errr
movah,09h
int21h
;如果输入的字符不符合要求,输出错误提示
jmpagain1
;转到again1再次接受输入
tt2:
ret
;子过程getnum结束
getnumendp
;----------------------------------------
;功能:
输出回车换行符,即转到新行
newlineprocnear
;子过程newline开始
movdl,0ah
;设输出字符为0x0A,即换行符
movah,02h
int21h
movdl,0dh
;设输出字符为0x0D,即回车符
movah,02h
int21h
ret
;子过程newline结束
newlineendp
;----------------------------------------
;代码区定义结束
codeends
;指定执行起点
endstart
4.2将键盘输入的小写字母转换成大写字母
DATASSEGMENT
MESSAGEDB'Welcometothesystem!
',13,10,13,10
DB'Thefunctionoftheprogramischangingsmallletterstocapitalletters.',13,10
DB'Ifyouentercapitallettersornumberstherewillbenochanges.',13,10,13,10
DB'Pleaseenterastring.',13,10,'$'
CRDB13,10,'$';回车换行
STRINGDB100
DB0
DB80DUP(0);定义缓冲区
AGAINDB'Doyouwanttotryagain?
(YorN)',13,10,'$'
ERRORDB'ERROR!
',13,10,'Pleaseentertherightcommomds.',13,10,'$';错误提示
DATASENDS
STACKSSEGMENT
DB200DUP(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
HEAD:
MOVAX,DATAS
MOVDS,AX
LEADX,MESSAGE;输出提示语
MOVAH,09H
INT21H
LEADX,STRING
MOVAH,0AH
INT21H;把字符串输入到BUF区
LEADX,CR
MOVAH,09H
INT21H;以上为回车换行
LEASI,STRING+2;把字符串首地址存入BX
MOVCL,STRING+1;把字符个数存CX
MOVCH,0
NEXT1:
MOVDL,[SI]
CMPDL,'a'
JBNEXT2
CMPDL,'z'
JANEXT2;ASCII码小于a和大于z的跳过,其余的减32
SUBDL,20H;大小写字母的ASCII码差32
NEXT2:
MOVAH,02H
INT21H
INCSI;BX自加,判断下一个字符
DECCX;CX自减,最终将是0
JNENEXT1;CX非零时,跳回NEXT1
MOVDX,OFFSETCR;输出回车换行
MOVAH,09H
INT21H
JMPEXIT
OVERFLOW:
;错误提示
LEADX,CR
MOVAH,09H
INT21H
LEADX,ERROR
MOVAH,09H
INT21H
EXIT:
LEADX,CR
MOVAH,09H
INT21H
LEADX,AGAIN;提示是否再试一次
MOVAH,09H
INT21H
MOVAH,01H
INT21H
PUSHAX
LEADX,CR
MOVAH,09H
INT21H
POPAX
CMPAL,'Y'
JZHEAD
CMPAL,'y'
JZHEAD
CMPAL,'N'
JZOVER
CMPAL,'n'
JZOVER
JMPOVERFLOW
OVER:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
5.课程设计实验运行结果
5.1从键盘输入数据并显示
图5-1实验运行结果
5.2将键盘输入的小写字母转换成大写字母
图5-2实验运行结果
6.课程设计实验心得
通过这次课程设计,使我认识到自己理论知识掌握不够,对于许多指令和一些基本的编程方法都掌握不清晰。
为了顺利完成课程设计,我重新拿起课本,用心阅读,问题才一一解决。
由此看来,知识只有在实践中才能真正掌握。
难怪人们说汇编语言编程必须在使用中慢慢理解。
本学期做了许多微机原理的实验,开始以为这次课程设计会像前几次实验简单。
直到要编写程序实现的时候,才发现自己对汇编程序的了解确实还不够,尤其是编程方面的能力有待提高。
在不断地再次学习和理解过程中,我慢慢掌握了更多汇编语言的应用知识,最终写出了大小写字母转换的程序。
把编写好的程序输入软件时候,也出现了许多小问题,比如没有定义变量等等。
归纳起来都是因为编程掌握不牢固,写程序没有条理,加上自己粗心大意的恶习依旧没改正造成的,以后需要努力改正。
总的来说,这次课程设计,自己受益匪浅。
不但加固了微机原理知识的理解,而且加强了对汇编语言的应用能力。
同时,非常感谢指导老师与同学给予我在编程方面的帮助,让我能够完成这次设计。
参考文献
[1]姚燕南,薛钧义主编.微型计算机原理(第四版)[M],西安:
西安电子科技大学出版社,2003
[2]潘峰主编.微型计算机原理与汇编语言(第三版)[M],西安电子工业出版社,2003
[3]雏逢兴编著.计算机硬件技术基础[M],北京:
高等教育出版社,1998
[4]王永山等编著.微型计算机原理与应用[M],西安:
电子科技大学出版社,1999
[5]舒贞权等编著.Intel8086/8088系列微型计算机原理[M].西安:
西安交通大学出版社,1993
[6]HwangS,ChoiS.IronbirdGroundTestforTiltRotorUnmannedAerialVehicle[J].International JournalofAeronauticalandSpaceScience.2010,11(4):
313-318
[7]MillerM,NarkiewiczJ.Tiltrotormodellingforsimulationinvariousflightconditions[J].Journal ofTheoreticalandAppliedMechanics.2006,44(4):
881-906
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计