建设“汇编语言”精品课程的体会

2009-08-31 07:45李敬兆宗欣欣
计算机教育 2009年13期
关键词:精品课程课程建设教学改革

李敬兆 宗欣欣

摘要:本文从汇编语言的教学现状出发,结合“汇编语言”精品课程建设所做的工作,从师资队伍建设、教学资源的立体化建设以及教学改革措施三方面谈了建设“汇编语言”精品课程的体会。

关键词:汇编语言;精品课程;课程建设;教学改革

中图分类号:G642 文献标识码:A

1汇编语言及特点

汇编语言是从机器语言发展过来的,是用助记符号表示机器指令代码、变量地址,标号等的符号指令序列。汇编语言是计算机能提供给用户的最快捷有效的编程语言,是能够直接控制计算机硬件的唯一语言。该课程为“微机原理及接口技术”、“嵌入式系统”、“操作系统”、“编译原理”等课程提供基础知识。

2汇编语言教学现状

汇编语言不像高级语言接近人们的语法和思维习惯,要求使用者对计算机的硬件、组成、指令的解释过程有清晰

的了解,加上指令和伪指令众多,语法难记,调试困难,程序的可读性差。因此学生普遍反映这门课难学难懂,一开始就产生了畏学情绪,学习的能动性丧失,给老师的教学工作也带来一定的困难。

3 “汇编语言”精品课程建设

我们主持的“汇编语言”精品课程是安徽理工大学的校级精品课程和教学研究重点资助项目,以下是我们在创建“汇编语言”精品课程中的一点体会。

3.1师资队伍建设

在汇编语言精品课程建设中,我们用了5年时间逐步形成一个以中青年教师为主讲授课程的系统知识,以课程带头人讲相关专题的成熟梯队,为精品课程的建设提供可靠的质量保证。在这个梯队中,一名具有正教授职称,两人具有博士学位,一人正在攻读博士学位,其余四人均具有硕士学位,队伍的平均年龄不超过35岁。

梯队建设一方面从提升学历和职称入手,另一方面注重加强教师的基本功建设,为此我们采用了多种形式的活动和制度,比如一周一次的集体备课制度;定期的讲课比赛;开展示范教学活动和定期听课制度,这些活动的开展和制度的坚持,使青年教师的基本功得到了迅速提高。目前,课程组有一人连续两次在校级讲课比赛中获得前三名,课程组成员在学生对教师测评中都位于全校排名的前30%。

3.2教学资源的立体化建设

(1) 编写汇编语言程序设计及实验教材

编写了“21世纪高等院校规划教材”《8086/8088和ARM核汇编语言程序设计》及其配套的实验教材,该书第二版已由中国科技大学出版社出版,并被评为安徽省教育厅“十一五”规划教材。该教材深入浅出地阐述了8086/8088的寻址方式,指令系统,汇编语言的基本程序设计方法,高级汇编语言技术和DOS、BIOS调用,并介绍了基于ARM核的汇编语言程序设计的方法和技术。

(2)“汇编语言”课程的网络建设

我们以“21世纪高等院校规划教材”的内容为蓝本,广泛收集网上教学资源,给学生提供了一个课下学习汇编语言以及同老师交流的平台,在这个教学平台上提供了老师的PPT课件和视频教学资源,每一章节的教学重点和难点提示;设置了师生互动的交流平台,由学生提问,教师回答,使教师及时掌握学生对目前讲述内容的掌握情况和反馈信息,为下一步的教学工作提供了科学的指导。

3.3教学改革措施

(1)“循序渐进”和“多读多写多上机”的学习方法

学习方法对于学习效果有着重要的影响。首先,学生应理解每条常用指令的功能,指令对标志位的影响,指令的限制条件等,能够正确书写每条指令;其次,学生通过阅读程序,掌握顺序、分支、循环和子程序各种程序段的编写方法;接着,学生利用伪指令将程序段扩展成完整的源程序文件;随后,学生利用各种程序结构编写常见问题的程序;最后,学生再编写较大型程序和有一定难度的程序。

对于汇编语言,一定要多读多写多上机,多读才能熟悉指令的用法和程序结构,读懂程序是写程序的基础;多写,才能做到不眼高手低,先根据所学的程序结构编写小程序进而编写复杂程序;多上机,才能发现自己在编写程序过程中的语法及逻辑错误,进一步提高编写调试程序的能力。

(2) 用debug将学生引进汇编之门

在汇编的各类教材中,前面用了很多篇幅在讲各种寻址方式和指令,后面接着讲伪指令和汇编程序结构,等到学完程序结构,学生能够进行简单编程的时候已经过去了课程的大半时间,而这时由于前面学的寻址方式和指令又很多,一时难以全部记忆又没有实践机会,有些内容又还给了老师,导致在后面的程序结构讲解时还要复习前面的一些比较难记的指令。所以如果在学习指令和寻址方式的时候就能教会学生使用debug,将会受到事半功倍的效果。比如在讲解进栈和出栈指令时,启动 debug,在debug命令提示符下输入汇编命令

-a100

接着输入××××:0100MOV AX,1234

××××:0103PUSH AX

××××:0104回车

使用-t单步命令执行上面的指令,可以看到第一条指令执行后

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP= 0000 SI=0000 DI=0000

DS=138C ES=138C SS=138C CS=138C IP=0103 NV UP EI PL NZ NA PO NC

138C:0103 50PUSHAX

单步执行一条指令后,我们可以清楚地看到各个寄存器的情况。在这里我们关心的是这样几个内容,第一,由于执行的是MOV AX,1234H指令,所以AX寄存器的值已经改变为1234H;第二,下一条要执行的指令在那里,是什么,在上述显示内容的最后一行就是下一条要执行的指令地址,该条指令的二进制代码和汇编指令,由于看到了下一条指令是PUSH AX,所以我们要关心堆栈段寄存器SS和栈顶指针SP,此时SS=138CH,SP=FFEEH。继续使用单步命令执行第二条指令后看到如下结果:

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEC BP= 0000 SI=0000 DI=0000

DS=138C ES=138C SS=138C CS=138C IP=0104 NV UP EI PL NZ NA PO NC

138C:0104 50 POPBX

在这里看到了栈顶指针地确发生了变化,此时的SP=FFECH,就是刚才的堆栈指针FFEEH-2。接着我们看到堆栈由于进栈发生了什么变化,使用观察内存命令-d ss:ffec,看到如下结果:

138C:FFE0 34 12 00 00

138C:FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

到此时就可以很清楚地说明,栈操作是以字为单位的,进栈操作分成两步,首先栈顶指针减二,接着一个字压入堆栈。通过这种直观的演示,学生一方面清楚地了解了进栈操作的过程,另一方面也对debug的使用有进一步的深入。学会使用debug汇编语言对学生就不再是只能看,不能用的东西了。

(3) 以案例展开教学,以任务驱动教学

以案例展开教学,以任务驱动教学是对传统的填鸭式教学的颠覆,在这里老师和学生同时都是课堂教学的主体。在案例展开过程中,教师作为主体引入本节课新的知识点及重点、难点,而在任务驱动环节,是老师结合本节内容给学生设置一定的任务和要求,让学生运用本节课及以前所学的知识,来解决给定的任务。

这里以讲解循环程序设计的章节为例说明如何使用案例展开,任务驱动的教学方法。在循环程序设计中,对于循环的控制主要有两种方法,一种是计数控制法,用于循环次数已知的的场合;另一种是条件控制法,用于循环次数未知的场合。首先以案例展开教学,设计的案例是统计AX寄存器中1的个数并将结果放到CL当中。这个题的解法可以采用计数控制法,因为AX寄存器是16位的,循环次数已知;还可以采用条件控制法,判断AX寄存器什么时候为0,当AX寄存器为0时,也就不需要再统计1的个数了,所以在条件控制法中就是通过移位,判断AX寄存器为0作为循环的终止条件。

采用计数控制法的程序如下:

MOVCL,0 ; 计数器初值

MOVBX,16 ; 设置循环次数

LAB:SALAX,1 ; AX左移一位,最高位移到CF中

JNCLAB1 ; CF=0转LAB1; CF=1顺序执行, 计数器CL加1

INCCL

LAB1:DECBX

JNCLAB

采用条件控制法的程序如下:

MOV CL,0 ; 计数器初值

LAB:AND AX,AX

JZ EXIT ; AX=0时循环结束, 转到EXIT

SAL AX,1 ; 将AX中的最高位移入CF中

JNC LAB ; 如果CF=0则转LAB

INC CL ; 如果CF=1则CL+1→CL

JMP LAB ; 转LAB处继续循环

EXIT: …

讲述完上述两个例题后,可以把任务布置给学生,第一个任务,求1到100之间的自然数之和;第二个任务自然数累加1+2+3+…+N>500,求累加和满足条件时最后累加的那个自然数。这里设计的两个任务是和本节课的内容密切相关的,很显然第一个任务用计数法来控制循环,第二个任务用条件控制法,也就是用和大于500来作为控制循环控制条件,刚刚讲过的知识点很快得到了运用,学生的学习兴趣一下高涨起来。在设计任务时要注意层次感,如果是要求学生在课堂上立即完成的任务,选择的难度要稍微低点,这样,学生在较短的时间内就能完成,容易产生成就感;在课外给学生布置的任务可适当增加难度,让学生通过进一步的分析和思考才能得到解答。

(4) 开放式的课外教学

在汇编语言教学中,我们采用了多种手段展开课外教学活动,一是在课程网站上提供一些教学资源,给学生作为课外学习的参考和指导;二是开展汇编语言编程大赛,通过比赛让学生提高独立分析问题解决问题的能力;三是在学期之初布置学生写一篇关于汇编语言应用或者是利用debug调试程序的论文,通过这些活动的开展,让学生从课内学延伸到课外学,从被动学转变为主动学。

(5) 实验教学的改进

汇编语言是一门实践性很强的课程,在汇编语言的实验教学中,我们通过课前布置预习,课堂验证,课堂考核这几个环节把实验所要达到的目的落到实处。在课前预习环节,要求学生先熟悉实验的目的,实验的算法,实验中用到的指令,能读懂程序,对学有余力的学生把选作实验程序先编写出来。课堂环节主要是对实验程序和自编选作程序的调试。课堂考核环节采用两种办法,一是你讲我听的方法,就是让学生来讲解程序,老师对讲解中的错误给与指正;二是学生编写调试完成后举手示意老师检查,检查完成后老师记录在册,学生对实验就会引起充分重视,实验课的效果也就达到了。

4结语

经过5年的课程建设,我们已经拥有了一个年龄、职称和知识结构合理的梯队,梯队成员的专业素质也在课程建设中得到了提高和锻炼。另外,通过课程建设中实施的教学和实验方法,大大提高了学生的学习兴趣和主观能动性,该课程受到了学生的欢迎,取得了满意的教学效果。

参考文献:

[1] 李敬兆.8086/8088和ARM核汇编语言程序设计[M]. 2版. 合肥:中国科学技术大学出版社,2008.

[2] 金海溶,周苏,孟学多.用实验方法改革汇编语言程序设计的教学[J]. 计算机教育,2007(1):34-37.

Experiences on Construction of “Assembly Language” Excellent Course

LI Jing-zhao, ZONG Xin-xin

(Anhui University of Science and Technology Institute of Computer Science and Technology , Huainan 232001, China)

Abstract: From the current situation of teaching assembly language, this paper is on the construction work of “assembly language” Excellent Courses and extracts the experiences of building "assembly language" Excellent Course from the teaching staff, teaching resource as well as course reform measures.

Key words: assembly language; excellent course; course construction; course reform

猜你喜欢
精品课程课程建设教学改革
高等职业教育国家精品课程建设与应用现状的调查研究
“误差理论与数据处理”课程建设的实践与思考
基于卓越计划的金属结构材料课程实践化改革与建设
资源、生态与环境学科群体系下普通地质学课程建设思考
中高职一体化课程体系建设的探索与实践
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究
微课时代高等数学教学改革的实践与探索
加强精品课程建设 促进教学质量提高