时间:2023-01-19 02:31:13
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇汇编语言范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
关键词:加密算法DES汇编语言
目前在金融界及非金融界的保密通信中,越来越多地用到了DES算法。DES(DataEncryptionStandard)即数据加密算法,是IBM公司于1977年研究成功并公开发表的。随着我国三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易中的密码键盘等,均用到DES算法。由于密码键盘不可能使用高级语言,所以用汇编语言实现DES就非常实用。
1DES算法的简单原理
DES是一种分组密码。假定明文m是由0和1组成的长度为64位的符号串,密钥k也是64位的0、1符号串。
设:M=m1m2m3…m64
K=k1k2k3…k64
加密过程可表达如下:
DES(m)=IP-1·T16·T15…T2·T1·IP(m)
其中:IP(m)是初始置换,IP-1是逆置换,T16~T1是16次迭代。
(1)初始置换IP
功能是把输入的明文m按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则如下:
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7
(2)逆置换IP-1
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换。逆置换满足:
IP·IP-1=IP-1·IP=I
逆置换正好是初始置换的逆运算。
(3)T16~T1的迭代计算
DES的迭代算法采用模2加法。
在通信网络的两端,双方约定了一致的密钥。在通信的源点用密钥对核心数据进行加密并形成密文,然后,以密文的形式在公共通信网中传输到通信网络的终点。数据到达终点后,用同样的密钥对密文数据进行解密,便再现了明文形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
2汇编语言的实现
用汇编语言实现DES算法有它的优势也有它的难点。优势是51汇编的位操作可以方便地实现置换功能。但用汇编语言实现算法的迭代运算及循环功能比较烦琐。在用51汇编实现DES的过程中,我编写了几个子程序,组合起来可实现DES算法加密。在这里写出一些思路,有需要的同行可与我联系(E-mail:zhoubin@)。
8031有16个可以位寻址的寄存器,可放置128位的数据,利用它可实现DES的转置功能。将明文m放入寄存器27H~20H中,即位地址00H对应m64,3FH对应m1。利用标志寄存器C可实现置换与逆置换程序。在DES的16次迭代过程中,要实现公式:
Li=Ri-1;Ri=Li-1f(Ri-1,ki)
的运算过程,其关键在于f(Ri-1,ki)的功能。f是将32位的输入转化为32位的输出。其中含3项技术:
①将32位膨胀为48位的E功能。该项功能可用类似于置换功能的子程序编写。
②48位子密钥的生成。为了便于51汇编生成子密钥,可以使用主机用串口下传的方式,由主机将16个子密钥传给89C52为核心的单片机,然后存入80H~FFH中。如果密钥是固定的,则可直接将子密钥固化在89C52的Flash中。
③S盒的功能是将48位的输入再次缩为32位。具体实现是将S盒表存入89C52的Flash中,每次通过查表求得S输出的结果。
下面列举其中的几个子程序。
(1)IP置换子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:将入口寄存器的数据按置换表换位。
IP:MOVC,06H;将m58送到进位标志中
MOV7FH,C;将进位标志送m1中
MOVC,0EH;将m50送到进位标志中
MOV7EH,C;将进位标志送m2中
;重复,按表编写MOVC,31H;将m15送到进位标志中
MOV41H,C;将进位标志送m63中
MOVC,39H;将m7送到进位标志中
MOV40H,C;将进位标志送m64中
RET
(2)逆置换子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:将入口寄存器的数据按逆置换表换位。
IPRVS:MOVC,18H;将m40送到进位标志中
MOV7FH,C;将进位标志送m1中
MOVC,38H
.
.
.
RET
(3)异或子程序
;入口寄存器:272625243F3E3D3C,出口寄存器:2B2A2928
;功能:将寄存器27262524的内容和寄存器3F3E3D3C的内容异或。结果保存在2B2A2928寄存器中。
XORLF:MOVA,3FH;将高8位异或
XRLA,27H
MOV2BH,A;放入出口处
MOVA,3EH
XRLA,26H
MOV2AH,A
MOVA,3DH
XRLA,25H
MOV29H,A
MOVA,3CH
XRLA,24H
MOV28H,A
RET
(4)S盒子程序
;入口寄存器:(MSB)2F2E2D2C2B2A2928,出口寄存器:(MSB)27262524
;功能:48位32位
S6TO4:MOV20h,2FH;取出高位数据
LCALLS162345;调用实现Si(b1b6,b2b3b4b5)
;的功能子程序
MOVDPTR,#S1TAB;S盒表的首址
MOVA,21H;取出第几个S盒
LCALLDPTRADD
CLRA
MOVCA,@A+DPTR;求出S盒的表地址及S结果
SWAPA
MOV27H,A;保存高位结果
MOV20H,2EH
LCALLS162345
;重复
关键词:汇编语言;实验教学;DEBUG;指令系统
1汇编语言教学现状
汇编语言是计算机专业的核心基础课程,是一门软硬件结合的主干课程,与计算机组成原理、单片机、接口技术等其他课程都有着重要的联系。汇编语言在出现后的近半个世纪里,指令体系不断扩展,研究领域不断发展变化。在今天看来,尽管C/C++等编译器运行速度很快,编译生成的目标代码运行速度也很快,但用汇编语言编写的源程序汇编后得到的目标程序仍在时间和空间两个方面体现出较大的优势,运行速度更快,目标代码更短。在计算机自动控制、仪器仪表和家用电器等的应用程序日益发展的今天,速度快、功能强的汇编语言更是占有非常重要的地位。对计算机相关专业的学生来说,汇编语言是需要掌握的重要专业基础知识之一。
汇编语言是一种以“指令助记符”为特征的低级语言,能直接控制底层机器的操作,同时又为操作系统和高级语言提供支持。然而随着硬件技术的飞速发展,处理器的性能和存储器的容量达到了相当的高度,计算机体系结构由标量计算机向阵列计算机、并行计算机和数据流计算机发展,多任务的操作系统(Windows、Unix、Linux)为应用程序提供了广阔的平台。而在操作系统中,大部分代码采用高级语言(C/C++)编写。特别是随着网络技术的发展,基于Internet的程序设计与开发成为了当前的热点,学生对在C/S与B/S结构下基于J2EE虚拟平台的程序设计的学习热情高涨,汇编语言所占的份量大大降低。
在汇编语言的教学过程中,普遍存在的问题就是主流的微型计算机已经进入了32位和64位的时代,多任务的操作系统取代了DOS,而绝大多数高校汇编语言课程仍然是单任务操作系统DOS下的8086汇编语言,主要教学内容是在学习8086CPU基本结构以及指令集的基础上,在DOS环境下通过软中断对BIOS和DOS系统功能的调用来开发应用程序,尽管以386体系结构为基础的Pentium处理器也进入了教材,但是对于386体系结构的讲解仍是以实模式为主,对于保护模式的知识应用能力甚为空泛,给学生的印象是所学的汇编语言知识跟不上时展的步伐。又因为汇编语言和机器的体系结构结合紧密;使用者需要对计算机组成、硬件控制和指令解释过程有比较清晰的掌握;如果程序的移植性不好,程序的编译调试就比较麻烦;编写出吸引人们感官的程序就比较困难。
因此,学生在汇编语言的学习中产生厌烦情绪,对汇编语言的学习热情普遍不高,有些高校则开始采取各种手段从教学内容和方法等方面对汇编语言课程进行改革。如北京理工大学计算机学院从教材建设、教学内容和方法等方面进行了大胆的改革,有效地提高学生的学习积极性[1-2]。
2教学方法研究
为了提高学生学习汇编语言的积极性,教师应针对汇编语言学习的难点来一一破解。对部分同学认为汇编语言知识跟不上时展步伐这一误区,教师应该在上第一节课时就要予以更正,要告诉学生汇编语言的应用领域,如目前流行的嵌入式系统的硬件的检测和控制部件都是由汇编语言完成的,还可以找适当的机会给学生介绍一下计算机病毒的工作机理,从而提高学生学习汇编语言的积极性。
对于汇编语言和机器的体系结构结合紧密、抽象性强、难于理解的问题,教师在讲解指令系统时,要与CPU的功能结构结合起来,把地址、数据和控制信息的传递要通过图示进行分解。
如讲解指令 MOV AL,[3008H],这是一条传送类指令,即将偏移地址为3008H的存储单元中的信息送回CPU中的累加器AL寄存器中。如果这样讲,学生不易明白,因为他们之前学过的语言都没有涉及到CPU的内部部件,而且在程序中也没有直接提供存储器的地址信息。为了让学生明白这条指令的含义,可以在课件中画出CPU的功能结构图(图1),然后通过动画演示整条指令执行的全部过程:从指令队列中读取指令,通过译码器译出指令的功能;将偏移地址3008H通过内部总线送至总线接口部件;通过20位的地址形成部件与16位数据寄存器DS的内容结合形成20位的物理地址,通过控制部件发出存储器读命令;存储器将所存储的信息通过数据总线送至总线接口部件,通过内部总线送至AL寄存器中。每一步都要用图显示出数据的流向以及时序。
图1CPU功能结构图
教师在讲解指令系统初期对某些具有代表性的指令进行上述详细、逼真的讲解,可以极大地增强课程的可理解性,提高学生对指令的感性认识,继而增强学生的学习兴趣。
学生编写汇编程序的初期,往往会认为程序调试麻烦,这是因为汇编语言相对于其他高级语言来说比较抽象,实验结果不容易检验造成的。简单的汇编语言实验结果往往是存储在CPU内部的寄存器或者内存当中,不能够很直观的看到,如果通过DEBUG就可以观察到寄存器的内容和存储器的内容,同时通过T命令,可以跟踪每条指令执行后寄存器和存储器的变化,这是调试程序和发现逻辑错误非常有效的手段。它要求学生要灵活掌握DEBUG的各种功能,记住它的各种命令,因此,需要教师在课堂上花费一定的时间来讲解各种命令的用途,同时需要演示它们的使用方法。一旦学生真正地掌握了DEBUG的应用方法,对深入了解计算机的工作原理和指令系统将起到直接和不可替代的作用
3实验教学平台设计
实验教学是检验和巩固已学知识的一个必要手段,是培养学生创造性的关键环节,也是教学改革的一个重要方面。然而学生在汇编语言这门课程中,对所学知识缺乏必要的感性认识,因此实验环节在整个教学活动中就占据了举足轻重的地位。
然而,传统的80X86汇编语言实验一般都是在DOS环境下进行的[3],具体过程如图2所示,用编辑程序(如EDIT命令)编写源程序,然后用编译程序(MASM命令)将源程序编译成目标程序(即.obj文件),然后用连接程序(LINK命令)将目标文件转换成可执行文件,在DOS环境中执行这些命令时,后面往往需要紧跟各种参数,这些会给学生带来很多额外的负担,而且在一个源程序进行编译连接的过程中往往不能一次通过,可能会出现各种错误,这样上面的过程会多次的重复,因此在DOS的命令行上要频繁进行上面的操作,非常的繁琐,容易引起学生厌倦。
目前流行的操作系统是Windows,学生对DOS的使用非常陌生,DOS的各种命令也都很少使用,因此在做汇编实验时,学生往往会频繁在Windows和DOS之间切换,这样大大的影响了学生上机的效率,使得用汇编语言编程变成了一件非常不舒服的事情[4]。
因此作者所在的教研组开发了一个基于Windows操作系统的以Intel 80X86为指令系统的汇编语言集成环境,该集成系统集编辑、编译、连接和调试于一体的实验开发平台。开发人员可以在该实验平台上编写源程序,然后用户只要直接用鼠标点击菜单上的相应命令,就可以完成程序的汇编和连接工作,直接生成可执行文件,所有工作一次性完成。并且同时把汇编和连接时产生的输出信息输出到输出窗口中,供用户参考,而不会输出到DOS的命令界面上去,省去了不同操作环境之间的频繁切换。当然实验平台包含了文件导入功能,如果需要编辑其他未汇编的汇编程序,可以在该平台中导入用其他文本编辑工具编写的汇编语言原程序进行汇编,只要导入的原代码格式是纯文本文件即可。
这一开发平台很好地解决了汇编语言的开发与操作系统之间的矛盾,运用在课程的实验教学中,效果良好,大大提高了学生做实验的积极性。
4实验教学的组织
由于DEBUG是关键的调试程序,因此教师需要专门设计若干个小实验让学生对DEBUG有一个深刻的了解和认识,通过熟悉DEBUG的过程掌握指令的功能和各种寻址方式。
由于汇编语言不同于其他高级语言,因此直接让
学生来编写汇编语言程序并不太现实,应该设计一些具有一定功能的小程序,让学生来验证,通过模仿和验证逐渐掌握汇编语言的编程规律和方法。同时让学生在现有正确程序的基础上故意安排几个错误,重新进行编译和连接,使学生熟悉汇编语言编译系统所报的各种错误信息的含义,以及修改方法,这样当学生调试自己所编写的程序时,遇到报错信息,就会心里有数而不至于手足无措了,这样会大大提高学生编写汇编语言程序的自信心和实践能力。
为了提高学生的学习兴趣,DOS功能调用实验是必不可少的,这需要选取一些学生感兴趣的、具有观测效果的实验。对于能力比较强的学生,可以让他们试一试底层操作,如BIOS调用、I/O操作,对显示器以及硬盘的控制等,那样会令这些学生体会到学习汇编语言的快乐。
5知识的提升
学生在学习汇编语言课程之前,通常都已经学习了C语言,在实际中,汇编语言和C语言混合编程的应用也比较多,因此可以作为扩展内容,让有能力和有兴趣的学生选做一些混合编程的实验,使学生更深刻的体会到学习汇编语言的用途,提高学生的动手能力和实践能力。学有余力的同学可以选作一些Win32汇编语言的程序设计,由于Win32汇编程序设计方法和思路与当前主流的程序设计技术一致,具有较强的实用性及先进性,因此可以对学生的知识结构体系进行提升和延续。
6结语
汇编语言是计算机专业一门重要而又难学的课程,这要求教师必须不断学习、创新,在改革教学模式的同时努力培养学生的创新精神和动手实践能力。
参考文献:
[1] 张雪兰,谭毓安,李元章. 汇编语言程序设计课程教学改革与创新能力培养[J]. 计算机教育,2008(8):22-23.
[2] 刘辉. 汇编语言实验教学探讨[J]. 计算机教育.2008(4):11-13.
[3] 王正智. 8086/8088宏汇编语言程序设计教程[M]. 北京:电子工业出版社,2006:203-206.
[4] 焦殿科,郭延锋. 计算机专业“汇编语言程序设计”课教学改革研究与探讨[J]. 辽宁工学院学报,2007,9(6):123-125.
Discussion of Assembly Language Teaching
WANG Xiao-ye, WEN Xian-bin
(School of Computer and Communication Engineering, Tianjin University of Technology, Tianjin 300191, China)
汇编语言与cpu有关。
汇编语言是专门为某一类CPU而设计的,所以汇编语言与CPU类型息息相关,当然至于型号却是不一样的。高级语言与CPU基本上是关系不是很大的,但完全没有关系也不是那么一定的,比如C51就是专门为51单片机这类CPU而设计的高级语言。
汇编语言,即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。
(来源:文章屋网 )
关键词 微机原理与接口 汇编语言与C语言比较
中图分类号:TP368.1 文献标识码:A
0 引言
“微机原理与接口”是信息学科的一门必修课,主要介绍8086微处理器的原理及其扩展接口的应用。然而8253芯片是接口芯片中的一个重要组成部分,因此本文就从8253出发,阐述用汇编语言和C语言对其开发,让学生更好地用软件对硬件进行开发。
1 8253知识点进行描述
8253工作方式:
1.1 频率发生器
在该方式下,计数器装入初值,开始工作后,计数器的输出OUT将连续输出一个时钟周期宽的负脉冲。两负脉冲之间的时钟周期数就是计数器装入的初值。在这种初始方式下,门控信号GATE用作控制信号。当GATE为低电平时,强迫OUT输出高电平。当GATE为高电平时,分频开始。时序波形如图1所示。
1.2 方波产生器
当装入数值为N时,若N为偶数,则完成N/2计数时OUT为高电平,完成另外N/2计数时OUT低电平,一直进行下去。若N为奇数,则(N+1)/2计数时OUT保持高电平,而(N-1)/2计数期间OUT为低电平。在GATE为高电平的时,产生对称方波。时序波形如图2所示。
1.3 C语言的优点
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。由于C语言的易可移植性,在嵌入式系统里面应用广泛。
1.4 汇编语言的优点
汇编语言是面向机器的程序设计语言。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
总之,虽然汇编语言执行起来速度比较快,但开发起来比较麻烦,尤其是8086架构里面只有有限的寄存器,在开发大型的软件时就会显得捉襟见肘,采用C语言开发就可以提高代码的质量,用一句C就可以代替好几句汇编语言,会让开发人员轻松很多,更会让很多初学者对嵌入式系统的开发产生兴趣。
2 实例:C语言方式下和汇编语言下控制8253
8253控制端口地址为 203H;计数器0地址为 200H;计数器1地址为 201H;计数器2地址为 202H。
outportb(0x203, 0x56)
//56H(01010110B).选择计数器1,低八位读写,方式3(方波发生器),二进制计数.
outportb(0x201, 8); // 向计数器1写入低八位初值8H(00001000B).
outportb(0x203, 0x94); // 向8253控制端口写控制字94H(10010100B)。选择计数器2,低八位后读写,方式2(分频脉冲发生器),二进制计数。
outportb(0x202, 6); // 向计数器2写入低八位初值6H(00000110B).
如果使用汇编语言程序,则变成
MOV DX,203H;指向控制端口
MOV AL, 56H ;设置工作方式
OUT DX, AL;往端口送数据
MOV DX, 201H;指向计数器1
MOV AL, 8;给计数值
OUT DX, AL;往端口送数据
MOV DX,203H;指向控制端口
MOV AL,94H;设置工作方式
OUT DX,AL;往端口送数据
MOV DX,202H;指向计数器2
MOV AL,6;给计数值
OUT DX,AL;往端口送数据
从中可以直观地可以看出,如果使用汇编语言对8253写入控制字MOV DX,203H,MOV AL,36H,OUT DX,AL,需要三条语句完成,而且需要3个寄存器,并且寄存器本来就是很少的了,这样很浪费资源;用C语言只需调用outport函数:outport(0x203,0x36),C语言的代码长度短了很多,并且也方便学生们掌握,使学生在嵌入式软件开发上产生更多的兴趣,为大型嵌入式软件的开发奠定坚实的基础。
3 结束语
根据本文比较C语言和汇编语言对8253的开发,会让更多的学生明白C语言作为一种面向结构的语言对嵌入式系统开发的优胜性,希望越来越多的学生在微机原理和接口的实验课上,采用C语言进行开发,削减代码量,提高效率。由于目前我国正处于信息化高速建设的时代,对嵌入式系统的开发水平也决定着我国在世界上的影响力。因此,让更多的学生学会用更高效的语言进行嵌入式系统软件的开发显得尤其重要,本文就此发表自己的看法。
参考文献
[1] 马义德,张在峰,徐光柱,杜桂芳.微型计算机原理及应用(第二版).北京:高等教育出版社,2001.
[2] 王永山,杨宏五.微型计算机原理与应 用(第二版).西安:西安电子科技大学出版社,1999.5.
关键词:汇编语言 二进制 十进制 十六进制 显示
1 引言
如果要处理一个与数相关的问题,不管是中间的、还是最终的结果,我们都希望能直观地在显示器上显示出来。数字计算机中的数据存储方式是由“0”和“1”组成的二进制码串,根据不同的需要,我们往往要求数据的显示形式不一样,如二进制、十进制、十六进制、八进制等等,然而在汇编语言中实现数据的显示没有类似高级语言中的输出格式命令那么方便,对每个数的显示,一般都需要逐位地转换成ASCII码才能调用系统显示功能完成显示,其中,按不同的数制要求,还要先完成数制间的转换。下面我们来探讨一个数如何编程让它分别按二进制、十进制、十六进制的数制形式显示在CTR显示器上。
2 编程思路与算法
以一个16位二进制机器整数为例,它的二进制表示范围是0至1111111111111111B;十进制的范围是0至65535(无符号数),或-32768至+32767(有符号数);十六进制表示范围是0000至FFFFH。为方便说明,假设此数放在BX寄存器中,下面介绍按不同进制形式显示的编程思路和算法。
2.1 按二进制形式显示
二进制只有“0”和“1”两个数字,它们的ASCII码分别是30H和31H,只要逐位判断是“0”还是“1”,然后转换成对应的ASCII码即可。
实际编程时,对于BX中的十六位二进制数,可设置一个循环次数为16的循环体,用向左的移位指令,通过CPU标志寄存器中的CF标志,由高位到低位逐位判断、逐位取ASCII码值、逐位显示。当然也可以先将十六个数位都转换成一ASCII码串放入内存缓冲区后再按字符串方式显示,要注意两种方法在显示时系统调用的功能号不同。
2.2 按十进制形式显示
首先要完成二进制到十进制数的转换,一般采用“除10取余”法来完成,其大致过程如下:将待转换的数(在BX中)除以10,得到第一个商和余数,此第一个余数就是所求的十进制数的个位;再用第一个商除以10,得到第二个商和余数,此第二个余数就是所求十进制数的十位;……;重复这一过程直至商为0,此时的余数就是所求十进制数的最高位。
在内存中分配一缓冲区,用来存放以上分离出来的十进制数的每一位,然后再逐个转换成ASCII码,转换成ASCII码的过程很简单,就是给每个十进制位加上30H即可;最后送显示器输出。从转换的过程可以看出,先分离出来的是十进制数的低位,要后显示;后分离出来的是十进制数的高位,应该先显示。因此在编程时,我们可以利用堆栈操作中“先进后出、后进先出”的特性,当分离出各十进制位时依次入栈,要逐个转换成ASCII码送显示时依次出栈。
2.3 按十六进制形式显示
十六进制与二进制有很好的对应关系(每4位二进制数和1位十六进制数存在一一对应关系),显示时只需将原二进制数(在BX中)每4位划成一组,按组求对应的ASCII码送显示器即可。
ASCII码与十六进制数字的对应关系为:30H~39H对应数字0~9,41H~46H对应数字A~F,从数字9到A,其ASCII码间隔了7H,这一点在转换时要特别注意。为使一个十六进制数能按高位到低位依次显示,实际编程中,我们对先BX中的数每次循环左移一组(4位二进制),然后屏蔽掉当前高12位,对当前余下的4位(即1位十六进制数)求其ASCII码,要判断它是0~9还是A~F,是前者则加30H得对应的ASCII码,后者则要加37H才行,最后送显示器输出。以上步骤重复4次,就可以完成BX中数以4位十六进制的形式显示出来。
3 汇编语言源程序实例
假设要将BX寄存器中的数分别按无符号二进制、十进制和十六进制显示在屏幕上,下面给出实现的汇编源程序,均为子程序方式,为了简明,略去现场的保护与恢复操作。
3.1 按二进制形式
DISPBXB PROC NEAR
MOV CX,16
LP:ROL BX,1
JC D1
MOV DL,30H
JMP OUTP
D1:MOV DL,31H
OUTP:MOV AH,2
INT 21H
LOOP LP
MOV DL,’B’ ;显示字母“B”
MOV AH,2
INT 21H
RET
DISPBXB ENDP
设(BX)=7FFFH,则输出格式为0111111111111111B,后面的大字字母B表示二进制形式,显示结果固定为十六位。
3.2 按十进制形式
DISPBXD PROC NEAR
MOV SI,10
XOR CX,CX
MOV AX,BX
NEXT:MOV DX,10
DIV SI
PUSH DX
INC CX
CMP AX,0 ;商为0则完成转换
JNZ NEXT
OUTP:POP DX
ADD DL,30H
MOV AH,2
INT 21H
LOOP OUTP
RET
DISPBXD ENDP
此程序在转换和显示时的循环控制方式和二进制形式的例子不一样,即显示结果的位数是不固定的。若(BX)=7FFFH=32767,则显示结果为5位:32767;若(BX)=00FFH=255,则显示结果为3位:255,与十进制的有效位数相同。
3.3 按十六进制形式
DISPBXH PROC NEAR
MOV CL,
MOV CH,4
NEXT:ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL OUTP
ADD AL,07H ;是A~F,要多加7
OUTP:MOV DL,AL
MOV AH,02H
INT 21H
DEC CH
CMP CH,0
JA NEXT
MOV DL,’H’ ;显示字母“H”
MOV AH,2
INT 21H
RET
DISPBXH ENDP
此程序的显示格式固定为四位,最后加上字母“H”表示为十六进制形式。设(BX)=7FFFH,则显示结果为:7FFFH;若(BX)=00FFH,则显示结果为:00FFH。
4 对有符号数显示的扩展应用
CMP BX,0
JGE ZS
MOV DL,’-’
MOV AH,2
INT 21H
ZS:CALL DISPBXD
5 结束语
以上介绍了在汇编语言程序设计中,根据不同的需要,如何把机器数按不同数制形式显示出来的方法,对于不具体介绍的八进制形式,只需将十进制显示的子程序(DISPBXD)中的除数由10改为8即可。各种方法中,主要是数据转换的方法不同,显示的功能调用指令是一样的,当然还可以用其它(比如字符串方式)方法调用显示功能,这里不再详细介绍。
参 考 文 献
[1]沈美明,温冬婵.IBM-PC汇编语言程序设计.北京.清华大学出版社.1991.
[2]Barry B. Brey. Programming the 80286,80386,and Pentium-Based Personal Computer.北京.电子工业出版社.1998.
关键词:汇编语言 高级编程语言 历史 趋势
中图分类号:TP313 文献标识码:A 文章编号:1003-9082(2017)06-0002-02
一、编程语言的发展历程
自从1946年世界上第一台电子计算机问世,人类和机器的交流方式和语言就成为了软件工程师和计算机从业者的主要研究方向,更有效更简便的编程语言成为了软件工程师的新宠儿,伴随着计算机的飞速发展,计算机的硬件升级速度也越来越快,对编程语言的要求也日益严格。在过去的几十年,编程语言有了长足的发展,至今已经有四代语言问世。大量的编程语言为了满足不同领域的编程要求和软件功能,经历了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试图寻找一个能够适应所有编程环境的通用语言,但是却没有一次成功。程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。
1.机器语言
计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0”和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表或者手册才能理解,使用的时候非常痛苦,尤其当你需要修改已经完成的程序时,这种看起来无序的机器语言会让你无从下手,也很难找到程序的错误。而且,不同计算机的运行环境不同,指令方式操作方式也不尽相同,所以当你在这种机器语言就有了特定性,只能在特定的计算机上执行,而一旦换了机器就需要重新编程,这极大的降低了程序的使用和推广效率。但由于机器语言具有特定性,完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。
2.汇编语言
通过我对机器语言的介绍,不难看出机器语言作为一种编程语言,灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言,即第二代计算机语言。但是这时候,计算机的硬件还是那些硬件,所以计算机还是不认识那些字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
3.高级语言
在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素――程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。在计算机还很稀缺的50年代,Q生了第一个高级编程语言。当时计算机的造价不菲,但是每天的计算量有有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。同时,因为资源的稀缺,计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简的编程语言的追求。用高级编程语言编写的程序需要经过翻译,翻译成机器所能识别的二进制数才能由计算机去执行。虽然,高级编程语言编写的程序需要一些时间去翻译代码,从而降低了计算机的执行效率,但是实践证明,高级编程语言为工程师带来的便利远远大于降低的执行效率。经过各软件工程师和专家的不懈努力,1954年,第一个完全意义的高级编程语言―FORTRAN问世了,他完全脱离了特定机器的局限性,是第一个通用性的编程语言。从第一个编程语言问世到现今,共有几百种高级编程语言出现,很多语言成为了编程语言发展道路上的里程碑,影响很大。比如:FORTRAN、BASIC、JAVA、C、C++、python等。高级编程语言也从早期的控制信号变成了现在的有结构有格式的程序编写工具,C++等语言的出现更是开启了面向对象编程语言的新章。同时伴随着软件编写效率的提高,软件开发也逐渐变成了有规模、有产业的商业项目。
二、高级编程语言、汇编语言和机器语言的区别
根据上面的简单介绍,我们可以说作为编程语言的一种划分,高级编程语言和低级语言构成了一般意义上的计算机语言。而高级编程语言又是和汇编语言对比而言。高级编程语言作为一种通用的编程语言,它的语言结构和计算机本身的硬件以及指令系统无关,它的可阅读性更强,能够方便的表达程序的功能,更好的描述使用的算法。同时,它更容易被初学者所掌握,很容易学习。而且容易学习掌握。但是高级编程语言因为是一种编译语言,所以他的运行速度比汇编程序要低,同时因为高级语言比较冗长,所以代码的执行速度也要慢一些。所以说汇编语言更适合编写一些需要高效率运行的程序或者对程序代码的长度又要求的程序,同时在直接控制硬件方面也能够起到很好的作用。
高级编程语言,作为用户层面的程工具,用户并不需要去了解硬件的结构,而是去用逻辑的语言去实现想要的目标,但是因为高级编程语言的架构高于汇编,所以不能编写直接访问硬件资源的系统程序,因次,高级编程语言必须要调用汇编语言编写的程序来访问硬件地址。
机器语言(machine language)就是一种指令集了,它是一串数据代码,也可以叫做机器码。他能够由硬件直接读取,同时硬件返回的数据也是这种二进制代码。机器语言是作为直接控制硬件的桥梁,连接这软件和硬件两个不同领域的技术。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言执行速度是上述语言中最快的,而且无需编译直接执行。用机器语言编写程序,编程人员不仅要对所有二进制数字所指代的指令烂熟于心,而且还要手动为程序分配存储空间以及输入和输入。所以这是一个十分复杂的过程,即使编写简单程序也好耗费大量的人力。而且不论是代码还是输出,全是“0”和“1”的数字串,在后期的阅读和维护也会非常困难,所以机器语言已经慢慢的推出了主流编程语言的领域。
三、汇编语言和高级编程语言的优缺点
1.汇编语言的优缺点
汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:
1)可以轻松的读取存储器状态以及硬件I/O接口情况
2)编写的代码因为少了很多编译的环节,可以能够准备的被执行
3)作为一种低级语言,可扩展性很高
缺点:
1)因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长已经编写的困难
2)因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG而且调试起来也不容易
3)就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4)因为机器的特殊性造成了代码兼容性差的缺陷。
2.高级编程语言的优点
因为高级编程语言很多,我们就拿C语言展开论述。C语言是一个面向过程的语言,用户根据自己的需求来调用函数或创建目标。因为明确的目标性以及理解容易,一个新手很容易去学习C语言。同时C语言因为发展的历史,拥有很多函数库,用户可以根据自身的需求在代码中加入头文件来调用这些函数来实现自己的功能,当然使用者也可以根据自己的喜好编写函数来在后续的代码中调用,关键字像if,else,return,main,end等这些简单易懂的单词也使得C语言记忆和理解起来更加容易。作为一个通用性很高的编程语言,C语言的可移植性是它出色的优点之一,你可以在任意一台电脑、一个设备上运行程序而不需要重新编译。
四、对未来编程语言的展望
通过上面的介绍,我们不难发现面向对象思想在编程设计中占有很重要的地位,同时现在编程语言的多元化也告诉我们,未来的语言发展不会是一枝独秀,也不会是单纯的语言发展,而是以完全面向对象的姿态你展现我们的现实世界。它将更容易被工程师学习和使用,人们完全可以通过简单的操作来完成复杂的编程。这就得出了未来语言发展的第一个趋势--面向对象,由计算机来提供现有的函数功能、封装结构。而工程师只需要去拿现成的函数来调用,大大提高了代码的利用率。同时简单性也成为未来追求的目标,如果一个有简单计算机知识的人只需学习一些基本的操作就能编写适合于各种情况的应用程序,这样创造和编写的成本将会大大降低。在互联网高速发展的今天,安全也将成为了代码编写中必不可少的因素,一个更安全更具有保密性的语言也是未来的需求。综上在这样一个“百花齐放百家争鸣”的编程语言环境,只有能真正给使用者带来便利的语言才会走的更远走的更好。
参考文献
[1]张t蕊,C++教学方法及学习方法的调研与分析,计算机教育第23期
[2]王文东,李竹林,尚建人,汇编语言与C语言的混合程序设计技术,计算机发展第十六卷第八期
[3]路士兵,浅谈计算机汇编语言的特点和学习方法,科技创新导报2014NO.20
关健词:汇编语言;案例教学法;考核方法
中图分类号:G642文献标识码:A文章编号:1009-3044(2011)10-2459-03
Research on Teaching Method of Assembly Language and Programming
HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing
(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)
Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.
Key words: assembly language; case methods of teaching; methods of assessment
《汇编语言程序设计》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。 在实际应用当中,可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,还可以直接被用于嵌入式软件开发之中,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。因此,搞好《汇编语言程序设计》课程的教学很重要,如何搞好该课程教学值得广大教师们探讨和总结。
1 现状分析
目前,汇编语言课程教学存在的如下问题:
1)绝大多数同学对汇编语言课程的目的认识不够,且错误地认为汇编语言已经过时,没有用,从而对这门课程的学习没有兴趣。
绝大多数学生把汇编语言作为一门纯粹的编程语言课程来对待,这是一个较大的误区,这从思想上和意识上把汇编语言放到一个普通的程序设计软件的位置,这样势必难以达到较好的教学效果。而本课程的一个主要目的就是让学生学习与认识基本存储控制思想、底层设备操纵方法、系统输入输出特点等内容,为学生在高层应用与底层的系统结构组织与实现之间架设一座桥梁,使他们能够建立一个完整的系统思想体系,为将来更好地应用和发展打下一个良好的基础[1]。
另外,目前直接用汇编语言编写软件的情况的确不多,所以有不少学生都错误地认为在高级语言盛行的时代汇编语言已经过时且在企业的实际应用中没有用途,因此对这门课程没有兴趣。
2)汇编语言难学,挫伤了学生对该课程的学习热情。
由于汇编语言程序设计涉及到计算机底层硬件,学习内容枯燥,需要记忆的内容繁多,起步比较困难,不像计算机高级语言起步容易并在现在的应用程序设计中占有绝对的优势,相对于汇编语言,高级语言接近人类的自然语言,易学易用,很多功能用高级语言里只要一条语句就可实现,而用汇编语言则要好几条甚至几十条语句才能实现,这在很大程度上挫伤了学生对该课程的学习热情。
3)实验内容枯燥无味,实验考核方法不够好,实验课效果差。
当前绝大多数学校的实验与实践环节的组织对学生学习汇编语言没有起到太大的帮助,汇编语言实验内容仍然停留在程序三大结构、数据组织与数值计算、代码转换和数制转换等方面,这会导致学生对本课程实验和实践环节没有兴趣,不能激发学生的学习热情。另外,很多实验课基本上是学生做实验,有问题请教老师,教师指导,实验课结束就意味着同学们都通过了该实验这种方式进行的。很显然这种方式对自我要求不高的学生没有任何监督力,实验课教学效果差是很自然的事情。
4)课程考核方法不够完善,对学习过程的考核不够严谨。
传统的考核方法是按照期末考试占70%,平时成绩占30%来计算总评成绩的,有点甚至直接用期末考试成绩代替总评成绩。显然这些方法对学习过程的表现考虑不够,这就导致有些平时不爱学习的同学,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。
2 问题的解决方案
1)引领学生认识汇编语言课程的重要性,结合企业对汇编语言人才的需求和实例激发学生学习汇编语言的兴趣。
人们常说“兴趣是最好的老师”,事实的确如此,当学生们对课程产生了兴趣时他们会很主动地去学习,遇到困难会积极思考。为了激发学生的学习兴趣,作者在教学中使用了如下方法:
第一、强调《汇编语言》课程的重要性。《汇编语言》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。同时也是我们学习高级语言的利器[2]。
第二、介绍汇编语言在计算机系统维护等方面的实际应用,并选择有代表性的问题现场演示,让学生亲身体会到汇编语言的用途。虽然目前用汇编语言编写软件的情况的确不多。但是在实际应用中可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,另外在一些嵌入式软件开发中有时还需要用到汇编语言,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。
第三、用与生活中密切相关的实例现场演示,激发兴趣。
演示事先准备好的用汇编语言开发的与日常生活密切相关的应用实例,如:交通灯系统,空调单暖温度控制器,以及银行排队系统等等。使学生亲身体会到汇编语言的用途,从而彻底扭转学生们的编语言没有用的思想,激发学生学习汇编语言的兴趣。
第四、强调企业中需要懂汇编语言的人才。空口无凭,可以打开百度或Google的网页,输入“汇编语言 招聘”进行搜索就会发现的确有不少企业在招聘懂汇编的高级人才且待遇丰厚。亲眼见到上述企业的招聘广告,学生会深刻体会到《汇编语言程序设计》决非无用课程。
教学的实践表明:当学生明白了该课程的重要性和学习该课程的目的,学生们就会觉得学好该课程是很有必要的;而当学生们亲眼见到汇编语言在计算机维护等方面的实际应用和用汇编语言开发的与生活中密切相关的应用实例的演示时,他们就会体会到汇编语言的用途,激起他们的兴趣;最后当学生们看到网上不少企业在招聘懂汇编的高级人才且待遇丰厚时,学生们就会真正感受到汇编语言课程的魅力,激起他们更大的学习兴趣。
2)通过合理安排教学内容和充分利用多媒体教学的优势等方法降低汇编语言学习的难度,提高教学效果。
有了学习兴趣固然是好事,但如果在学习过程中遇到的困难太多或太大都会挫伤学生的学习热情。
而要想学习好一门课程,首先要选择一本好的教材。我们选择教材的原则是:结构清晰、主线特出,内容要有一定的深度和广度,所选例题要有代表性。根据该原则,我们选用普通高等教育“九五” 国家教委重点教材(沈美明,温冬婵 编著.《80X86汇编语言程序设计》. 北京:清华大学出版社, 2001.7)作为本课程的教材[3],该教材也得到了全国广大汇编语言教师的认可。经过多年的教学以及和学生的交流中我们发现,如果直接按照该教材的顺序教学效果不是很好。为了提高教学效果,作者在教学过程中做了如下四方面的改进。
第一,合理调整课程内容的先后顺序,将枯燥无味、需要大量记忆的内容分散到多个章节中讲授。例如:本书第三章 80x86的指令系统和寻址方式,这一章的指令太多,内容太杂,枯燥无味,要记忆的内容多。 若将该章中的串处理指令、控制转移指令等放到第五章的循环与分支程序设计中结合例题讲解效果更好,而将与子程序相关的指令放到第六章讲更合适,因为经过这样调换后,不仅避免了指令集中讲解时的指令太多,太枯燥,难记忆等问题,而且刚刚讲到的指令很快就能在例题中得到应用,学生对指令的理解和掌握会更加深入。第六章的dos系统功能调用内容也应该放到第五章中穿插讲授,这样提前的目的是为了让学生在实验中使用dos系统功能调用,因为上到第五章时就要求学生上机动手编写程序并用到这些知识点。
第二,充分利用计算机综合处理教学中的文字、声音、图象、图形、动画等教学信息,进一步优化《汇编语言程序设计》多媒体教学课件,从而降低汇编语言的学习难度。例如:初学者对于用汇编语言编写程序往往较难入门,可以首先对问题进行分析,用多媒体动画形式画出流程图,并用动画形式将每一步流程图与相应的实现该步骤的汇编指令一一对应起来,教学实践表明这样学生入门起来就要容易得多;再如:在子程序递归调用的讲解中,堆栈中的数据变化是学习的难点,很多学生被搞糊涂了,此时若将指令的逐条执行与相应的堆栈内数据变化情况采用动画的形式表现出来,学生就很容易理解这样难点内容了。像这样的例子还很多,由于篇幅有限,在此就不再列举了。
第三,抓住汇编语言的教学主线(即存储控制思想)进行教学。 汇编语言不像其他程序设计语言采用抽象了的数据,它采储存取控制的方式组对数据进行组织和操作,这既是汇编语言和其他程序设计语言的不同之处,同时也是这也体现出汇编语言与计算机硬件和操作系统之间的有着紧密联系,因此,汇编语言课程的教学主线是存储控制,该主线贯穿于整个教学过程。牢牢把握该主线,有利于掌握汇编语言程序设计的思想精髓和更好地抓住汇编语言面向机器的特点。
第四,采用案例教学法[4]进行教学。在教学当中,我经常使用案例教学法,教学效果很好。案例教学法就是教师使用与教学内容密切相关的实际案例来解决教学中的各种问题,以提高学生思考问题、分析问题和解决问题的能力,培养学生浓厚的学习兴趣的一种教学方法。运用这种教学方法,关键在于教师要准备大量与教学内容紧密相关的案例,并有计划、有意识、灵活地运用到教学实践中去,以取得预期的效果和目的。
3)增强实验内容的实用性和趣味性,增加汇编语言与高级语言混合编程的教学内容,建立合理可行的实验制度和考核方法。
对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。
为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,我们将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。
另外,在实验中还要增加汇编语言与高级语言混合编程的教学内容。高级语言在软件开发中比汇编语言的使用要广泛的多,但是汇编语言有它自己独特的优点:占用空间小,速度快,可以与硬件直接打交道,而且与硬件直接打交道时汇编语言也是唯一的选择。因此要使汇编语言具有更多更好的应用性,就必须增加汇编语言与高级语言混合编程的教学内容,以引导学生在今后的实际应用程序开发中合理使用汇编语言开发出高效率的软件。
实验制度和考核方法的建立有利于进一步提高实验课的学习效果,实验课应使学生做到实验前预习,实验后总结,实验中逐个通过的方法。实验前预习是为了让学生在实验前对实验题目进行分析,查找相关资料,做好充分的准备以便保证学生在规定时间内完成实验;实验中逐个提高的方法是对每个完成实验的同学进行单独提3至4个问题,让其回答,只有回答正确才算该实验通过,这样做的主要目的是防止作弊和查找学生薄弱点;实验后总结则是总结经验和不足之处,达到进一步加深对相关知识点的理解和应用。上述三个环节在实验考核中分别占30%、40%和30%。教学实践表明建立实验制度和考核方法可以在很大程度上促进学生学习。
4)建立既注重期末考试结果又注重平时学习过程的课程考核方法
每门课程学习结束都需要对学生进行考核,有些同学平时不爱学习,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。
为了防止这种现象的产生,在教学中采用“N+2”的考核方法,其中的“N”是教学过程中的考核次数或项目数,“N+2”中的“2”中的“1”是期末考试,另一个“1”是课堂笔记。针对每门课程, N不小于3且不大于5,过程考核可采用的形式有:作业、平时表现、单元(阶段)测试、期中考试、课程论文、课程实验、综合性实验等。一般来说课堂笔记占总分比例不得超过10%,期末考试占总分比例范围为40%~50%,实验占20%,其他的根据实际需要灵活选择。在这种考核方法下,那些临时抱佛脚的同学即便在期末考试中考了六七十分,但也会由于平时成绩不理想也无法通过该课程的考核,也就是说这种考核方法既注重期末考试结果又注重平时学习过程,因此那些原本平时不爱学习的同学在这种考核制度的要求下也不得不抓紧时间学习了。实践表明该考核方法的确行之有效,平时学习的同学越来越多了,知识的掌握程度有了明显的提高,补考的人数显著下降,有些班级甚至没有人需要补考。
3 结束语
本文是作者将自己在教学过程中如何激发学生学习兴趣,通过适当的方法和手段降低课程学习难度,重视和严格要求实验教学,建立合理可行的课程教学制度和考核方法,从而达到改善教学效果的一些方法做了初步探讨,作者深知要想取得更好的教学效果还需要广大教师付出更多的努力,进行更多的探索和广泛的交流。
参考文献:
[1] 陈晓东.《汇编语言》教学方法探讨[J].山西农业大学学报,2006,5(6):70-71.
[2] 掌握汇编仍然是技术高手的必经之路[J].程序员,2004,(10):108-112.