一.引言
微机原理和应用技术是我们电子类专业重要的基础专业课之一,要求有较强的自学能力和分析问题解决问题的能力以及实际动手能力。其作用是为了培养学生善于用计算机作为工具。实践性环节的主要内容为微机常用接口芯片应用的综合性设计,通过设计掌握汇编语言的编程、调试,常用接口芯片的使用方法,初步了解微机应用系统的开发过程及设计原则。
与其他课程不同的是,该课程设计对硬件有很高的依赖性。因此,课程设计的灵活性受到一定的,必须有相应的实验平台支持。
1.1课程设计的必要性
长期以来,注重书本知识,轻视实际动手能力是我们学习中普遍存在的现象。进行课程设计的目的就是要改变这种状况,使我们既具有完备的理论知识,也能够解决在实际学习、生活工作中遇到的问题。我们应该能够把学到的理论知识用到实际中去,将知识转变为实际的生产力,同时通过这些理论知识和实际的应用推动理论和实践的发展。
课程设计能够把课本中分布学习的知识,在设计中综合加以应用,进而得到巩固、加深和发展。同时,我们通过学习查找、运用设计资料,完成工程设计所必备的基本训练。
通过课程设计,能够对所学的知识有更进一步的理解,并能掌握学习理论时没有注意的细节。在实际工作中,只要有一个环节没有做好,整个体系都不能正常运行。调试程序、排除故障有助于提高分析问题、解决问题的能力。课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。
1.2课程设计的目标
一般来讲,课程设计比教学实验复杂一些,涉及的深度更广并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终帮助我们系统掌握该门课程的主要内容,更好的完成学习任务。
二.实验设计
2.1实验内容:
内容:从计算机键盘任意输入一个位十进制数据,要求使用汇编语言编写程序实现
常熟理工学院课程设计报告计算该数据的阶乘。要求屏幕有提示信息和相应结果。
2.2实验流程图:
开始提示信息键盘输入放在ALYES
AL=0或1NO
计算阶乘(递增法)结果存放在DX与AX显示0或1的阶乘结果转化成十六进制结果输出显示结束2.3实验分析
由于本实验计算的十以内的阶乘,所以求阶乘不是一个难点,难点在于如何将
结果输出显示在屏幕上。求阶乘可以采用递增法,从2开始依次乘到N,如N等于AL中的数值则跳出循环。结果显示则需要将所求值转换成相应的ASCII值,这是一个难点。
第(1)页共8页常熟理工学院课程设计报告比如,al中的8位,先给dl寄存器,然后将al右移四位再或上30h则得到相应高四位的ASCII值。接着再把dl中的数值给al,与上0fh后在或上30h,则得到低四位的ASCII值。
2.4功能调用
2.4.1DOS的1号功能调用—输入并显示字符
调用格式:01H,无入口参数
movah,01hint21h
功能:等待键入,检查是否是ctr-break,是退出,不是将键入的字送AL寄存器并显示
2.4.2DOS的9号功能调用—字符串显示
调用格式:movdx,offsetstring
movah,09hint21h
功能:在屏幕上输出内存中以‘$’符结束的字符串(以ASCII码表示的)。入口:ds:dx指向字符喘首地址。出口:无
;ds:dx指向以$为结束的字符串首址
三.实验源代码
----------------------------------数据段-----------------------------------datasegmentbufmess1mess2nineonedataends
----------------------------------代码段-----------------------------------codesegment
第(2)页共8页db3dup(?)
db'inputthenumberaccordingtohexnum!',0dh,0ah,'n=$'db'theresultis$'db'580h$'db'00001h$'
常熟理工学院课程设计报告assumeds:data,cs:codestart:movax,data
movds,axleasi,bufmovah,09hleadx,mess1int21hmovah,01hint21hpushaxmovdl,0dhmovah,02hint21hmovdl,0ahmovah,02hint21hmovah,09hleadx,mess2int21hpopaxsubal,30hpushaxcmpal,0jz
done2
cmpal,1jz
done2
cmpal,9jz
ff
;-----------------buf的偏移地址给si---------------
;-------------------显示提示信息--------------------;-----------------键盘输入数字并显示----------------;-------------------回车与换行----------------------;-------------------显示提示信息-------------------、;---------------------数值比较----------------------第(3)页共8页常熟理工学院课程设计报告jmpdo
ff:
leadx,ninemovah,09hint21hjmpdone3
done2:
leadx,onemovah,09hint21hjmpdone3
do:
popaxmovch,alxorax,axxordx,dxmoval,1movbl,1movcl,9
done:
mulbxincbxcmpbl,chjadone1loop
done
done1:
movbh,ahmovcl,4shrah,clor
ah,30h
mov[si],ahincsi
;--------------直接显示9的阶乘的十六进制-----------
;-------------显示0或1的阶乘的十六进制数-----------;-----------------循环计算某数的阶乘----------------;-------------显示千位百位的十六进制数--------------第(4)页共8页常熟理工学院课程设计报告movah,bhandah,0fhcmpah,09hjado1or
ah,30h
jmpdo3
do1:
subah,09hor
ah,40h
do3:
mov[si],ahincsimovbl,almovcl,4shral,clcmpal,09hjado4or
al,30h
jmpdo5
do4:
subal,09hor
al,40h
do5:
mov[si],alincsimoval,blandal,0fhor
al,30h
mov[si],alincsimoval,'h'mov[si],al
第(5)页共8页;---------------显示十位个位的十六进制数------------
常熟理工学院课程设计报告incsimoval,'$'mov[si],alleadx,bufmovah,09hint21hjmpdone3
done3:movah,4ch
int21h
codeends
endstart
;----------------------结束-------------------------;------------------给出结尾字符---------------------
四.实验心得
微机原理的课程设计已经结束了,我们四人共同设计的阶乘计算程序也已经非
常成功的编出来了。这期间可以说是历经艰辛啊,我们反反复复对源程序进行了数次的修改,遇到到了若干问题,在老师的指导下,在组员们的共同探讨下,我们一一攻克了这些问题。这个实验的总体思路其实我们很早就想出来了,大体程序也出来的比较早,但就是一直运行不起来。很重要的一点就是我们忽略了一些细节,正所谓千里之堤,溃于蚁穴。例如,压栈与出栈的使用,我们在程序里要反复用到某一数据,但我们就是没有对它进行压栈处理,这导致我们犯了很大的错误。还有就是对于十六进制中的字母,它们的ASCII码不是简单的或上30h这么简单,经我们反复查阅资料再加上仔细研究,发现必须先减去9,再或上40h才能得到它的ASCII码。
通过这次实训,使我们对课本内容有了很大的加深与理解,原本我们对书上的
某些内容还是一知半解,但是实验中我们必须用到这些内容,这就迫使我们对那些不是很理解的东西进行探讨钻研,直至最终成功的运用到程序上。组员们一致认为通过实验,自己真的理解了许多,好象一下子豁然开朗了。我想我们这次的课程设计还是很成功的,纵使程序中还有很多不足,毕竟实验的目的已经达到。组员们精诚团结,分工合作,共同完成了这项程序。这不正是社会上所需的团队精神吗!
在此我们要感谢老师实验中多次的帮助,没有老师的指导我们的实验不会这么
顺利完成。
第(6)页共8页常熟理工学院课程设计报告五.组员任务分配
张彬李
健
王玉娥黄小妹
雷丽文主编宋
杰主编戴梅萼主编
华大学出版社
主程序的设计与调试
协助设计并负责查找与修改问题查找资料,收集程序中的问题资料搜索,课程设计报告的书写
六.参考书目
实验题与综合训练题集》
第(7)页共8页清
《微机原理与接口技术》电子工业出版社《微机原理与接口技术课程设计》机械工业出版社《微型计算机技术及应用—习题,