cjv微机原理课程设计参考wordWord格式文档下载.docx
《cjv微机原理课程设计参考wordWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《cjv微机原理课程设计参考wordWord格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。
在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
回车
next:
rolbx,1
把BX所存字符的二进制的最高位移到最低位
movdl,bl
anddl,01h
获取最低位
adddl,30h
将最低位转成数字,即字符'
0'
或'
1'
即将之前BX的最高位输出到屏幕
loopnext
循环,将BX的每一位都输出来
movah,4ch
完成
----------------------------------------
功能:
接受四个字符,必须输入0-9A-F,否则提示错要重输
假设先后输入1234,则最后BX为0x1234
getnumprocnear
子过程getnum开始
again:
pushcx
movcl,4
shlbx,cl
把BX左移四位,空出了低四位
again1:
leadx,strr
movah,09h
输出"
"
movah,01h
接受输入字符
cmpal,46h
jadone
如果字符比'
F'
大则转到done
cmpal,41h
jbnext1
A'
小则转到next1
subal,07h
如果字符在'
和'
间,则减七
提示:
数字1-9为0x31-0x39,字符A-F处理后为0x3A-0x3F,正好接在数字后
jmptt
next1:
cmpal,39h
9'
tt:
cmpal,30h
jbdone
小则转到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:
leadx,errr
如果输入的字符不符合要求,输出错误提示
jmpagain1
转到again1再次接受输入
tt2:
ret
子过程getnum结束
getnumendp
输出回车换行符,即转到新行
newlineprocnear
子过程newline开始
设输出字符为0x0A,即换行符
设输出字符为0x0D,即回车符
子过程newline结束
newlineendp
代码区定义结束
codeends
指定执行起点
endstart
4.2将键盘输入的小写字母转换成大写字母
DATASSEGMENT
MESSAGEDB'
Welcometothesystem!
'
13,10,13,10
DB'
Thefunctionoftheprogramischangingsmallletterstocapitalletters.'
13,10
Ifyouentercapitallettersornumberstherewillbenochanges.'
Pleaseenterastring.'
13,10,'
CRDB13,10,'
;
回车换行
STRINGDB100
DB0
DB80DUP(0);
定义缓冲区
AGAINDB'
Doyouwanttotryagain?
(YorN)'
ERRORDB'
ERROR!
Pleaseentertherightcommomds.'
错误提示
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
以上为回车换行
LEASI,STRING+2;
把字符串首地址存入BX
MOVCL,STRING+1;
把字符个数存CX
MOVCH,0
NEXT1:
MOVDL,[SI]
CMPDL,'
a'
JBNEXT2
z'
JANEXT2;
ASCII码小于a和大于z的跳过,其余的减32
SUBDL,20H;
大小写字母的ASCII码差32
NEXT2:
MOVAH,02H
INCSI;
BX自加,判断下一个字符
DECCX;
CX自减,最终将是0
JNENEXT1;
CX非零时,跳回NEXT1
MOVDX,OFFSETCR;
输出回车换行
JMPEXIT
OVERFLOW:
LEADX,CR
MOVAH,09H
INT21H
LEADX,ERROR
EXIT:
LEADX,AGAIN;
提示是否再试一次
MOVAH,01H
PUSHAX
POPAX
CMPAL,'
Y'
JZHEAD
y'
N'
JZOVER
n'
JMPOVERFLOW
OVER:
MOVAH,4CH
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
(注:
可编辑下载,若有不当之处,请指正,谢谢!