汇编语言程序设计范文
时间:2023-03-16 10:26:37
导语:如何才能写好一篇汇编语言程序设计,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
随着我国国际化的发展进程越来越快,我国对高等院校教育水平的重视度也越来越高。为了加快接轨国际高等教育的进程,在近几年中,我国对教育事业的投入力度不断加强,提高了对学生实际动手能力以及创新能力的培养力度。《汇编语言程序设计》课程教学是高校计算机、通信、电子以及自动化等相关专业课程中的基础课程,对学生在学习过程中的创新能力以及实践能力的提高有一定的促进作用。另外,在对教师对问题进行研究的过程中,对提高其相应的科研水平以及意识也有一定的积极影响。
一、《汇编语言程序设计》课程教学的现状以及存在的问题
1.相应的教材内容单一陈旧,无法激发学生的学习兴趣
《汇编语言程序设计》课程在我国所有高等院校相关计算机专业的课程中都占有重要地位,然而随着时代的飞速发展,计算机的相关配置也得到了相应的发展。在《汇编语言程序设计》教学中,其硬件教学中有些相关教材内容与计算机的发展现状不相符,存在一定程度的滞后性。在某些新开发的汇编得到广泛使用的时候,大多数学校的相关专业的汇编语言教材依旧还停留在以前的版本中,跟不上实际的发展进程。
2.没有明确的教学目的,对课程重要性认识不足
《汇编语言程序设计》课程教学是高校计算机、通信、电子以及自动化等相关专业课程中的基础课程,对学生在学习过程中的创新能力以及实践能力的提高有一定的促进作用。在对《汇编语言程序设计》课程的学习过程中,大多时候得不到学生以及教师重视,对其学习的重要性认识不足。而且,大多数老师在对这门课程进行教学的过程中,受到相应教学的课时以及大纲限制,在课堂教学过程中过于偏重对具体指令的相关应用以及功能的讲解,从而缺少了对各个课程之间的特点串联。这样的问题导致教师在教学过程中,对学生的学习兴趣不能充分的调动,从而导致学生对正确的学习方法不能很好的掌握。
3.教学方法偏差,教学手段存在缺陷
在对《汇编语言程序设计》课程进行教学的过程中,其在相应的教学方法上存在一定程度的偏差,从而导致一些编程中非法指令经常性出现。而且,教师在对这门课程进行教学的过程中,教学手段太过单一,在教学过程中主要就通过多媒体对课堂内容进行讲解。在教学过程中对多媒体的运用虽然存在直观生动以及信息量大等相关优势,但其也在一定程度上使学生产生了学习惰性。
二、对《汇编语言程序设计》课程教学中相应的问题进行改革
1.加强对课程重要性的认识
在对《汇编语言程序设计》课程进行教学之前,对其相应的重要性进行讲解,从而使学生对汇编语言的具体特点进行充分掌握,对汇编语言相较于高级语言的具体优势进行具体明确,使学生对其在应用领域中必要性有充分的了解。在对《汇编语言程序设计》课程进行学习的过程中,要注意对其实用性的具体教学,使学生能够做到对具体知识的学以致用,注重对教学内容相关知识点的训练和拓展。另外,教师在教学过程中,还要注重对学生知识面的拓宽,从而使学生在对汇编语言的学习兴趣得到相应的提高。
2.采用多样化教学,提高学生学习兴趣
在对《汇编语言程序设计》课程进行学习的过程中,想要对相应的指令进行掌握,就要对其相关的寻址方式进行具体的理解和掌握。在对汇编语言进行教学的过程中,由于其相较高级语言而言,没有足够的易读性,不容易学生的理解,所以,在教学的时候要掌握多样化的教学方法以及教学手段,从而使学生在对其进行学习的过程中的学习兴趣得到最大的提高,培养学生学习的自主性,使其对汇编语言的相关知识的理解和记忆更容易清晰地掌握。
3.增加实践环节,提高学生具体的实践能力
在对《汇编语言程序设计》课程进行学习的过程中,对学生具体动手实践课程进行加强,使学生在具体实践的过程中对教材上的知识点进行具体的理解和掌握。在实际动手过程中学习实践理论,使实践与理论达到很好的结合,从而提升学生的学习效果。其中,在实践的过程中,教师要注意对具体实验内容的控制,对实验的重点着重突出,避免实验的时间太过漫长。除此之外,还要注意积极引导学生多多参与相关实践项目,在一定程度上为他们提供一些参与实际研究项目的机会。
三、结束语
综上所述,随着时代的飞速发展,我国对高等院校教育水平的重视度也越来越高,计算机的相关配置也得到了相应的发展。《汇编语言程序设计》课程作为计算机、通信、电子以及自动化等相关专业课程中的基础课程,其硬件教学中有些相关教材内容与计算机的发展现状不相符,存在一定程度的滞后性。为了提高学生在学习过程中的创新性以及实际动手能力,对《汇编语言程序设计》教学课程的教学效果进行相应的提高和改善,从而使学生在学习的过程中对其课程中相应的知识内容进行更清晰精准的掌握。
参考文献:
[1]陈燕俐,许建.“汇编语言程序设计”课程教学改革探索 [J].中国电力教育,2012,10(04):193-194.
[2]李黎.《汇编语言程序设计》课程教学改革探究 [J].产业与科技论坛,2013,15(08):197-198.
[3]陶雪丽,郭凤英.汇编语言程序设计课程教学改革与实践 [J].中国教育技术装备,2012,25(01):192-193.
篇2
关键词:汇编语言;系统的知识结构;教学手段;实践教学
中图分类号:G642 文献标识码:B
“汇编语言程序设计”是计算机教学体系中一门必修的专业基础核心课程。汇编语言可以直接控制计算机硬件,常用于设备驱动程序、实时控制程序等硬件设计开发等方面。在系统软件的底层、大型软件的性能优化、信息安全与计算机病毒的逆向工程等方面的应用上,汇编语言也具有其他高级语言所无法企及的优势。该课程不仅是“计算机组成原理”、“操作系统”、“微机原理与接口”等核心课程的必要先修课,而且对于训练学生掌握程序设计技巧、熟悉上机操作和程序调试技术有着重要作用。从教学的角度出发,我们认为只有激发学生的学习兴趣,教师与学生互动,并采用一些有效的教学手段,才能够收到事半功倍的效果。
1了解汇编语言的重要性
汇编语言具有与高级语言不同的特点,正是这些特点使得汇编语言具有高级语言不可替代的作用,使得汇编语言在计算机领域非常重要。在教学过程中,首先必须向学生详细阐述汇编语言在计算机学科知识体系中的重要作用,充分调动学生的学习热情和求知欲望。
汇编语言与处理器密切相关,每种处理器都有自己的指令系统,对应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差;汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试起来也比较困难。但是汇编语言本质上就是机器语言,是计算机提供给用户的最快最有效的语言,因而容易产生运行速度快、指令序列短小的高效率目标程序,并且汇编语言是能够利用计算机的所有硬件特性并能够直接控制硬件的唯一语言,它可以直接、有效地控制计算机硬件。在很多场景下,我们必须使用汇编语言,例如,机器自检、系统初始化、实际的输入输出设备的操作等;I/O接口电路的初始化程序以及外部设备的低层驱动程序等;计算机系统频繁调用的子程序、动态连接库等。汇编语言在现代计算机应用中仍然是一门不可替代的、非常重要的程序设计语言。
因此,在“汇编语言程序设计”教学中,我们首先让学生充分认识到汇编语言的特点和重要性,学生通过用汇编语言编制程序,可以更清楚地了解计算机是如何完成各种复杂的工作。学生能从根本上认识、理解计算机的工作过程,从而充分地利用机器硬件的全部功能,发挥机器的长处。
2形成系统的知识结构
汇编语言离不开具体的CPU结构以及必要的硬件支持,由于我们的“汇编语言程序设计”课程仍然基于英特尔公司的8086/8088CPU,因此将英特尔公司的系列CPU发展历史作为首先介绍的内容。从英特尔公司的4位机4004,8位机8008、8080与8085,到16位机8086/8088微处理器,详细介绍了它们的内外总线结构。对于16位的80286微处理器,我们重点介绍了80286的实模式与保护模式两种操作模式。对于32位的80386微处理器以及随后英特尔公司推出的80486,Pentium,MMX Pentium,Pentium Pro,Pentium II,Pentium III与Pentium 4等微处理器,介绍了这些微处理器在硬件结构上的突破,以及什么原因让这些CPU新增了若干专用指令。通过对英特尔系列处理器的介绍,学生对以英特尔系列处理器发展为代表的计算机硬件发展脉络有总体的了解,初步建立起计算机技术继承性、发展性的认识,对其中涉及到的相关概念和术语有了初步的了解。
汇编语言的一个重要特点是它起到了软件技术与硬件技术的接口作用,这决定了汇编语言程序设计必须结合其他课程横向学习。从剖析可执行程序的结构出发,以可执行程序的装入为例,分析了DOS操作系统下的PSP段前缀,并简单介绍了Windows操作系统下的PE文件,并在此基础上讲解了计算机从启动到操作系统装入的流程;在讲解中断的时候,给学生介绍了8259A的结构与用法。通过这种方式,让学生明白“汇编语言程序设计”与“操作系统”、“微型计算机接口技术”、“计算机组成原理”等课程的联系,开阔了学生的思维方式与学习方法。
缓冲区溢出漏洞是目前最主要的安全漏洞之一,而利用该漏洞的缓冲区溢出攻击是目前最主要、最具威胁性的网络攻击之一。我们帮助学生利用DEBUG工具,详细分析了这些具有威胁性的程序,让学生从多个角度研究缓冲区溢出的一般规律,引导学生深入分析植入代码的结构组成,总结植入代码的结构特征。并鼓励学生根据威胁代码的特点,尝试提出相对应的防御措施。为“网络安全”等课程打下了基础,让学生融会贯通,学以致用。
通过我们这种注重历史发展与联系其他课程的教学思想,逐步帮助学生形成了系统的知识结构。这有助于学生建立多门课程之间的联系,开阔学生的专业视野,从而调动学生的学习热情,增强学习的积极性与主动性。
3利用多种教学手段进行教学
汇编语言的内容多而杂,不便于记忆,要教给学生正确的学习方法,指导学生如何去学习。让启发式、开放型的教学贯穿教学全过程,充分调动学生学习的积极性和主动性,以利于学生对教学内容的理解和掌握。在教学内容的讲解过程中,针对不同的知识点,可采用或结合不同的教学方法,加深学生的理解,增强记忆。
在介绍英特尔系列的CPU历史时,我们准备了大量直观的照片,展示了从4004、8008、8080、8085到16位微处理器8086/8088等微处理器,对于32位机展示了从80386到80486、Pentium、MMX Pentium、Pentium Pro、Pentium II、Pentium III与Pentium 4等微处理器。为了让学生对当前的计算机有直观的认识,我们用照片展示了当前计算机的主板结构,对照图片逐一介绍了PCI接口、显卡、网卡等各种插卡。学生们对直观的学习非常有兴趣,课堂气氛活跃。
在讲解指令系统时,我们使用动画讲解了指令在CPU中的执行过程。在讲解指令前,我们重点介绍了8086 内部结构,仔细讲解了各个部件的功能,并突出介绍了指令流水线方式。对于典型的指令,我们在结构图上演示了指令执行过程,包括指令队列的变化、指令操作数的来源、物理地址的形成、EU与BIU是如何配合工作的。通过直观的动画,学生基本理解了CPU中指令的执行过程。
在讲解MOV指令时,我们采用图解法讲解了MOV指令操作数的来源,这非常利于学生理解与记忆MOV指令的操作数的来源。图1中矩形框中表示MOV指令的操作数,箭头的起始点表示MOV指令的源操作数,箭头的终止点表示它的目的操作数,两者间如有箭头连接,表示它们是MOV指令源操作数与目的操作数的允许组合方式。通过图解法,学生普遍感到MOV指令的操作数来源好懂易记,并逐步推广到其他的指令学习中。
在讲解存储器操作数的寻址方式时,我们采用逐步分解的方式介绍存储器操作数的四种寻址,并强调了基址、变址、位移量这三个分量的不同组合就形成了不同的寻址方式。8086/8088 CPU各指令中操作数的来源有四种,立即数操作数、寄存器操作数、输入/输出端口操作数、存储器操作数。而存储器操作数又有直接寻址、寄存器间接寻址、基址(变址)寻址、基址变址四种寻址方式,存储器操作数的这些寻址方式易导致学生理解与记忆出错,造成不佳的学习效果。在讲述基址由BX或BP提供,变址SI或DI提供,位移量是一个在汇编期间的常数后,我们在图2中介绍了基址、变址、位移量这三个分量的不同组合构成的不同的寻址方式。通过这种逐步分解的方式,学生很容易就掌握了存储器操作数的四种寻址方式。
从我们采取的多种教学手段收到的良好效果可见,在教学过程中,灵活应用各种教学方法,能够减少学习汇编语言的难度,便于学生学习和掌握相关内容,提高教与学的效率。
4重视实践教学
上机实验是“汇编语言程序设计”的一个重要教学环节。在“汇编语言程序设计”实验中,针对学生对DOS操作环境不熟悉,我们在课堂上重点讲授了相关的DOS命令,使得学生在上机时能够熟练的在DOS环境下进行操作;针对汇编语言上机调试复杂的问题,我们通过耐心讲解,让学生充分认识到,这是一个从源程序到可执行程序的必经过程,通过学生的反复实践,一定能够掌握汇编语言的开发过程,加深对汇编语言的认识,提高程序设计的能力;针对调试工具DEBUG,重点讲解了常用的调试命令,对一些较复杂并且较为不常用的命令,暂时不引入,重点让学生实践,学生通过使用DEBUG工具,深刻体会到了CPU的工作过程,这对于提高学生的学习兴趣,巩固课堂教学内容起到了关键作用。
在合理安排实验教学内容的基础上,我们还将课外科技活动融入到实践教学活动中,其中最为重要的是组织学生参加国家级以及校级的各种电子设计竞赛,在实践中锻炼学生使用汇编语言设计程序的能力。
我们积极指导学生使用汇编语言参加了全国性的关于嵌入式系统的“电子设计竞赛”,这些竞赛项目不但需要参赛者具有深厚的汇编语言程序编程水平,还要求参赛者拥有过硬的硬件基础知识,包括电路分析、模拟电路和数字电路等各方面的专业知识储备。通过竞赛,学生加深了对整个计算机学科知识体系的掌握,并对汇编语言与其它学科的关系有了深入的认识。
我们还组织了较大规模的学生队伍参加电子科技大学“亿利达杯”、“NS杯”等大学生电子设计竞赛,这些竞赛是半开放式的竞赛,在指导教师的指导下,参赛队员利用提供的器件设计并实现了“数字式Q表设计”、“多点温度检测系统设计”、“数字调谐滤波器设计”、“工频标准信号源设计”、“电机转速控制器设计”、“太阳能自动跟踪器设计”、“数字温度表”、“数控电源”、“遥控小车”、“防啸叫话筒”、“智能LED照明”等多个项目。在这个实践过程中,锻炼了学生使用汇编语言与硬件结合的能力,加深理解了汇编语言在控制系统中的作用,培养了学生的创新能力。
5总结
“汇编语言程序设计”是我国高等学校计算机各专业必修的一门主干课程,对于训练学生掌握程序设计方法与技术,从事自主版权计算机芯片设计和系统软件的开发,以及在信息安全、过程控制等多方面的应用,均具有十分重要的作用。由于“汇编语言程序设计”课程自身的特点,学生在学习的过程中总会遇到这样或那样的问题。我们在教学过程中积极主动总结,认真分析学生遇到问题的根本原因,及时帮助学生对问题逐一加以解决。
从我们长期从事“汇编语言程序设计”的教学经验来看,教师要善于采用多种方法及手段,发掘学生渴望新知识、接受能力强的潜能,让学生从了解汇编语言的重要性入手,培养学生的兴趣,进而帮助学生形成系统的知识结构,并在教学中灵活运用多种教学手段,最终通过实践教学,使学生达到熟练掌握“汇编语言程序设计”的目的。
参考文献:
[1] 王正智. 8086/8088宏汇编语言程序设计教程[M]. 北京:电子工业出版社,2002.
[2] 沈美明. IBM-PC汇编语言程序设计[M]. 北京:清华大学出版社,2001.
[3] 殷肖川. 汇编语言程序设计[M]. 北京:清华大学出版社,2005.
[4] Peter Abel. IBM PC汇编语言程序设计(影印)[M]. 北京:清华大学出版社,2006.
[5] Mazidi, Muhammad Ali. 80x86 IBM PC及兼容计算机(卷1和2),汇编语言、设计与接口技术(影印)[M]. 北京:清华大学出版社,2004.
[6] 张英彦. 更新知识观念改革高校教学[J]. 中国高教研究,2006(2):70-71.
篇3
关键词:汇编语言程序设计;实验;教学改革
中图分类号:G64 文献标识码:A
文章编号:1672-5913(2007)01-0034-04
在传统教学模式中,理论教学 (或者说是课堂教学) 与实验教学是区别对待的,后者通常用来“辅助”前者 (例如实验教材历来被认为是辅助教材) ,学生通过实验教学环节来“验证”理论教学的内容。但是,在大众化高等教育的背景下,课堂教学的效果普遍出现滑坡,导致淡化了“验证性”实验的基础,因而严重地影响了课程的教学质量。
近年来,我们在多门计算机课程的教学实践中,摸索出一套“把实验实践环节与理论教学相融合,抓实验实践教学促进学科理论知识学习”的教学方法,有效地提高了学生的学习兴趣,以此提高了大众化高等教育背景下计算机专业课程的教学效果和教学质量。本文中,我们结合“汇编语言程序设计”课程的实验创新,来探讨新的教育形势下计算机课程教学方法的改革。
1汇编语言及其教学的现状
计算机中真正可以处理的只是由“0”和“1”组成的二进制代码,这种指令代码易出错且不易修改。于是,人们发明了“指令的助记符”,用几个字母 (往往就是其含义的英文单词或缩写) 来代替某条指令,如加法用ADD表示,减法用SUB表示等,这种符号系统最终扩大形成了汇编语言。汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。使用汇编语言编程,优点是运行效率高,可直接对硬件内部进行控制,缺点是使用者需要对硬件有更深入的了解,编程效率不高,并且汇编语言与机器的体系结构有一定的依赖关系,每种计算机都有自己的汇编语言,使用极不方便。
汇编语言易学却很难真正掌握,编写快速、高效,并且能够让计算机处理器“舒服地执行”的汇编语言程序是一件很困难的事情。由于教师开展教学困难,学生学习和掌握困难,教学效果很差,以至于不少学校甚至取消了这门课程。
尽管与发展初期相比,计算机开发和应用技术已经有了根本性的变化,我们有了各种高级语言、我们有了网络应用开发的许多编程工具,很多程序甚至可以自动生成,但机器语言、汇编语言和高级语言的程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。对于计算机及其相关专业的学生以及喜欢计算机的一般学生和读者来说,汇编语言程序设计肯定是需要掌握的重要专业基础知识之一。不能了解和熟悉汇编语言知识不仅将导致学生知识结构的缺乏,也可能导致学生认知水平的降低、开发手段的贫乏。在一些应用中,汇编语言甚至是其开发工具的唯一选择。
汇编语言是机器语言之外最接近计算机硬件的编程语言。由于它如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。用汇编语言编写的程序的速度通常要比高级语言(例如C/C++),快很多倍,甚至成百上千倍。选择汇编,意味着选择性能而不是可移植或便于调试。在一些实际的应用系统中,我们往往会用汇编彻底重写某些经常调用的部分以期获得更高的性能。应用汇编也许不能提高程序的稳定性,但至少它也不会降低稳定性;与此同时,它可以大大地提高程序的运行速度。至少,汇编语言的知识可以告诉你一些有用的东西,比如,你有多少个寄存器可以使用。有时,手工的优化比编译器的优化更为有效,而且,你可以完全控制程序的实际行为。
“汇编语言程序设计”课程的任务是为“计算机原理”、“计算机接口技术”、“操作系统原理”等后继课程提供必要的基础知识,它对训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用,为从事计算机的应用开发提供了强有力的编程工具。
通过学习汇编语言,学生可以了解到如何有效地设计数据结构,让计算机处理得更快,并使用更少的存储空间;同时,学习汇编语言可以让学生熟悉计算机内部运行机制,并有效地提高调试能力。经验表明,调试一个非结构化程序的困难程度,要比调试一个结构化程序的难度高很多,因为“结构化”是以牺牲运行效率来提高可读性与可调试性的,这对于完成一般软件工程的编码阶段是非常必要的。然而,在一些地方,比如,硬件驱动程序、操作系统底层,或者程序中经常需要执行的代码,结构化程序设计的这些优点有时就会被它的低效率所抹煞。另外,如果你想真正地控制自己的程序,只知道源代码级的调试是远远不够的。
通常情况下,“汇编语言程序设计”课程的教师必须决定其课程是集中于问题和理论,还是为学生提供一个能够对汇编语言程序设计进行实验的环境。“汇编语言程序设计”课程本身具有的理论抽象性和鲜明的应用性,决定了我们必须充分重视这门课程的实践环节。
2教学内容的分层次设计
教育部计算机科学与技术专业教学指导分委员会在其的“中国计算机本科专业发展战略研究报告”中指出:大多数院校都有比较完善的教学大纲、教学计划和进度表、教学档案等,实践着一套有效的管理规范。但同时教学内容的研究则需要加强。报告进一步指出:
1) 有些学校计算机专业的教学内容设计存在明显的盲目性,还有些学校在培养人才定位上有明显偏差。尽管CC1991开创了一种对计算机科学教育的创造性的、理性的思考,但它并不应该成为我国所有大学计算机专业教学实践所共同追求的目标。
2) 作为一种比较普遍的规律或者现象,学生就业通常会有较强的地域性:一个企业通常在周边地区招收较多员工,一个学校的毕业生大都就业在学校周边地区的单位。因此,学校周边地区社会发展的情况对计算机专业的教学内容的设计应该是很有参考意义的。
……
由于大多数大专院校一般都设置有计算机科学技术及其相关专业,我们至少可以认为:根据所在院校的办学类型不同、培养目标不同、所在地及其周边地区社会需求的不同,这些计算机专业的教学内容应该有所不同,这些计算机专业对于“汇编语言程序设计”这门课程的教学内容也应该是有所不同的。对于那些非研究型院校的相关专业,对“汇编语言程序设计”的教学可以集中在适度的理论知识和充分的操作实践上,通过实验与实践,了解汇编语言程序设计的基本概念和知识,激发对相关理论知识的学习兴趣,理解和掌握汇编语言程序设计的基本方法。
汇编语言程序设计的应用面广,涉及技术领域宽泛,要让学生真正理解汇编语言程序设计的基础理论知识,具备将汇编语言技术应用于社会实践的能力,积极加强汇编语言程序设计课程的实验环节是至关重要的。
篇4
关键词:汇编语言;C语言;混合编程
汇编语言的优势就是速度快,占用存储空间不大,而且可以随时控制硬件,这些优点是其它的程序语言无法取代的。汇编语言也有不足之处,就是在高级程序的编写与调试时存在着较大的困难,特别是在处理一些数据或者一些混合运算时显得更加困难。
C语言,它的优势就是在于功能全面,表达形式多样且灵活,开发使用效率很高,具有其它高级语言无法具有的优势。通常在软件开发过程中,大部分程序采用高级语言编写,以提高程序的开发效率;但在要求执行速度快、占用空间少或要求直接控制硬件的场合,则利用汇编语言编写,以提高程序的运行效率。
1.汇编语言和C语言混合编程的方法
C语言和汇编语言混合编程的具体方法有以下几种。
2.1 参数传递
汇编语言程序和C语言程序在调用时会涉及到参数传递,一般采用堆栈进行传递。在汇编语言中将BP作为基址寄存器,调用程序先将来自于C语言程序中的参数依次压入堆栈中,然后当需要使用这些参数时,再用BP加上不同的偏移量依次对堆栈中的数据进行存取操作。
2.2 调用关系的确定
对于将要涉及到调用的过程或函数需要事先说明和建立调用与被调用关系。被调用的过程或函数应预先说明为外部类型,以便被外部模块引用,而调用程序也需要在程序中说明将要引用的外部模块的名称。在说明调用关系时还应根据不同的存储模式确定相应的汇编语言格式。C程序小模式对应汇编程序的近类型过程,而C程序大模式则对应汇 编程序的远类型过程。
总而言之,汇编语言和C语言的混合编程方法可以使汇编语言与C语言之间取长补短,充分发挥各自优势,相互交叉调用,进行参数传递,共享数据信息和数据结构,使由此开发的软件更实用、更安全可靠,使开发和编程工作达到事半功倍的效果。
参考文献:
[1] 罗南超,向昌成,李唐辉. 汇编语言实现多种进制的通用输入输出[J]电脑知识与技术, 2008,(36) .
[2] 崔卫东. VC++与汇编语言混合编程的研究与实现[J]福建电脑, 2007,(05) .
[3] 宋金华. 汇编语言和C语言在图形处理中的综合应用[J]湖北广播电视大学学报, 2010,(12) .
篇5
一、多层次多目标的教学要求
过去,我国的普通高等教育基本上分为本科生教育与专科生教育两个层次,对这两个层次教育部有统一的标准和要求,各大学在贯彻实施过程中相对比较稳定。改革开放以来,为尽快适应新经济快速增长对各类高等专门技术人才的需求,从20世纪80年代初期开始教育部先后升格了一批院校并批准新成立了一批大专院校,特别是20世纪90年代各大学普遍扩招后,我国的大专院校事实上已经打破了两个相对稳定层次的格局而形成多层次教育的局面,本科院校中新学院新专业建设及专科层次的职业技术教育,专科院校中本科层次的教育和职业技术教育,中等专业技术学校中的高等职业技术教育等等,同一专业的教学起点教学大纲教学计划相去甚远,教学目标和要求事实上也很不一致,课程合并,教材改革,虽然确实涌现出许多优秀品牌“精品课程”和“规划教材”,但众多的“精品课程”和“规划教材”也是千差万别,更加加剧了培养目标的多样化。
形成这样一种多层次多目标的教学形势对不对,好不好呢?不少人对此颇具微词。笔者认为这种教学势态的形成其实是很正常的,教育永远是服务于经济建设需要的,这种教学势态的形成正好说明了这一点。经济建设需要多层次多能力多类型的人才,教学部门就要培养出各种层次各种类型各种能力的人才,市场细分之后,人才也需要细分,专业也需要细分,培养的“宽基础”“万金油”“什么都能干什么都干不好”的人才渐失市场之后,一定要有新的“专门化”“专业化”“与企业零接轨”的人才培养方式。这就是目前多层次多目标教育的现实情况,任何教育观念和教育方法都不能脱离开这一现实。
二、“学用互动,实践为先”的教育观念和教学方法
当我国的普通高等教育从传统单一的教学模式走向多层次多目标培养方式后,教学对象中出现了一大批以职业技能训练为主直接面向企业一线的高职学生,这些学生的共同特点是基础理论知识不扎实,在中学没有养成良好的学习习惯,课堂上自控能力较差,注意力分散,但他们普遍身体素质较好,思维活跃,善于交流,上大学后有一种时间紧迫感,希望将过去失去的补回来,学习热情与积极性非常高。对于这部分学生,若仍然按照传统的教学模式先理论后实验按章就节地进行教学,笔者发现很难保证大多数同学正常完成教学计划,而且很容易造成班里同学两极分化。少数学习较好的同学总感到课程内容不够学,而大多数同学则感到较为吃力。首先对理论教学感到仿佛又回到从前一样,其次对单调的纯验证性质的实验无论做出或做不出都不是积极主动地想方设法完成,而是像抄作业一样敷衍了事,久而久之失去学习兴趣,导致人生坐标的盲然,不能有效地利用大学这一段人生经历中最为宝贵的时光。针对这一大类学生的实际情况,什么样的教学方法才能将他们的学习热情调动起来?
笔者尝试过许多方法,如采用案例教学法由浅入深地讲解难点重点课,调整授课课序、删繁就简讲解理论核心课,整合零散实验为项目实验提高实验兴趣,增加专用实验设备提高实验效率,虽然所有这些方法的应用对课程的改进都有所帮助,但效果平平,与改进付出的代价相比,回报实在是太有限了!难道计算机课程的教学只能如此吗?有没有更好的解决这一问题的方法?怎样才能改变被动教学为主动教学?回到经典的教学理论中寻求答案:学习过程中,学生是主体,教师是主导,只有把学生的主动性调动起来,教师才能起到导的作用,因此必须想尽一切办法调动学生的积极性。笔者分析学生不主动的原因主要是直接看不到课程内容的用途,实验课程中的成就感不强。如何增强这两方面的意识呢?笔者想到了产品。并在普遍认为“学生难学,教师难教”的“汇编语言程序设计”课程中进行试验,结果获得了意想不到的效果,真有“柳岸花明又一村”的感觉。笔者将这种方法总结为“学用互动,实践为先”的教育观念和“实践理论实验实践理论实验……”的教学模式。所谓学用互动,就是边学边用,学点用点;所谓实践为先,就是先进行操作实践,籍以建立问题,再通过理论课与实验课理解和解决问题,在整个教学环节中,增加了实践课的教学。那么什么是实践课呢?实践课与实验课有何区别?实践课能否代替实验课?增加实践课后给教学带来了哪些新问题?如何处理这些新问题?下面是笔者的一些体会和认识。
在“实践理论实验实践理论实验……”的教学模式中,实践课开在理论课与实验课之前,特别是第一节课,学生在对课程一无所知的情况下实践什么。这实际上就是如何理解实践课的问题。在开实践课之前,教师必须精心策划实践课的内容,实践就是实例操作,就是实际应用,这种操作首先是与待讲课程内容紧密相关,其次是操作应该简单易行,再就是操作确能激发学生兴趣。对于计算机类课程,任何半成品都不能完成正常的操作功能,而太复杂的成品对教学也不合适,选择合适教学的产品是非常重要的。经过一个学期的学习,学生能够在不断的实践课程中反复操作、应用、模仿、制造、创新出一个力所能及的计算机产品,这就是实践课的主要内容和任务。
实践课与实验课的区别何在?众所周知,实验课是“验证”性质的,通过重复操作事先设计好的一个有序步骤,验证课堂所讲内容的正确性,非常致命的是这种验证往往是片断性质的,无论教师还是学生要将所有的片断有机组成一个整体的概念其实真不是件容易的事。另外,实验仅需要部分与课程本身相关的知识,而实践需要的是更加广泛的知识,实验的结果是单一的,单一的结果能提高学生的学习兴趣吗?实践的结果是多变的,夹杂着同学之间与教师之间相同的和不同的理解。实验课一般不含产品设计、产品制造的概念,因而仍然与实际应用脱离较远,实践课通过模仿与创新努力制造一个产品,直接应用于实际。
实践课能否代替实验课?不能。实验课紧密联系本课程本单元的教学内容,经过精心设计的实验课程,易于学生在短时间内对所学知识点进行验证,缺点是知识点孤立,不易与相关知识点发生联系,而孤立的知识点很难完善地与实际情况联系起来,造成理论脱离实际的尴尬教学局面,因而“教者难教,空洞无物”,“学者难学,不知用处”。用实践课的方法来弥补实验课的这一缺陷,使教者有实例,学者直接看到知识点的用途,就会营造出“教者并非是从书本到书本,而是直接从书本到实际”,“学者并非是简单的完成作业,而是要联系实际解决问题”的生动活泼的教学气氛。学者主动了,自然就会“教者易教,学者易学”了,而这正好解决了我们目前教学中存在的问题。
增加实践课后带来的问题:实践、讲授与实验课时比例如何分配?教学课时是否需要增加?与本课程相关的前驱课程和后继课程有何变化?实践课中辅助知识点怎么提供?课程整个进程中实例怎么安排?诸如此类的问题还有许多,但最关键的还是要具体课程具体对象具体分析。一般来说,基础课不需要安排实践课,专业基础课可少量安排一些实践课,专业课则应该有比较多的实践课。教学课时应该作调整,但总课时不会增加。前驱与后继课程基本上不需要变动,重复的实践课程要有深度变化。辅助知识点有些是已经学过的,有些是待学的,有些是在校期间不可能在课程中学到的,它们主要由辅导教师提供给学生,同时也鼓励学生自己通过资料解决。提供的实例不能偏离课程太远,不能太难太大,实例可以是一个,也可以是多个,可以是从头到尾完成一个完整的产品,也可以是做某个新产品的某一部分或一个环节。
三、在“汇编语言程序设计”课程中的运用
在各门计算机课程中,“汇编语言程序设计”是最令所有的教师和学生头疼的一门课程,为什么会这样?我们分析主要有以下几个原因。
1. 对“汇编语言程序设计”课程的难度认识不足
在学习“汇编语言程序设计”课程之前,学生往往会凭借学习“C/C++高级语言程序设计”课程的经验类比“汇编语言程序设计”,误以为重点在于掌握汇编指令功能与格式进而用它们组合出典型的程序结构,部分同学甚至会努力寻找和理解汇编“语句”,结果在课程一开始接触计算机原理的部分内容时总是经历一段由漫不经心到盲然无策的过程,之后刚进入状态又被接口驱动打得昏昏沉沉,整个的学习过程亦常痛苦。殊不知“汇编语言程序设计”虽然也是“程序设计”,但与“高级语言程序设计”是完全不同的“程序设计”,其不同之处在于“高级语言程序设计”是真正独立的语言,而“汇编语言程序设计”是非独立语言,必须结合具体机型才有意义。也就是说,学习“高级语言程序设计”不学习计算机硬件结构也可进行,而学习“汇编语言程序设计”必须首先了解计算机硬件结构,而且不是一般性了解,对这一点认识不足是直接导致“汇编语言程序设计”课程失败的主要原因。
2. 开课的课序有问题
通常认为学习“软件”类课程所需的基础知识来源较为广泛,而“硬件”类课程所需的基础知识则较专业,因此大多数院校都将“汇编语言程序设计”课程作为“计算机原理”课程的前导课程,但事实上业内人士都十分清楚这两门课程彼此相依的亲密关系,因此笔者在讲述“汇编语言程序设计”课程相关计算机原理部分的知识时从不以够用为度,而是尽力讲到位,只有这样,“汇编语言程序设计”课程才能顺利进行。
3. 教学方法需要改变
历来的“汇编语言程序设计”课程采用“理论实验理论实验……”的教学模式,学生被动地接受并片断性地运用所学知识解决实际问题,综合运用所掌握知识和技能分析解决问题的能力得不到锻炼,使课程陷入“就事论事”的尴尬局面,改变这种情况可采用各种办法,改变现在的教学方法也是非常值得探讨的办法之一。
4. 实验条件
历来的“汇编语言程序设计”课程均以80X86系列芯片作为核心硬件模型并以此模型进行各种实验操作,这种实验条件存在几个明显的不足:实验项目确定,学生可发挥性受到制约;需要专门的实验室环境,限定了学生的实验时间;所有实验项目与实际应用都偏离较远,不利于培养学生解决实际问题的能力。无疑这种实验条件是需要改变的,但如何改变呢?
5. 学无所用,学生学习积极性不高
由于“汇编语言程序设计”课程中没有颇具说服力的实例摆在学生面前,因此“汇编语言是计算机技术的重要知识体系”、“汇编语言是快速、高效的程序设计语言”、“汇编语言是在实际工作中应用极其广泛的语言”等等说教就成为不被学生认可的空话,从而一开始便抑制了学生学习“汇编语言程序设计”课程的积极性。
面对上述一些问题,笔者在“汇编语言程序设计”课程教学中运用了“实践理论实验实践理论实验……”的教学模式,采用凌阳十六位单片机SPCE061A作为硬件实验模型,精心组织了一学期的“汇编语言程序设计”实践课程,结合以往的教学惯例,比较有效地调动了学生学习“汇编”的兴趣。笔者在实践课中的具体做法是:
将一些有代表性的应用汇编语言的产品和往届生的作品通过参观、讲解、解剖、试玩等方法介绍给学生,如声控玩具汽车、机器人、报时钟、复读机、电梯模型等,然后给学生提出课程的任务和要求,如必须独立或合作完成一个作品,从开始计划到中间实施步骤到最后完成调试,之后学生的每一次实践课都按既定计划执行,实践课程中与汇编相关的问题由学生通过课堂教学和实验课解决,辅助知识由任课教师和辅导教师帮助解决。借助于实践课,解决了“汇编语言程序设计”课程中“软”“硬”结合、条件不充分、学无兴趣等诸多问题,学习实效大大提高。
篇6
关键词: C 语言;汇编语言;混合编程
中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)24-0231-02
0 引言
汇编语言是一种面向机器的语言,其优点是运行速度快,占用存储空间小,可直接对硬件进行控制。缺点是编写、调试困难、移植性差。C语言简洁、灵活、库函数丰富、调试方便、移植性好,目前已被广泛地应用于系统软件和应用软件的开发中,为了发挥各自优势,取长补短,采用混合编程。大部分程序,如界面、人机接口(外壳程序)、数据处理等用C语言编写,以提高程序的开发效率。而某些程序,如需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,或频繁使用的程序、或需要占用内存空间少的程序(内核程序),则用汇编编写,以提高程序的运行效率。
1 嵌入式汇编
嵌入式汇编也称行内汇编,源程序中直接插入汇编语句。汇编语句可直接访问C程序中定义的常量、变量、函数。不必考虑二者之间的接口,方便编程。
1.1 嵌入式汇编语句的格式
格式:asm操作码 操作数[;或换行]
其中:操作数可以是汇编语句中的立即数、寄存器、表达式等还可以是C中的常量、变量、标号等。分号;是汇编语句结束符,并非注解,要用注解,用C的注解。如下例
所示。
1.2 汇编语句访问C的数据
嵌入的汇编语句可以访问C语言程序中的任何标识符,包括变量、常量、标号、函数名、寄存器变量、函数参数等。如下例所示。
1.3 汇编语言与C语言接口规则
1.4 编译过程
命令行键入命令:TCC-B-Iinclude-Llib 文件名.c即可. TCC会自动调用TASM.EXE和TLINK.EXE,并且TLINK.EXE能正确的找到需要的.obj和.lib文件,要保证TC目录下存在TASM.EXE文件。如果单步编译,可能会碰到很多的问题,主要是TLINK.EXE不会自己去找.obj和.lib文件。该命令的功能是:.C编译TCC.ASM汇编TASM.OBJ连接TLINK.EXE。
2 Turbo C模块连接方式
C、汇编程序各自编程,各自编译,然后连接在一起。
2.1 汇编语言与C语言接口规则
①命名约定:汇编的名字前加一个下划线,C的名字前不加下划线(编译后内部自动加),以确保两个模块内部名字一致。
3 结语
混合编程,主要涉及接口,汇编调C的函数、全局变量。C调汇编的函数、变量。本文对此做了浅述。
参考文献:
[1]谭浩强.C语言程序设计[M].清华大学出版社,2004.
篇7
关键词:汇编语言;课程;教学;学时
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)22-5414-02
Focus on the Difficulty of the Assembly Language Teaching, and Improve the Teaching Effect
ZHANG You-wei, WANG Yong-hong, SI Bin-bin, MA Deng-wei
(Information Engineering University, Zhengzhou 450052, China)
Abstract: The assembly language is a very important major basic courses of computer science, but its closely combination with the hardware and the shortening of the teaching time, lead to some difficulties for teaching this course. This paper analyzes the reason for the difficulty of the course teaching, and also search for feasible ways to improve the teaching effectiveness.
Key words: assembly language; course; teaching effectiveness; teaching hours
“汇编语言”是计算机专业学员必修的一门专业基础课程,对培养学员程序设计能力,理解计算机工作原理,从事底层软件开发和软硬件结合的项目开发均具有非常重要的应用。但是,这门课程又是学员感到比较难学的一门课程,习惯了采用面向对象或结构化程序设计思想的高级语言程序设计方法,对汇编语言这种偏“机器化”的低级语言编程方法,学员们一时难以理解和接受,再加上有较多的语法规则和指令寻址方式需要记忆,语言编程环境又不熟练,使得学员在一开始学习时便陷入茫然状态。因此,就本门课程如何提高教学质量,增强教学效果,提高学员在一些底层软件和软硬结合方面的编程能力,是一个值得重视的问题。该文结合作者过去几年的教学实践,就目前计算机专业汇编语言教学学时压缩到了40学时,我们总结了一些可行的、比较好的方法。
1汇编语言教学难点分析
1.1指令系统复杂
汇编语言的指令是用一些具有相应含义的助记符来表达的,虽然有助于记忆,但是一般处理器的指令集少则几十条多则上百条,所有这些指令要在几节课内全部讲完,要求学员在这么短的时间内准确记忆这么多条指令几乎是不可能的,更不用说让其理解了。可如果指令掌握得不够好,学员对大部分指令都感到陌生,在进行程序设计时就会感到无从下手,甚至读程序时也会觉得“云里雾里”,不理解程序的含义。这就犹如写作文一样,基本的语法不会,造句不成型,岂能写出好的文章?
1.2教学时间缩短
计算机专业的课程更新速度快,随着新知识的不断涌入,不可避免要开设一些新的课程。例如:几年前我们计算机专业还没有开设Linux操作系统、嵌入式软件开发,网络新技术、Oralc数据库等课程,现在则新增加了这些课程,需要安排相当的教学学时。而对于一些象汇编语言这样的基础课程又不能丢掉,所以只能缩短课程教学学时。这使得教员只能讲授前面章节中的硬件基础和指令这些比较枯燥的内容,而许多比较有意义并且能让学员产生学习热情的内容被删除了,比如:图像颜色和动画程序设计的教学内容。同时随着实验学时的减少,造成学员往往只能做一些非常基础性的实验,而一些能让学员有“成就感”的实验,如定时发声、动画显示等实验已经没有时间安排了。这些均造成学员觉得这门课枯燥难学,没有耐性和兴趣学习,更不知道学了这门语言能干什么。
1.3学员基础薄弱
我们在教学过程中,发现许多学员尽管学过C或C++,但是缺乏调试程序的基本能力,当编译或运行过程中出现错误时大多数学员只会对照已有的源代码来查找错误或请教员一起帮忙调试,不知道如何通过单步跟踪和设置断点来调试查找错误。即使有些学员具备一些调试能力,他们的办法也只是在必要的地方加一些输出语句来观察变量的值,不知道如何在调试环境中查看变量和内存单元的值。因此,对于“更加复杂”(只是文本界面多些,用多了自然就熟悉了)的汇编调试环境,他们更加找不到解决问题的办法。再加上汇编语言的输入和输出需要用到中断,不像高级语言那么方便就能输出一个变量的值,学员对于在内存当中直接观察变量的值还不适应,所以当出现问题时,很少有学员能改正自己程序中的错误。
1.4教学内容陈旧
和大多数高校一样,我们选用的教材是清华大学沈美明主编的《IBM-PC汇编语言程序设计》,该教材以8086指令系统为主来进行介绍,实习实验环境主要还是DOS。然而这些教学和实验内容与实际情况相距甚远,我们知道不同的机器指令系统不同,而且随着嵌入式处理器的广泛应用,用X86的指令系统编程的范围越来越少,这使得学员在学完这门课后到实际编程环境中还要自学相关处理器的指令集,比如ARM、MIPS、PowerPC等。对于实验环境的选择,大多数还是在DOS环境,由于现在的机器完全是Windows操作系统,“图形化”的编程界面,学员普遍对DOS这种文本的编程、调试环境不熟悉,调试结果难以出现,实验结果感觉很抽象,使得学员在学习过程中产生一些畏难情绪。
2提高教学效果的可行方法
2.1采用多媒体教学
如果有可能,最好采用能够边上课、边实验、边演示的多媒体教室,使用多媒体课件教学。通过文字图像、声音、动画来激发学员的学习热情,增强教学效果。充分利用多媒体的功能,模拟程序指令的执行过程,着重描绘教学重点和难点。我们可以在教室的机器上安装调试环境,在上课过程中对一些简单指令执行使用调试环境进行演示,给学员一个了解“机器世界”的窗口,真正理解机器(CPU)对指令的执行过程。这样可以使学员快速入门,对学习本课程建立初步的信心。
2.2精心选择教材
教材是提高教学质量的基础和前提,是学员系统学习知识的依据。一本好教材对于培养学员自学能力和独立思考能力起着积极的作用。学员可以依据教材理解课堂教学内容,深入了解本学科各个领域的知识。对于清华大学的《IBM-PC汇编语言程序设计》这本教材,虽然它的内容全面而且丰富,但是由于教学学时的减少,导致很多内容特别是应用方面的内容无法讲解,因此很多内容只能作为自学内容,在教学中我们发现一本教材如果有较多的内容不讲或者作为自学内容,学员会“错误地”认为这门课不重要或太难学。所以我们建议更换教材,不再以8086指令系统为基础,考虑到嵌入式系统的发展趋势,可以加入一些RAM指令集、32位汇编和AT&T汇编的内容,为后续的嵌入式系统及其其它相关课程打下一些基础。
2.3优化教学内容
目前,这门课程主要的教学内容有:基本知识(数、计算机组织),编程工具(指令系统、寻址方式),编程方法(三种结构、过程)和应用(发声、图形程序设计)。由于学时数的减少,我们建议压缩或取消发声、图形程序设计这部分的内容,如果教员觉得非常必要讲,可以安排在课程设计部分(不占课程教学学时)。另外鉴于目前网络安全、网络病毒泛滥的严峻形式,建议在应用部分教学中适当增加病毒程序设计的内容。对于前三部分的内容也可根据实际情况进行适当压缩。与此同时,汇编语言是作为嵌入式系统开发与应用和嵌入式系统课程设计的专业基础课,结合计算机专业课程设置,建议在最后余留四到六学时的时间介绍一下ARM指令系统,将x86指令系统和ARM指令系统进行对比学习,为后续课程的学习打下基础。
2.4注重教学实践
汇编语言课程一般安排在大三的第一学期开始,40学时的课程在学期前半程就结束了。虽然学时数缩短了,我们还是不能忽略本门课程的实践这一重要的环节。因为学习一门语言课,其最直接的目的是用它去编写程序。因此,建议在课程结束后,利用后半学期业余时间给学员安排课程设计,到学期末结束并验收结果。对课程设计的要求不能太高,我们可以先提供给学员一些案例的源代码,比如:经典病毒、月下情人动画、产生随机数、简单学员成绩管理系统、卡通小闹钟、文本编辑器等汇编源代码。一方面先要求学员选择一个案例详细分析,给出详细的注释、程序设计流程、体系结构等;然后在理解、掌握的基础上,再对本案例进行修改设计出一个新的小系统。这种做法既能提高学员的学习积极性,又能锻炼其读程序、编程序的能力,而且没有占用教学学时。
2.5优化考核方式
传统的汇编语言课程考核方式主要是实行闭卷笔试,但是大多数学员在做编程题时,普遍反映由于指令太多,要用的指令记不住,导致编程题做不出来。从近两年的考试看,编程题得分高的学员很少。所以考试不能很好地反映出学员学习的好坏,特别是编程能力。因此建议考试形式采用:闭卷笔试50%+开卷上机编程20%+课程设计30%。这是因为汇编语言的一些基本知识还是需要笔试来考查:比如寻址方式,逻辑地址,物理地址等;上机考试可以出一些比较简单而有代表性的题目,估计大多数学员在给定的时间内可以做完,这样学员不用暂时去背太多的指令(当然如果用多了就不用背了),又可以测试他们现场调试程序的能力;由于上机考试时间的限制,只能出一些简单的编程题目,不能完全体现学员对知识的综合运用能力,所以要通过课程设计来补充考核这方面能力,当然时间可以延长到学期末。
3结束语
压缩学时后的汇编语言课程教学,不能只注重完成理论教学内容,而忽视对学员编程能力的培养。教学过程中不仅要理论联系实际,还要注重形象性、生动性和趣味性,帮助学员理解,培养他们的兴趣,提高教学效果。要在现有的资源和条件下,尽可能地挖掘教员和学员的潜能,把汇编语言课程教与学做得更好。
参考文献:
篇8
关键词:C语言;高职;单片机
中图分类号:G642 文献标识码:B
“C语言程序设计”是高职高专电子专业的专业必修课。传统教学以理论为主,以学科本位的逻辑体系来设计课程的教学内容。课程内容没有与高职电子专业的其他课程有机衔接,不符合高职高专技能培养的特点。学生在学习C语言之后,不能用之有效地解决实际问题,学生的学习积极性难以调动,因此有必要对该课程进行改革。
1 现状分析
目前高等学校都把“C语言程序设计”作为理工科非计算机专业的计算机基础教育课程,属于计算机基础教育课程的一部分。但课程设置并没有考虑与其他专业课程之间的关系,没有针对高职应用电子技术的专业特点,成了非计算机专业学生的“计算机通识教育”课程。
虽然许多学校对“C语言程序设计”课程从教学内容、教学手段、教学方法等方面进行了大胆的改革,把逻辑与编程解题思路(算法)放在主体地位,讲解如何分析问题和解决问题;但是受“在学校里牢固掌握基础知识,毕业后在实践中积累经验”这种传统的教学理念的影响,把培养学生阅读程序、设计程序的能力,分析问题、、解决问题的能力和逻辑思维能力作为教学目标。课堂上学到的也只是用C语言解决一些数学问题,所学内容和实际应用相脱节,认识不到“C语言程序设计”和自己专业之间的关系,学生在学习C语言之后,不能用C语言编写为本专业服务的应用软件。特别对高职高专电子专业学生来说,C语言的知识成了他们专业知识结构中的一个“孤岛”。
2 改革的必要性
C语言是影响深远的、传统的、优秀的面向过程的结构化程序设计语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、代码转换质量高。C语言方便进行模块化软件设计,还可以实现C语言和汇编语言的混合编程。C语言既具有高级语言的优点,又具有低级语言的许多特点,能像汇编语言那样直接利用CPU的硬件特性进行程序设计。既可以编写应用软件,又可以编写系统软件。和汇编语言相比,C高级语言程序设计快、可读性、可移植性和可维护性好。一般情况下,完成同样的任务,使用C高级语言比用汇编语言可提高工作效率5-10倍,在调试阶段更容易体会到这一点,因此C语言特别适合单片机的开发。嵌入式系统中使用的嵌入式操作系统绝大部分也都是以C高级语言为基础的,很多直接将源代码提供给使用者。目前在单片机应用领域,C高级语言越来越受到人们的重视。用C语言进行单片机程序设计已经成为单片机开发的一个主流,是单片机开发与应用的必然趋势。
单片机课程是应用电子技术及相关专业的一门重要的专业主干课,在专业基础课和其他专业课方面起着重要的桥梁作用。它涉及到的基础理论知识较广,应用范围广,是一门实践性、工程性很强的技术课程,在电子技术及相关专业课程中群中占有十分重要的地位。电子专业的学生普遍将单片机用于课程设计、毕业设计和电子产品设计大赛等许多实践环节。单片机应用也是学生将来在电子类公司或电子行业工作的最基本的技能。“单片机原理与应用”课程都是基于汇编语言的,高职高专学生很难应用汇编语言去搞程序设计,学生学到的单片机知识不能得到应用。
高等职业教育的培养目标是:培养既有一定理论基础又有较强实践能力,在生产服务第一线工作高层次的实用型、技术型人才,它不同于一般本科院校的学术型、工程型人才的培养目标。就高职应用电子技术专业而言,它培养强电弱电相结合,以弱电为主,并能熟练应用电气技术、计算机技术和控制技术等现代科学技术,具有较强实践能力的技术管理人才。强调应用性、实用性是高职教育的特色,教学内容突出基础理论知识的应用和实践能力培养的原则,以应用为目的,以“必需、够用”为度,加强针对性和实用性。
因此,高职应用电子专业的“C语言程序设计课程”应不同于本科相应专业,也应不同于高职其他专业。“C语言程序设计”课程的开设应紧扣本专业的特点,为本专业的培养目标服务。如果将“C语言程序设计”变成“单片机C语言程序设计”,学生通过本课程的学习掌握单片机C语言程序设计方法,达到独立利用C语言编写单片机应用程序的目的。将C语言“知识孤岛”和单片机“知识孤岛”连接起来,结合所学其他专业知识,使学生学会应用单片机开发电子系统的基本方法。如果学生以后需要用C语言或其他高级语言开发通用计算机系统的应用软件或系统软件,有了“单片机C语言程序设计”的基础,可以触类旁通,很容易掌握其他高级程序设计语言。这也符合从特殊到一般,再从一般到特殊的认知规律。
3 课程改革设想:
3.1 课程内容的改革
把“C语言程序设计”置换为“单片机C语言程序设计”,放在“单片机原理与应用”课程之后开设,将“计算机基础教育”课程变成“单片机开发技能”课程。课程内容适用于C高级语言的初学者,包括数据类型、运算符和表达式、数组、指针和函数、程序的顺序结构、选择结构和循环结构、程序设计基本知识和单片机的C编程等内容。对C语言中较难或单片机程序不常使用的内容,比如多维数组、指向指针的指针、链表等进行删减。相关例题应本着“深入浅出,突出实用”的指导思想,难度应与高职高专学生的基础相适应,算法不要过于复杂。单片机的C语言编程部分主要应包括中断、定时器/计数器、串行口、键盘和显示等相关应用,适当包含少量可编程芯片的应用。所选内容应体现先进性、实用性和技能培养的特点,抛弃一些过时或不实用的内容,把提高学生的职业技能放在突出的重要位置。整门课程应将单片机和C语言有机结合起来,强调知识点在单片机程序设计中的应用,体现“单片机C语言”的特色,避免把课程内容分为“C语言程序设计”和“单片机C编程”两部分。
3.2 编译开发环境
以80C51系列为基础,开发环境选择德国KeilSoftware公司的Keil uVision集成开发环境(当前版本是uVision3)。这是一个基于Windows的开发平台,集成了编辑器、项目管理器、Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器和调试器,用户群极为庞大,符合教学特点的典型性。其中Cx51是专为80C51单片机设计的C语言编译器,生成的程序代码运行速度高,存储空间小。KeiluVision还提供了强大的项目管理功能,可以十分方便地进行结构化多模块程序设计,特别是Keil提供的纯软件模拟仿真功能(也支持硬件目标板在线仿真),非常适合教学使用。Keil调试器支持断点管理和程序代码的多种 执行方式(全速、单步、执行到指定行等)。在调试状态下有寄存器窗口、存储器窗口、观察窗口和命令窗口,用于程序执调试过程中显示单片机寄存器、存储器、局部变量和观察点的状态和输入各种调试命令。Keil uVision的集成功能(Peripherals)菜单可以打开中断系统、I/O接口、串行口、定时器计数器等状态窗口,通过这些状态窗口可以观察软件仿真结果。
Keil uVision可以与PROTEUS整合构建单片机虚拟实验室。PROTEUS是目前世界上最先进最完善的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微控制器与外设组成的混合电路系统仿真、软件仿真、系统协同仿真和PCB设计等全部功能。由于PROTEUS软件包逼真、真实的协同仿真功能,得到了包括剑桥在内的众多大学用户的认可,作为电子学或嵌入式系统的课程教学、实验和水平考试平台。Keil uVision与PROTEUS通过设置联机调试单片机系统,在PROTEUS中完成单片机系统的电路原理图绘制后,在Keil uVision集成开发环境中进行程序设计、项目的创建、编译链接和调试,同时可在PROTEUS查看直观的结果(如键盘输入和LCD显示等)。
3.3 教学方式的改革
高职教学应该是基础和技能的教学同步进行,甚至先教技能再教理论,在不断实践中掌握技能,在技能学习中提高基础理论。在高级语言程序设计教学中,不能期望高职学生对每一个算法都理解。一些太复杂的算法、单片机应用系统中常用芯片的驱动程序,可以以函数库或软件包的形式直接提供给学生,供学生在程序设计中调用,降低理论教学难度。
确立以学生为中心的教学理念。从学生实际出发,以学生为本,采用多样化、层次化的教学方法,贯彻循序渐进、深入浅出的原则。学生没有高级语言程序设计的基础,在“单片机C语言程序设计”教学中要注意分散难点,缩小台阶。在内容体例的设计上以实用为主,抛弃过多的语法细节和非通用的或实际用途很少的语言特性,理出重点和教学主线;采用一体化教学方法,以程序样例为主实施教学。淡化语法教学,以程序设计带动基本语法的学习。
上机实验是掌握单片机C语言程序设计的必要手段。不能简单地认为上机实验只是辅的教学。程序设计的能力是在实际动手实践中练就的,通过上机操作和验证可进一步加深各种语句的理解,提高学生的编程能力。通过Keilu Vision与PROTEUS组成的联机调试环境,熟练使用Keilu Vision和PROTEUS软件对学生的深入学习有巨大的帮助。
篇9
摘 要:本文对计算机专业学生存在的专业课学习兴趣低、自主学习能力弱以及工程能力不强等问题,进行了分析和思考。结合汇编语言程序设计课程教学的实践体会,探索如何引入工程案例改进教学方法,激发学生专业学习的兴趣,培养学生自主学习能力,逐步提升其工程能力。
关键词:计算机专业;工程案例教学;工程能力;汇编语言程序设计
基金项目:重庆市教委(113014),地方高校计算机及其相关专业工程应用型人才培养模式研究与实践(2009006);重庆理工大学校级项目(2009006),结合工程认证,创建新型的计算机专业教学体系。
作者简介:徐世军,男,教授,硕士生导师,研究方向嵌入式技术;范伟,男,副教授,研究方向为计算机应用与物联网;黄贤英,女,教授,硕士生导师,研究方向计算机应用。
1 背景
计算机科学与应用技术的发展是高新技术的主要标志,如何跟上时代的发展和社会的需求是计算机专业教学所面临的挑战。教育部计算机科学与技术教学指导委员会在2004年的《关于计算机人才需求的调研报告》中指出:计算机专业的学生仍处于应试教育模式中,实践课程少,动手能力不强,导致学生毕业后竞争力不强。随着近年来高校招生规模的扩大,学生综合素质不断下降;有些问题显得更加突出,如:学生普遍学习能力较弱、缺乏学习的热情,部分学生对专业不感兴趣,甚至厌学。
工科毕业生缺乏工程背景、动手能力弱,被认为是当前大学教育的首要“弊病”。在担任计算机专业教学工作之前,本人一直在企业从事工程设计和产品研发工作,这也使我有机会从社会需求和大学教学两个不同的角度去观察和思索一些问题。从社会需求角度去观察大学毕业生,你会发现他们大多存在自主学习能力差、专业知识面窄(甚至除专业书本外一无所知)、动手能力差、思维僵化、方法能力和社会能力严重欠缺等不足。而高校教学的主要方法仍然是传统的以理论知识灌输为核心,力求学生能全面领会和掌握主要知识点。即使谈到教学改革,很多学校的主要办法还是把教学计划排得更满,让学生学得更多、更细。从本质上讲,这仍然是应试教育思维模式的一种延续[4]。
就计算机专业教材而言,多数是原理性、条款式、菜单型论述结构,内容大都比较抽象和枯燥。若课程教学仍沿用以教师为中心、以理论灌输为主、轻学生自主动手参与的传统教学模式,将很不利于激发学生的学习兴趣、调动其主动学习的积极性,当然更不谈不上培养学生的工程能力。
引导其学习兴趣、培养自主学习的能力从而提高教学效果,是教学改革的关键;如何采用更有效的课堂教学的形式,逐步培养其动手能力,也已经成为计算机各门专业课程都必须进行反复思考和不断改进的重要课题。
2 改进思路
究其原因,是我们在教学过程中很少注意去区分和思考“科学研究”和“工程技术”的差异问题。在实际工作中,社会对从事“科学研究”和“工程技术”的人员素质和能力的要求是有很大差别的。科学研究
往往是专注于某个专业并从某个专业领域入手,遵循系统、严密的理论推演,往往是由个人完成的;而工程技术需要的是综合性知识和能力(有的工程甚至是凭一种感悟),一个具体的工程技术问题,大多不是一门专业学科知识所能解决的,需要多学科知识的综合应用。工程的许多条件常常是动态变化的,工程问题的解决更象是一场开卷考试――思路和方法更重要。工程更注重是团队行为(管理和协调),成员的协作精神常常决定了工程的成败。科学要求严谨和一丝不苟,而工程则注重对全局把握(可能会牺牲局部)和利害的权衡取舍[1]。因此,所谓“工程能力”实际上就是对上述“工程技术”素质要求的综合。
“授之以鱼,莫若授之以渔”。我们要清楚地认识到,工程能力的培养仅靠传授科学知识是远远不够的,它更加强调对学生思路和方法的训练,让学生学会学习、学会思考、才能真正解决实际问题。简言之:学生工程素质和能力的培养,就是通过各种具体工程案例教学使学生尽早学会用综合的、全局的、动态的思维方法去发现问题、分析问题和解决问题,全面提高学生的专业能力和社会能力[3]。
3 具体方法
汇编语言程序设计课程的专业性、综合性强,涉及的知识点多,学生普遍反映抽象难懂,不易掌握。因为汇编语言和机器的体系结构结合紧密,使用者必须对计算机组成、硬件控制和指令解释过程有比较清晰的理解和认识,因此学生在学习中容易产生厌烦情绪,对汇编语言的学习热情普遍不高。针对这些特点,笔者注意从以下几个方面入手进行教学形式的改进和尝试。
1) 让学生尽早领会汇编语言的特点及应用领域,明确学习目标、激发学生的学习兴趣。
在第一堂课,向学生播放一组经过精心准备,且学生感兴趣的介绍嵌入式产品功能及应用的视频短片,尽可能向学生展示部分实物的内部结构,并重点说明其控制方法和运行机理。比如:汽车电子部件(AT组件、电喷、电动门窗、防盗报警、辅助转向等),智能仪器、仪表(智能电表、温度调节仪、自动售货机)以及一些智能小家电产品(智能小风扇)等等;还可以找适当的时机给学生介绍一下计算机病毒的工作机理。要让学生明白,在某些特定的领域和场合,汇编语言具有不可替代的地位。在第一堂课上,就明确地提出学习本门课程要达到的目标,特别是学习后可以解决哪些实际工程问题。
通过实例分析让学生体会到汇编语言特点:它是一种最接近计算机核心的语言,可以最大限度地发挥计算机硬件的性能,是一种能够利用计算机的硬件特性直接控制计算机硬件的语言。用汇编语言编写的小程序的速度通常要比高级语言快几倍、几十倍、甚至成百上千倍。同时,提醒学生注意:学习汇编语言的好处――有利于理解软件和硬件的关系,学会如何有效地设计数据结构,能让计算机存储空间更少、处理速度更快,能更有效地提高调试能力。要从思想上改变学生“重软轻硬”的倾向,明确告诉他们,如果想真正地控制自己的程序,只知道源代码级的调试是远远不够的。
2) 在明确学习目标和具体工程应用之后,让学生针对“如何实现这些目标(特别是工程应用问题)”,各自提出自己认为课程中应学习的知识点和方法,最后由教师加以总结和归纳,形成“汇编语言程序设计”课程的基本教学和实验内容。
让学生“带着问题学习、带着问题实验”是培养学生学习兴趣、提高学生工程能力的好办法,只有学生的全身心投入才可能克服被动“填鸭式”教学的种种弊端。
3) 抓住课程特点,使用更直观生动的教学形式让学生更容易理解和掌握。
针对汇编语言和机器体系结构结合紧密、抽象、难于理解的问题,在讲解指令系统时,一定要与CPU功能结构图、存储器结构示意图结合起来,把地址、数据和控制信息的传递过程通过图示进行分解。并且在实验课中,专门设计若干段由各类指令组成的小程序实验,让学生反复使用DEBUG工具演示指令流程,仔细跟踪每条指令运行后各个寄存器和存储器的变化状况,列表并作好记录,让学生自己对指令功能进行理解、分析和总结,这也是训练学生调试程序和发现逻辑错误非常有效的手段。
4) 在指令系统学习完以后,就可以引入完整的工程案例进行教学。通过选取真实具体的工程案例,使学生学会用跨专业、综合的、全局的思维方法去观察问题、分析问题和解决问题。
实际上,要选择一个合适的工程案例是非常困难的,不但要考虑工程项目本身的特点,而且要考虑学生的实际领悟、消化能力。教学案例可取自实际工作中涉及的工程应用实例(变科研工作为教学资源),要强调实用性,兼顾趣味性,这样更能激发学生参与的积极性。教师通过案例分析,将汇编语言程序设计方法和相关专业的知识点恰当地融入案例的分析和演示过程中[2]。
笔者选用了一个工业产品开发项目――“直流无刷电机智能控制系统”的研发全过程作为案例教学的主线,分步骤、分模块地进行讲解和分析。案例教学的重点包括:工程目的,工程项目的主要知识点,具体的实施步骤。同时,在案例中穿插介绍一些编程技巧和设计及调试工作的要点和难点。案例的教学可按以下层次逐步展开。
① 首先介绍项目目的、目标、实施方案和主要知识点。必须让学生深刻地认识到任何一个项目都不是一门专业学科知识所能解决的,需要多学科知识的综合应用,要解决工程问题必须有开放的思维和综合的知识。通过介绍,使学生逐步领会工程项目开发的步骤和基本方法。
② 提供全部汇编语言程序清单,并让学生充分认识和消化一段时间后再进行讲解,使学生建立汇编语言程序语句、结构和形式的总体概念。总体概念的建立,比具体的编程方法和技巧更加重要。
③ 提供全套软件设计的程序流程图,让学生对照程序清单去领悟汇编语言程序设计的基本思路和方法。
④ 在充分消化的基础上,提出若干问题让学生自己在案例中去寻找答案,最后再由老师加以分析和总结。这些问题的提出和解决,就是处理具体工程问题的基本方法和步骤。解决问题的方法有很多,但在具体工程中必须找到最优方案(成本低、可靠性高),如:
如何实现驱动电路发生短路时,系统在10μS以内启动保护(硬件中断方式);
如何确保电机能准确地换相操作(采用定时器中断,定时查询换相标志);
如何用软件准确设置MOS管上下臂的“死区(>300nS)”(采用NOP指令延时);
如何实现主程序和子程序以及子程序之间的参数传递(约定变量――存储器法);
如何用软件设计计数器、定时器(+1/-1、比较和循环指令)。
⑤ 在实验课中,简化一些条件,让学生分组实现一些功能模块:电压/电流处理、温度保护、调速、换相处理的子程序设计,并且,实现这些功能模块的组合。通过分组编程和组合实验,使学生初步体会到工程开发的团队行为,并逐步学会管理和协调。
⑥ 对部分软件进行点评和总结。
5) 另外,针对其他的一些指令应用和编程技巧可选取适当的工程案例进行专项教学和训练。
笔者选用了一个“猎枪弹自动装配机控制系统”的设计案例――装配机共有22个工位,其中:1、3、6、9、12等5个工位分别是“弹壳、底火、发射药、弹托、成弹”检测工位。只要有一个检测工位不合格,后续的装配就不再进行,当不合格品进入第22工位(“排废”工位)时自动剔出。先要求学生思考采用什么方法实现最容易,然后设计程序流程图,最后将笔者的设计方案供大家讨论。这样,就强化了学生对AND、OR及移位指令的功能理解,并学会了如何应用逻辑运算解决工程问题的编程技巧。
要培养计算机专业学生的学习兴趣,还可以让某些学生较早地参与到教师的科研工作或实际项目开发中,并根据学生的实际情况分配一些具有一定难度的任务,也能较好地调动学生自主学习的积极性[5]。
4 结语
通过对汇编语言程序设计课程教学的一些改进尝试,提高了学生的学习兴趣,避免了其学习的盲目性,也为学生进行工程研发积累了经验。计算机专业系列课程的教学改革是一个系统工程,每门课程的实际操作中都有许多工作要做,尤其是案例教学环节,笔者根据自己从事工程研发的经验,谈了一点肤浅认识,希望能对计算机专业系列课程的教学改革有所帮助。
参考文献:
[1] 蔡敬民,魏朱宝. 应用型本科人才培养的战略思考[J]. 中国高等教育,2008(12):58.
[2] 张雪兰,谭毓安,李元章. 汇编语言程序设计课程教学改革与创新能力培养[J]. 计算机教育,2008(8):22-23.
[3] 黄贤英,李玉桃. 构建面向岗位的计算机专业教学体系和教学模式[J]. 重庆工学院学报.2007(21):175-177.
[4] 黄贤英,刘恒祥,范伟. 计算机专业实践教学体系建设思考[J]. 实验技术与管理,2009(10):34.
[5] 范伟,黄贤英. 大学计算机教育中的工程素质培养[J]. 重庆工学院学报, 2008(3):163-166.
Strengthen Engineering Ability Training, Professional Teaching
Reform Practice in the Course of Exploration
XU Shijun, FAN Wei, HUANG Xianying
(College of Computer Science and Engineering, Chongqing University of Technology, Chongqing 400054, China)
篇10
【关键词】单片机实践教学分模块教学阶梯式教学
引言
近几十年来,计算机技术得到了飞速发展,PC机和网络已经走进千家万户,人们的日常生活、工作学习都和它紧密联系在一起。单片机作为计算机中的一个独立门族--嵌入式计算机系统,具有广泛应用。例如:各式各样的办公设备和家用电器的智能化、遥控化和模糊控制智能化都是靠单片机来实现的。单片机的学习也理所当然的受到了高等院校师生的高度重视。但是,如何开展单片机的教学工作,如何让学生学好单片机这门课程,一直是承担这门课程的老师头疼的问题,也引发了对这门课程教学改革的思考。
单片机教学是一门实践性和技术性很强的课程,学生需要做大量的软硬件实验,目前采用的教材多属于MCS-51系列,程序源代码用汇编语言编写,教学内容与实际的产品设计之间存在着很大差异,因此在单片机实践教学环境中必须结合当前实际应用的技术特征,适当增加新知识、新内容,使用计算机辅助实验教学、用计算机模拟实验、用计算机仿真软件等方法改革教学内容和教学手段。为此,笔者结合自己的学习及教学经验,对单片机实践教学提出一些心得。
一、教学内容的更新
1.1以汇编语言程序设计为基础,以C51语言程序设计为提高
使用汇编语言的优点是代码紧凑,运行效率高,可直接对硬件内部进行控制,但缺点也非常明显,主要表现在对目标单片机硬件结构的依赖上,编程者必须对硬件有深入的了解,而且汇编语言抽象,不易理解,功能弱,编程效率低。当然,汇编语言有助于学生对单片机底层的存储器、堆栈等的了解,在某些领域还是有一定的价值,学生必须掌握。
例如,应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。
用汇编语言写单片机程序,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:
51单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个机器周期,djnz也需要2个机器周期。那么存在r0里的数就是(20-2)/2=9。用这种方法,可以非常方便的实现256us以下时间的延时。如果需要更长时间,可以使用两层嵌套。而且精度可以达到2us,一般来说,这已经足够了。
相对汇编语言,C51语言作为单片机的开发工具具有程序结构清晰、可读性好、易于维护等显著的优点,一条C语言相当于几条汇编指令,完成同样功能程序的行数也大大缩小,更便于复杂算法的实现和调试。现在社会上的单片机系统已经普遍采用了基于C51高级语言的软件系统。由于学生在低年级已经学习过标准C语言,有了这个基础后,在现在的单片机实验中给学生增加一些C51编程训练,通过循序渐进的实验,学生完全能在短期内自学掌握C51。通过增加C51的内容,更新了实验教学内容,使学生的学习更接近实际系统的社会化应用,无疑对学生后期的学习有很大的益处。
C51程序设计不受具体机器的限制,非常擅长于科学计算,入门很容易;但对于程序的时间和空间要求很高的场合,汇编语言仍是不可缺少的。所以在学生单片机应用到达一定水平后,提倡C51与汇编相结合的程序设计方法,取长补短,使程序设计达到更高的水平。
1.2 以信号传输路径为主线,分模块教学
传统的单片机教学以单片机的知识结构为主线,先后讲单片机的硬件结构,指令系统,汇编语言程序设计,接口技术及应用。这样的教学顺利很容易使学生乏味,引不起兴趣。经过多年的教学探讨,我们提出以信号的传输路径为主线,分模块的讲解各个部分涉及的知识点的教学方法。信号的传输路径如下图一所示:
信号传输路径分为五个模块,单片机模块部分介绍单片机的硬件结构,最小系统设计,存储器扩展方法等。输入、输出模块部分结构接口扩展、接口电路设计等知识。前向通道介绍电平转换电路、滤波电路、A/D转换电路等设计方法和程序设计技巧。后向通道部分介绍电磁阀、接触器、各种电机、LED、LCD电路设计和程序设计技巧。
按信息传输路径分模块教学,有以下几个优点:
1、 知识点完整,思路清晰,各个知识点的作用明了。
2、 后续项目实例教学法中,便于把一个大的项目按模块划分为几个小的部分,逐一讲解,注意攻破。
2 教学方法与教学手段的更新
单片机技术的应用在现代人生活中随处可见,小到小区住宅的门禁系统,大到航空航天系统中,都有单片机的身影。单片机技术飞速发展,日新月异,单片机课程的教学方法与教学手段也必须不断更新,以适应单片机技术的发展。
经过多年的教学探索,我们提出分四步走,逐步推进的阶梯式教学方法,其示意图如下图二所示。每个教学方法既可以独立进行,又相互联系、相互推进。前一步的顺利开展为后面的教学环节铺好道路,使后面的教学环节更容易开展;同时只有一步一步逐一落实好了,才可以达到最佳效果。
2.1用项目实例促进教学,引发学生兴趣
兴趣是最好的老师,在学生刚开始接触这门课程时,通过生动形象的项目实例,如基于单片机的交通灯控制器、基于单片机的抢答器、基于单片机的智能小车等实例,让学生明白什么是单片机?单片机在我们身边哪些地方出现?单片机在电子产品中发挥什么作用?使学生明白学习的目的,对这门课程产生浓厚的兴趣。
例如基于单片机的交通灯控制器项目,首先拿出前届同学制作的作品,讲解功能,演示效果,分析工作原理;然后介绍作品的硬件结构,软件功能模块的组成;最后概括该项目的开展步骤。让学生既对事物有个感性的认识,引发浓浓的学习兴趣;同时又清楚完成该项目需要做哪些工作,明白今后在该课程学习过程中的努力方向。
2.2 有效利用计算机辅助教学
计算机辅助教学CAI在教学中的作用毋庸置疑,通过图文声像的形式表达教学内容,补充了传统板书的授课方式。单片机原理与应用理论抽象,实践性强,通过采用计算机辅助教学, 采用视频、音频、丰富的动画及色彩等多种教学表达方式生动描述教材中的抽象概念,能极大的增加知识的传授量,使得课堂教学变得丰富多彩。比如,制作flas,演示单片机的定时、计数中断工作原理;比如,采用多媒体演示单片机仿真软件Proteus和Keil联调的强大的仿真功能,演示程序的编写及调试过程;这使得抽象的理论教学显得非常直观,将促使学生对知识的感知,活跃其思维过程,提高学习效率。比如,在教学初期播放前届同学优秀作品视频,激发学生兴趣。比如,用 LabView虚拟仪器做信号采集试验,扩展试验设备。
2.3结合应用实例,开拓试验渠道
单片机是门软硬件结合特别紧密的课程,硬件是软件的控制对象,软件使硬件的功能更加强大,具有智能化能力,两者相辅相成,缺一不可。初学者很难两面兼顾,因此我们开拓多种试验渠道,促进教学。
在单片机实验课时较短的情况下,仅仅利用实验室做实验不利于单片机的实践教学,笔者在教学中发现,利用Proteus与Keil构建单片机的虚拟实验室,虚拟实验弥补了硬件资源的不足,克服了实验箱教学的固定硬件资源导致的实验内容局限性,丰富了实践教学方式,提高了学生的学习兴趣,取得了非常好的教学效果。Keil完成单片机软件设计调试,proteus完成硬件设计及系统运行结果的查看。在单片机的实践教学中增加Keil和proteus仿真软件的使用,对于学生深入学习单片机,用来做单片机的仿真分析和设计,无疑有巨大的帮助。通过学习Keil软件,加强实践环节中C51语言的应用,并结合工程实例,基于单片机的智能小车,将学生的程序设计能力练习落到实处。此外,proteus仿真软件有国际通用的虚拟仪器及电子元器件库。教师可以在实验室向学生演示Protues仿真环境中的原理图设计,搭建虚拟仪器仪表,在 Keil集成环境中进行程序的编译连接,进行单步和全速调试,引导学生观察电路的状态和软件运行后的变化。
2.4 组织课外电子设计兴趣小组,参加电子设计竞赛,推动单片机教学的开展
利用现有的实验环境,以组织课外电子设计兴趣小组为中心,鼓励学生参加各种竞赛,如图五所示,有助于培养学生的应用、开发、创新及综合分析能力,既不打乱正常的教学秩序,同时又促进了教学更有效的开展。
在课外电子设计兴趣小组中间进行一些小竞赛,要求学生自由组队,独立完成设计,提交设计说明,明确阐述设计思路和设计结果,并进行小组答辩,评选出优秀的作品给予一定奖励,这种方式,促使学生不断的学习,在找到问题,解决问题的过程中,学生的知识面扩大了,获得了学习的乐趣和成就感,激发了他们的自主性和创造性,培养了工程设计素养和团队意识。
同时,从这部分学生中选拔一些尖子生参加省和国家的各种竞赛,以赛促学。
结语
在单片机课程实践的教学中,我们根据社会对工程类专业人才的需求,做了一些尝试性的工作,提出新的教学目标,并更新了实验教学的内容和模式,旨在提高教学质量,培养学生的工程设计能力,为他们走上工作岗位打下坚实的基础。
参考文献
[1] 雷建龙 吴相林 冯雪姣,加强实践性、提高趣味性,改进单片机原理教学方法的探索,教育理论与实践[J],2002(s1):
[2]梅丽风,蓝和惠,任国臣 单片机课程教学改革的探索[J], 辽宁工业大学学报(社会科学版),2008(8):114-116