汇编语言课程考试命题与试题库组建研究

发布时间:2022-05-29 11:20:01   来源:作文大全    点击:   
字号:

摘要:本文分析了汇编语言程序设计课程的教学重点,归纳、筛选出该课程的五种考试题型,对该课程的试题库组建与考试系统的设计进行了总结探讨,提出并论述了标准试卷模板、四色原理和人工智能原理在试题库构建、试卷生成、自动判分等问题域的应用问题。

关键词:汇编语言;试题库;在线考试;标准试卷模板;四色原理;AI;专家系统

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

文章编号:1672-5913 (2007) 20-0056-06

1引言

现代课程论首次将泰勒的“评价”原理引入课程论[1],试图通过评价改进课程、改进教学。课终考试则是课程评价的基本手段。考试这根“指挥棒”的作用谁也难以抗拒。毕竟考什么和怎样考会直接影响教师教什么、怎样教,以及学生学什么、怎样学。难怪有访问学者撰文介绍美国某高校的情况,竟是“为考试而教,为考试而学”[2]。仔细读过这篇文章,您会发现“为考试而教而学”的口号并不等同于“应试教育”,而是要通过科学的确定考试内容和考试安排,加强教学的针对性,提高教学质量。目前相对于其他论题,计算机专业的考试研究的文章发表得不多。本文拟对“汇编语言程序设计”课程的考试命题与试题库组建进行探讨。

2教学重点

一门课程的教学重点乃是该课程命题的主要依据。一份好的试卷应能体现对课程基本结构的要求,包括该课程的基本知识、基本规律和基本方法。汇编语言课程的教学重点是什么呢?当然是读、写程序。这是程序设计语言课程的共同点。为了用汇编语言写程序,又必须首先了解计算机硬件结构、数制与编码等基础知识,必须熟悉CPU的指令系统,还要有上机实验紧密配合。现将汇编语言课程教学重点列于表1。

注:表格中*部分内容为本科层次提高内容

3试卷设计

3.1题型设置

基于对汇编语言课程教学重点的分析,笔者从历年试卷中筛选、归纳出五种题型:(1)填空题;(2)判断题;(3)阅读程序题;(4)编程题;(5)实验题。不同的教学内容、教学要求,可通过不同的题型来考查。比如表一中的教学重点1——硬件结构、数制与编码等基础知识,是为了帮助初学者更好地理解指令的功能及执行过程,只需达到基本的了解,更深入的知识会在后续课“微机原理与接口电路”、“计算机体系结构”中展开。因而与之对应的题型采用了填空题。再如,表一中的教学重点2——正确使用指令、伪指令,是读、写汇编语言程序的重要基础。采用判断题,列举使用指令时易混淆、易犯的错误,让学生判断可以达到考查的目的。表一中的教学重点3——汇编语言程序,采用阅读题和编程题两种题型考查。凡是学过汇编语言者都能深切体会到汇编语言程序之复杂。譬如“在屏幕上显示一个十进制成绩分数”这样一个看似简单的问题,需要写一般复杂的程序才能实现。如果将问题改为“在屏幕上显示寄存器AX的值”,就要改用另一段不同的程序来实现。因此,学习汇编语言编程,需要逐个问题、逐个类型去学习,可谓纷繁、庞杂。学生一时很难记住这么多类型各异的编程细节,亦很容易混淆。即使是教师或专业的程序员也不容易记清楚。我有一个朋友专事汇编语言的编程开发,很有些成绩。但是他也坦承,他自己写的程序放下一周后,再拿来看,自己一下子也看不懂了。由此可见,在闭卷笔试中对学生编程的要求要恰当。编程题的问题要典型,要体现基本的程序设计方法。对于较复杂的程序,可以通过阅读程序结合完型填空题来考查。让学生根据程序的功能,选择适当的选项填入程序的空白处,突出了对关键知识点和阅读程序能力的考查。笔者对本学期高职专一、二、三班114名同学的汇编语言课终考试成绩进行统计分析,结果表明阅读程序题具有很好的区分度,它和编程题、总成绩之间的相关性密切[3]。

实验题型是笔者在本学期课终考试所做的一个尝试。以往实验考核笔者多次采用上机实作的方法。学生抽题后,上机编程运行,并将结果存于输出文件中。教师事后根据输出文件的结果正确与否打分。这种考核方法有两个问题,一是当学生人数较多时,教师要检查、监控学生上机操作过程很困难,“忙不过来”。其次是仅凭结果文件判定学生的上机能力,并不完全可靠。如有的学生可能因为某个指令细节记不清,或一时糊涂,给出了错误的结果,甚至“卡壳”未做出结果。其实,这个学生平时实验做得还可以。因此可以根据学生平时的实验表现、出勤率记一个实验分,同时在课终考试笔试试卷中增设实验题。将两者结合起来可以避免片面性、偶然性,使考查更全面、也更能突出重点。实验题包含的内容为:(1)根据汇编时的报错信息,更正程序中的语法错误;(2)正确预测程序运行后,寄存器、存储器的值和实际运行结果比较,以发现程序中的语义错误、逻辑错误;(3)DEBUG命令的使用、调试中遇到的问题及解决方法。

3.2差异化教学在试题、试卷中的体现

高校扩招后,学生的差异性尤显突出。传统的“一刀切”的教学模式,已不能适应新的教学形势的要求。针对不同程度、不同兴趣的学生,实施差异化教学或分层次教学已被提上教学研究日程,这在考试命题中也应予以体现,即奉行后现代课程论的多元评价观[4]——制定基于学生差异性的多元评价标准。如笔者在本学期教学中就划分了基本要求、较高要求和高要求三个层次,并落实到平时学生作业、实验和课终考试中。本学期课终考试中的编程题第1题、第2题第1小题、第2题第2小题分别为基本要求题(10分)、较高要求题(7分)和高要求题(7分)。整个试卷基本要求题量为60%~70%,较高要求题量为20%,更高要求题量占10%左右。

3.3关于多选题题型的讨论

在考试中是否采用多选题及在多大程度、多大比例上采用多选题,是教师在命题、试题库组建时经常讨论的一个问题。多选题在平时教学、练习中运用恰当,会收到很好的效果。而在考试中的运用,要根据不同学科的特点及不同层次教学要求仔细斟酌。汇编语言的教学重点应围绕读、写程序展开,不宜大量采用多选题,否则易误导学生过于注重语法次要细节和知识末节,不利于学生从整体上把握程序,不利于学生读、写程序和实践能力的培养。由此还会产生另一个问题,就是学生为了备考、埋头做多选题,而造成死记硬背的后果。上世纪80年代中期,全国多所部属医学院校曾组织过几轮以多选题为主要题型的统考[5]。为了在统考中达标,取得较好名次,学生放弃了教学实习和非统考科目学习,部分教师也将主要时间集力放在“深入”教室辅导学生做题上,师生共同陷入题海大战之中不能自拔。据医学院校的一位老师介绍,考前演练多选题竞达数千道之多。其结果严重冲击了正常的教学秩序,随后被叫停。前车之辙,后车之鉴。医生不能靠做多选题培养,计算机人才也不例外。现在有些学校提出将课终考试与等级考试、自学考试接轨。其实像等级考试、自学考试这种人多面广的考试,大量采用多选题是为了便于机器阅卷,是“不得已而为之”。如果盲目照搬就会失去办学特色,甚至脱离本校学生实际,造成不良后果。

4题库组建研究

4.1题库组建的必要和途径

题库组建是精品课程建设的重要环节,也是提高命题工作效率、减轻教师负担的现实需求。现在每到期末,每门课的任课教师都要出A、B、C三套考卷,一套用于考试,另一套用于补考,还有一套用于毕业前总补考。假如教两门课就要出6套考卷,这要耗费多少时间、精力!每个老师都有深切体会。组建题库势在必行,问题在于如何才能组建起科学、实用的题库。那种靠上网下载、东拼西凑,短时间就新鲜出炉的题库,只能是倒人胃口的“杂烩”。因为你没有具体分析自己的教学对象、教学层次,只知照抄重点大学的习题,甚至是“猎奇”,搞一些偏题、怪题、难题,考研试题,也不分析学生情况。拿这样一些题目考学生极不合理。题库应当源自教师长期的教学积累,从教师讲过的例题、学生做过的作业以及历年考试的题目中筛选,当然也要适当参考其他院校、教材中的习题。高校扩招后,一般院校的教学中心要适当放低,题库的中心也要相应放低,也就是要更加重视基础。好的试题应当是“似曾相识,未曾相识”。比如教师讲过一个“字操作数用循环方法累加求和”的例题,考试时改为“字节操作数累加求和”,这就要对程序中的指令、伪指令作一些相应的改动,从中可以考查学生对程序的理解和运用能力。

4.2试卷库与试题库

题库有两种类型,一种是试卷库,另一种是试题库。对于班次少、应考人数不多,教材相对稳定的一部分专业课,组建试卷库较为方便、实用、经济。如果一门学科能筛选出6~8套较成熟的考卷,已经可以满足该专业课常规考试的要求。但是对于应考人数多,涉及面广的公共基础课和专业基础课,固定的试卷就不一定适合要求。同一门课对不同专业、不同层次、不同教学对象要达到的教学目标是很不相同的,考试题要适合各自的需求,就得从试题库中按要求随机选题。试题库中就得有一定数量的习题积累,并按照题型、知识点(章、节)、类别(基本题、较高要求题、更高要求题)科学地组织和排列。假设一套试卷的题量按大、小题30题左右计算,试题库中和6~8套试卷库的题量相当的题量,至少应当在200~300道题以上,然后可以逐步积累扩充,不断丰富题库的题量。

5考试管理系统的设计

考试管理系统的使用有什么好处呢?(1)将提高试卷的信度、效度和区分度,促进考试的标准化、科学化,从而避免不同教师不同教材命题发生的考试涨落现象;(2)将提高考务管理工作的效率和教学管理工作的水平。随着计算机技术和网络技术的普及,考试管理系统的开发与应用已成为计算机教育应用的热点。然而能够坚持使用下来的系统并不多见。我院曾引进某名牌大学的通用考试系统软件,但一直束之高阁。究其原因就在于对“通用考试系统”而言,“通用”只是一厢情愿。系统论的原理告诉我们,不可能存在“全能”的系统[6]。试想,英语、数学、程序设计语言这些不同学科,其考试形式、试题题型差别那么大,试题库组织、命题策略各不相同,怎么可能设计出一个包罗万象的考试系统,将它们全部囊括进去呢?所以考试系统要逐个(类)学校、逐个(类)学科分别去设计,这是一项很扎实而又长期的建设工作,不可能一蹴而就。

5.1考试系统的架构

考试系统有三种架构:(1)基于任课教师和教务部门自用的单机架构。适合传统的分考场笔试考试,试卷生成后可以直接打印印刷,也可以做为FTP文件远程传输,再分考点打印印刷。(2)基于试验室机考的C/S架构。考试在专门的机房进行,一人一机,一场多卷。服务器安装试题库和服务器程序,终端安装客户端程序。(3)基于互联网在线考试的B/S架构。B/S架构考试系统是基于服务的架构。学习者学完了选修的课程、开放的课程,可以随时随地在任何有浏览器的终端上申请考试,通过后即获得相应学分。随着学分制的实行,选修课的扩大,开放课程和远程教育的发展,B/S架构的考试系统有广阔的发展前景。

5.2命题策略

考试系统是一个包括多个子系统的复杂系统,其核心部分是试卷生成子系统。试卷如何生成才能符合规定的要求,这就是命题策略所要研究和达成的目标。如果直接从试题库中随机命题,会面临一个很大的问题,即试题的章节(知识点)覆盖率很难达到规定的比例。完全由任课教师在机上手工选题,既费时费力,也容易产生主观性和片面性。解决以上问题的方法是:(1)命题时首先建立双向细目表和标准试卷模板。双向细目表的纵向为题型和知识点(章节)的二级分布,横向是试题类别的分布。在双向细目表中确定各题型、各知识点、各类别题目数后,自动统计出它们各自所占的比例,调整各栏题目数符合规定要求后,即形成标准试卷模板,可以将它保存于模板文件中。本次考试和今后考试都可以依据标准试卷模板中规定的各题型、各知识点、各类别的题目数,在题库中随机选题。(2)如果考试要求有变化,可以重建双向细目表,形成新的随机试卷模板,并保存于另一个模板文件中。如此,便可以根据不同的试卷模板,生成不同考试要求的多种试卷。

5.3用Access/SQL Server数据库构造试题库

用Access/SQL Server构造的试题库主要包括填空题表、判断题表、阅读程序题表、编程题表、实验题表五个主表和题型表、知识点表两个副表。各主表均包括试题编号、孪生编号、知识点、类别、加/解锁、题干、答案等字段。主表中的孪生编号字段起什么作用呢?根据4色原理,4种颜色足以使地图中每个国家与邻近国家的颜色互不相同。在试题库中孪生编号相同的试题总有4道题。于是,根据孪生编号选出的试题同时就有4道孪生题,可以形成A、B、C、D四套形式酷似而内容、答案不完全相同的孪生试卷。如果将它们同时打印、印刷,并按一定座号顺序发给考场的学生(一场四卷),就会使每个学生和邻近学生的考卷互不相同,于是可以有效地遏制考场作弊。即便有现代通信工具,也无法传送答案。因为每个考生(或场外人员)都不可能知道其他同学使用的是孪生试卷中的那一套试卷。

5.4在线考试系统自动判分问题

在汇编语言试题库的五个题型中,判断题和阅读程序、完型填空题属客观题,可以自动判分。填空题和实验题可以认为是准客观题,经过简单的字符串匹配和逻辑“与”、“或”的判断,也能实现自动判分。至于编程题,由于解法不是唯一的,实现自动判分较困难,需人工判分,因此属主观题。但是在线考试提出即时判分的要求,这就有必要研究编程题自动判分的可能性。借助人工智能专家系统的构建原理与实践以及模糊数学中的模糊评判原理,建立一个编程题的自动判分专家系统,有可能使这个问题的解决得到突破。

作者简介

由布西,山东教育学院计算机科学与技术系,副教授,主讲课程包括程序设计语言以及软件工程与毕业设计。

通信地址:山东省济南市历山路36号山东教育学院计算机科学与技术系

邮编:250002

电话:0531-86401253(办) 0531-87111830(宅)

E-mail:you_bx@163.com

附:06高职专汇编语言程序设计期终考试试卷(A卷) 山东教育学院2007.07.10

一、填空题(24分,每小题4分)

1、8086/8088包括两个功能单元________和________,前者的功能是________,后者的功能是________,它们处于________工作状态。

2、8086/8088的数据寄存器AX,BX,CX,DX中,通常作为累加器使用的是________,作为扩展累加器使用的是________,作为地址寄存器使用的是________,作为计数器使用的是________。

3、8086/8088有________条地址线,寻址能力达________MB。假如一存储器单元的逻辑地址为17DE:0012,该存储单元的段基址为________,偏移量为________,实际物理地址为________。

4、假如堆栈指针(SP)=0012H,数据寄存器(AX)=0E3AH,(BX)=4B7AH,当连续执行三条指令PUSH AX,push BX,POP AX后,(SP)=________,(AX)=________,(BX)=________。

5、一条完整的指令语句包括________,________,________,________四部分,其中________ 和 ________是可选的。

6、子程序调用包括________,________,________,________,________五个过程。

二、判断题:判定以下指令的正误(20分,每小题2分)

1、mov ds,data

2、mov al,500

3、mov al,byte ptr[bx]

4、xchg [si],[di]

5、idiv 3

6、sar ax,5

7、xor al,ofh

8、push bl

9、stc

10、out 20h,al

三、阅读程序,将合适的选项填入程序的________处。(16分,每小题8分)

1、 自FIRST单元开始存放的是一个4字节的16进制数(低字节在前),将这个数左移2位后存放到自SECOND开始的单元。

data segment

first db 90h,5fh,6eh,69h

second db 5 dup(0)

data ends

stack segment para stack "stack"

stapn db 100 dup(?)

stack ends

code segment

assume cs:code,ds:data,es:data,ss:stack

start:

mov ax,data

mov ds,ax

mov es,ax

mov si,offset first

mov di,offset second

________

mov cx,2

loop1:

________

push di

push cx

mov cx,4

loop2:

________

________ al,1

________

loop loop2

________ first[di],1

________

________

mov si,di

loop loop1

int 3h

code ends

end start

选项:CLC,CLD,STC,STD,LODSB,LODSW, STOSB, STOSW,SAL,SHL,ROL,RCL,POP CX,POP DI

2、 用户在提示信息 Input your password please: 后输入6个字符的密码,用户每按一个键则屏幕上显示一个 * 。密码字符虽不显示在屏幕上,但要送入PASSW变量中。

deseg segment

passw db ?,?,?,?

disp db "Input your password please:",0ah,0dh,"$"

mm db "*$"

deseg ends

sseg segment para stack "stack"

stapn db 80h dup(0)

sseg ends

cseg segment

assume cs:cseg,ds:dseg,ss:sseg

start:

mov ax,dseg

mov ds,ax

mov dx,offset disp

mov ah,________

int 21h

mov si,offset passw

mov cx,4

again:

mov ah,________

int 21h

mov [si],al

inc si

mov dx,offset mm

mov ah,________

int 21h

loop again

mov ah,________

int 21h

cseg ends

end start

选项:01H,02H,06H,08H,09H,0aH,4cH

四、实验题(16分,每小题8分)

1、 试根据汇编时的报错信息,改正源程序中的错误。

exam1.asm( 9) :error : Symble not defined:date

exam1.asm(14):error: Expected:instruction or directive

data segment

n dw 2007

q DW ?

r DW ?

data ends

code segment

assume cs:code,ds:data

start:

mov ax,date

mov ds,ax

mov ax,n

mov bx,500

xor dx,dx

diu bx

mov q,ax

mov r,dx

mov ah,4ch

int 21h

code ends

end start

2、试给出用DEBUG调试程序出现以下问题的解决方法或正确步骤:

(1)DEBUG不能运行,屏幕报出 Incorrect DOS Vesion 的信息。

(2) 用t命令调试0B5B:000A INT 21H时,屏幕出现NOP的提示信息。

STRING DB‘COMPUTER’, ‘$’

MOV BX,OFFSET STRING

again:MOV DL,[BX]

0B5B:0008 MOV AH,02H

0B5B:000A INT 21H

0B5B:000C INC BX

0B5B:000E CMP [BX],24h

0B5B:0010 JNE again

五、编程题(24分,第1小题10分,第2小题14分)

1、存器BX作地址指针,自BX所指的内存单元开始连续存放着3个无符号数:1ah,45h,23h(字节),编程求它们的和,并将结果存放在这3个数之后。要求用循环方法实现。

2、从BCDBUF开始的连续单元,存放着用BCD码表示的15个学生的某学科成绩(45h,61h,70h,86h, 93h,75h,98h,69h,88h,81h,56h,73h,86h,90h,64h)。要求:

(1) 编写求学生成绩最高分的子程序,最高分要放在MAX单元中。

(2) 编写在屏幕上显示这个最高分的子程序。