汇编语言范文
时间:2023-03-29 22:10:42
导语:如何才能写好一篇汇编语言,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
关键词:加密算法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
;重复
篇2
汇编语言与cpu有关。
汇编语言是专门为某一类CPU而设计的,所以汇编语言与CPU类型息息相关,当然至于型号却是不一样的。高级语言与CPU基本上是关系不是很大的,但完全没有关系也不是那么一定的,比如C51就是专门为51单片机这类CPU而设计的高级语言。
汇编语言,即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。
(来源:文章屋网 )
篇3
论文摘要:本文首先分析了当前汇编语言的教学现状及实验环节的重要作用,然后阐述了汇编语言实验教学的设计思路,给出了较详细具体的实验内容安排。
1 汇编语言及其教学现状
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是唯一能够利用计算机所有硬件特性并能直接控制硬件的语言。对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的,至于很多需要直接控制硬件的操作场合则更是非用汇编语言不可。用汇编语言编写的程序的执行速度通常比高级语言(如C/C++)快很多,甚至成百上千倍。相应的,汇编语言的缺点就是使用者需要对硬件有更深入的了解,编程效率不高。
“汇编语言程序设计”课程的任务是为“计算机组成原理”、“接口”、“操作系统”等后继课程提供必要的基础知识,它对训练学生掌握与硬件相关的程序设计技术、从事自主版权计算机芯片和系统软件的开发、信息安全、过程控制等方面,均有十分重要的作用。无论计算机技术如何发展,机器语言、汇编语言的计算机程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。不能了解和熟悉汇编语言,不仅将导致学生知识结构的缺乏,也可能导致学生认知水平的降低,开发手段的贫乏。
然而,初学者往往感到它难学、难懂、抽象,更难以掌握。教师开展教学困难,学生学习和掌握困难,教学效果差,以致会影响后继课程的学习。
2 实验环节在汇编语言教学中的作用
在计算机相关专业的教学领域,实验和实训教学是培养大学生学习能力、实践能力、思考能力、创新能力的重要环节和有效途径。显然,学生在学习汇编语言这门课程中产生的困难,首先来自于他们对所学知识缺乏必要的感性认识,没有充分的实验。
计算机在很多方面不同于其他学科,尤其是与硬件有密切关系的课程。由于汇编语言课程具有硬件操作的密切相关性,实验环节在整个教学活动中就占据了举足轻重的地位.汇编语言的实验对培养学生的动手能力和学习兴趣,提高学生阅读、编辑和调试程序的能力,有着不可替代的重要作用。学生通过实验课深入了解CPU、存储器、接口及外部设备的工作特性,对数据在计算机中的表达和传送产生感性认识。在实验中对汇编语言达到更好的理解、掌握,从感性认识上升到理论认识。
3 实验教学的设计思路
由于各高校办学类型不同、培养目标不同、所在地及周边地区社会需求不同,计算机及其相关专业的教学内容也应有所不同。对于非研究型院校的相关专业,对“汇编语言”的教学可以集中在适度的理论知识和充分的操作实践上。“适度”体现在理论课的讲授中内容不必展开太宽,“充分”体现在实验课的安排上要充分。
尽管学生学习汇编语言有着不少困难,但“兴趣是最好的老师”,要激发学生的学习兴趣。有了兴趣,他就能积极地思考,大胆地探索,变被动接受为主动思考。因此,汇编语言的实验教学总的思路就是要以激发学生兴趣为主线,尽量设计趣味性的实验内容,充分发挥学生的积极性和创造性。
很多学生不重视实验课的主要原因之一是认为实验课的好坏对学习成绩影响不大,目前多数院校的学习成绩评定,仅以期末一张考试卷的好坏而定,这使很多学生重理论、轻实验。因此,应认真记载每个学生在实验课上的实际操作能力和编程能力,并以优、良、中、差进行仔细考核,开学初就明确告诉学生这种考核制度的存在,使之开始就没有怠慢的情绪,从思想上重视实验。
实验教学的安排按照由浅入深、循序渐进的方式进行,合理选择实验内容,尽量避免过多过杂,内容选择注意举一反三,即以启发思维为主,对设计型、综合型实验只要能完成预定实验目标,不苛求实验过程与步骤的统一。实验所演算的汇编语言程序应具备好的观测效果,能直接体现计算机的操作特点,教师演示和学生实践穿行,并且注意重复对比,让学生发现自己操作的失误,加深对汇编语言操作规律的理解。
实验教师在实验中主要起到引导的作用,实验前的讲解以重点、难点和注意事项为主,不应面面俱到,可以先给出一些问题,让学生带着问题去做、去观察、去思考。实验中,则应以学生为主体,让每个同学通过操作行为感受计算机的物理过程,教师将理论揉在实例中的具体操作中,学生会感到数据是有形的,CPU的操作是物质化的。经过反复练习,学生不但学到了基础知识,而且提高了综合分析和理解能力。实验中,还要鼓励学生自己修改实验,有时学生对自己编的程序没有把握,一旦上机实验后就清楚了。他在计算机上修改程序,观察修改后的结果,实际上就是了解改动部分在整个程序中所起的作用,这种作用的认识和理解不是通过说教得来的,而是切身经历的、看到的,学生对它的理解、记忆就要深刻得多。
4 实验内容的具体安排
具体的实验内容应覆盖汇编语言教学中的各重要方面,内容涉及debug、汇编语言编程环境、汇编语言程序设计、输入输出与中断、Win32汇编、汇编语言与C语言的混合编程等。类型分为选作和必做。每个实验分属验证型、设计型或综合型。
4.1 稳扎稳打练好基本功:debug和编程环境
“万事开头难”。对汇编语言的学习,能否开好头很关键,很多学生就是因为开始没学好,感觉跟不上,就不再认真地学习了,有的甚至放弃了。其实汇编语言实验开始的基础部分是比较简单的,想掌握它是没什么大问题的。
汇编语言源程序通常以ASCII文本文件的形式保存,通过汇编链接形成一个EXE可执行文件。对EXE文件的调试构成了实验课的主体内容,贯穿始终,而EXE文件的调试通常是通过debug实现的。学生通过使用debug可以观察到存储器的数据存储情况,也可以随时观察到CPU中寄存器的数据变化。debug的反汇编命令是理解汇编语言的助记符形态和机器指令的01码形态的对应关系的重要工具,学生可以通过它深入体会汇编语言中指令的构成及各部分含义。debug提供的单步执行命令是另一个重要工具,利用t单步执行一条指令,及时观察数据缓冲区的变化情况,这也是进行调试、发现程序错误的最直接有效的方法。
debug的实验部分以使用a、t、r、d、u等命令为主反复进行指令练习。学生通过使用debug观察到指令执行前后机器中数据的变化,对深入理解计算机的工作原理、汇编指令的作用是直接的和不可替代的。学生不再感到机器是复杂的,指令是抽象的。
接下来安排的实验则是对汇编语言编程环境的熟悉和掌握,这也是重要的一环。对编程环境不熟悉,不仅会影响学习汇编语言的效率,还会引起一些不必要的错误发生。因此可以考虑多给几个简单完整的程序,让学生多去 使用编程环境,熟悉汇编链接过程。实验初,只给一些正确的程序,让学生经过汇编链接可以较容易地形成exe文件并成功执行,看到了正确的结果,学生就有了方向,也就有信心去做下面的实验了。
在熟悉了简单的编译过程之后,接下来可以在原有程序中适当安排一两个错误,让学生观察汇编链接中出现的错误信息,理解这些错误发生的原因,这一点对程序调试是至关重要的,如果看不懂错误信息,就没有办法正确定位错误,也谈不上修正错误了。
以上分析,学习汇编语言伊始,一定要练好基本功,包括对debug的熟练使用,对编程环境的熟悉。这部分实验一定要安排得充分,力求使学生不再对机器望而生畏,不再对汇编指令有抽象难懂的感觉,如果能开好这个头,后继的学习就顺利得多了。
4.2 轻轻松松做改变:汇编语言程序设计
由于学习汇编语言之前,学生通常已经学习过一门程序设计语言,因此这部分实验可安排简单、典型的验证型、设计型实验,以编写程序为主。先要求学生用之前学过的程序设计语言实现,然后再给出汇编语言的实现,通过对比;学生自然可以发现汇编语言与其他程序设计语言的异同。当程序出现错误时,则必须要求学生使用debug进行调试,观察变化,排除错误,加强程序调试能力。
4.3 细心耐心学核心:输入输出与中断
中断是学习汇编语言的重点加难点部分,能否真正掌握汇编语言也在于此,中断也是汇编语言的魅力所在。这部分实验一定要找一些学生感兴趣的、具有明显观测效果的例子,至少安排两个阶段的实验。第一阶段以验证型实验为主,先使学生熟悉中断过程、中断处理程序的框架;第二阶段以设计型实验为主,让学生自己去思考中断过程中发生的事情,中断程序设计的方法。对这部分知识的传授一定要有耐心,对每个程序的讲解要透彻、概念清晰。中断是真正要用的东西,之前学习的内容只是为它做铺垫,不能学好中断,汇编语言这门课的真谛就没有学到。
4.4 兴趣延伸:WIn32汇编、汇编语言与C语言混合编程
很多学生学习汇编语言之初就会问汇编语言用在哪里,很少接触到汇编语言等问题,其实现在汇编语言很少单独使用,而Win32汇编、汇编语言与C语言的混合编程用的比较多,这两部分内容学起来并不难,可当作拓展知识部分,作为自学内容。教师可以找一些实际使用这部分内容的例子,让学生知道汇编语言的用途,使学生不再“学而不用”,“学而不知用”。
篇4
关键词:汇编语言;实验教学;模仿法;演示法
中图分类号:G642 文献标识码:B
1引言
汇编语言是所有程序设计语言中最原始的语言,它与机器语言最为接近,简言之,汇编语言是符号化的机器语言,通过汇编语言可以直接访问计算机的硬件,如果要深入了解计算机的工作原理和底层细节,就必须学习汇编语言。著名的计算机科学家Donald Knuth坚持推崇汇编语言,并且曾经说过“我坚持认为除非你了解了各种底层细节,否则根本不可能为态度认真的程序员写书。”①汇编语言的地位是任何高级语言都无法取代的。因此,汇编语言程序设计成为计算机专业的必修课程。
然而汇编语言程序设计课程的教学普遍存在诸多问题,已经引起了广大教师的研究与关注,如考文献中的[1][2][3][4][5]等。就目前看来,汇编语言教学大多不能体现“以学生为本”的教学理念,主要表现在对实验教学的重视程度不够。汇编语言程序设计是实践性很强的一门课程,学生只有在程序设计的实践中才能真正掌握。所以我们认为汇编语言教学应该“老师少讲课、学生多动手”,也就是要充分重视实验环节,让学生唱主角,改变传统的以课堂讲授为主的教学模式。
为此,本文进行汇编语言实验教学的研究与探索。下面分别从实验安排、教学方法和考核方式三个方面介绍作者在多年的汇编语言实验教学中的体会。
2精心安排实验
2.1学时安排
目前国内高校的汇编语言程序设计课程大多是基于Intel 8086/8088微处理器的②,总学时一般在60学时左右,实验课学时一般占总学时的1/4到1/3。我们认为60个总学时是比较合理的,但是实验课学时远远不够。事实上,对于任何一种程序设计语言来说,不需要教师讲解太多的内容,关键是让学生多动手。我们认为汇编语言的理论课学时和实验课学时各占总学时的1/2是比较合理的。
2.2实验内容安排
汇编语言的实验课内容应该包括但不限于:
(1) 调试工具DEBUG的使用:汇编语言程序的调试要比高级语言程序的调试困难得多,熟练使用DEBUG是汇编语言程序设计的基本技能。
(2) 汇编语言程序设计的上机过程:汇编语言程序的编辑、汇编、连接、运行和调试是汇编语言实验的必备知识。此外,学生还应当懂得在此过程中所产生的各种文件(.obj、.lst、.crf和.exe等)的用途。
(3) 基本程序结构设计:任何复杂的程序都是由三种基本结构(顺序结构、分支结构和循环结构)组成的,因此,基本程序结构设计训练是编写复杂程序的基础,是汇编语言实验不可缺少的内容。
(4) 子程序设计:所谓子程序,相当于C语言中的函数。子程序是结构化程序的基本组成,子程序设计是开发大型程序的基础,对于培养编程能力十分重要。
(5) 中断调用:操作系统和BIOS(Basic Input Output System)以中断调用的方式为程序员提供了一组功能强大的程序库,屏蔽了复杂的硬件细节,从而极大程度地减轻了程序员的负担。而且,不理解中断系统就不能理解计算机的工作原理。因而学习中断调用是汇编语言实验课的必要内容。
此外,中断服务程序的编写和汇编语言程序与高级语言程序的连接等内容也应该让学生有所了解;在实验学时允许的前提下,也可以安排一个综合性实验。
3选择合适的教学方法
对于实验课,只布置任务、让学生自己做实验的方法并不可取,因为其结果往往是只有少数学生能够达到实验要求,而大多数的学生收获很小,甚至有的把实验课用来玩游戏了。所以,实验课应该有专门的任课教师。当然,从培养学生的创新能力的角度讲,应该尽可能地让学生独立完成任务,但是创新能力的培养有赖于足够的基础知识和基本技能。我们认为汇编语言实验课应该以基础知识和基本技能的学习为主,适当地关注创新能力的培养,在照顾到大多数学生的前提下,给创新能力强的学生提供独立发展的空间。要做好这一点,我们认为有两种十分有效的教学方法:演示法和模仿法。
3.1演示法
在实验课上,我们经常发现有许多学生向老师问同一个问题,如果一一解答,不但使任课教师十分疲惫,而且严重浪费了资源和时间。对于这些共性的问题,可以通过投影仪向学生演示解决问题的办法,所以在实验室中安装投影仪将为实验教学带来极大的方便,目前大多数高校具备这样的硬件条件。特别是对于调试工具DEBUG的使用和汇编语言程序设计的上机过程的学习尤为有效。初学者对于程序的编辑、汇编、连接、改错和调试过程往往不知所措,如果老师从头到尾演示整个过程、让学生一步一步地跟着操作,就能极大地提高学习效率。一次简单的演示往往要胜过千言万语的解释。
3.2模仿法
程序设计对于大多数的初学者来说有一定的难度。对于给定的一个实验题目,许多学生往往感到无从下手。事实上,老师可以把一些经典的程序提供给学生,例如怎样实现分支结构、怎样实现循环结构、怎样使用系统调用、怎样编写子程序、怎样编写中断处理程序等,让学生在读懂之后模仿着编程。模仿的程序多了,编程也就熟练了。通过一段时间的经验积累,就能够编写比较复杂的和具有创造性的程序,正所谓“熟能生巧”。我们在教学中发现这种模仿的方法十分有效。当然要特别注意的是,不能把模仿变成抄袭。
3.3对比法
一般说来,在学习汇编语言之前都要学习C语言。汇编语言与C语言的学习是相辅相成的。老师应该通过对比的方法向学生指出汇编语言与C语言之间的千丝万缕的联系。例如,一块数据区的开始地址为BASE,要寻找的操作数相对于开始地址的偏移量为SI,我们发现几乎所有的学生会把这个操作数写成[BASE+SI],而不会写成BASE[SI],因为第一种写法更直观,而第二种写法令人费解。然而,如果教学生把BASE看成C语言里的数组、把SI看成下标,那么学生就会恍然大悟了。通过对比教学法,能够使学生更深入地理解高级语言中的数据类型、变量、函数、数组、指针等概念的理解,同时也必将大大促进汇编语言的学习。
4改革考核方式
因为“汇编语言程序设计”是实践性很强的一门课程,所以实验课成绩应该在总成绩中占有相当大的比重。我们认为以闭卷考试成绩为主要依据的考核方式是不合适的,甚至可以取消考试、以实验课成绩为主,如果要考,也应该是开卷的。然而由于许多现实困难,目前大多数高校的汇编语言课程的实验课成绩只占很小的比重,这也是学生不重视实验课的重要原因之一。提高实验课成绩所占比重的主要困难在于学生多、抄袭成风、老师负担重、实验条件有限、考核的主观性太强等。尽管面临诸多困难,我们认为实验课成绩应该占到总成绩的1/2。老师可以根据学生的实验表现按五级分制(优、良、中、及格、不及格)或二级分制(通过、不通过)考核。为了减轻教师的负担,可以只针对一个综合性实验(而不是所有的实验)加以考核。
5结束语
本文根据作者多年的教学体会,对汇编语言实验教学进行了深入的思考。从“以学生为本”的教学理念出发,根据汇编语言程序设计课程所具有的实践性强的特点,提出“老师少讲课、学生多动手”的教学模式,主张提高实验课学时和实验课成绩的比重,重视实验教学,并从实验内容、教学方法和考核方式三个方面介绍了作者的想法。然而由于学生过多、资源有限、我国高等教育长期投入不足和体制缺陷等许多现实困难,汇编语言实验教学的改革依然任重道远。
参考文献:
[1] 张全福. 汇编语言程序设计实验教学改革与探索[J]. 教学研究,2005,28(6):545-546.
[2] 周代英,杨晓霞. 汇编语言课程教学方法改革探索[J]. 中国科教创新导刊,2008(6):55-56.
[3] 吴媛,茹庆云,杨富超. 汇编语言程序设计的教学研究[J]. 中国科技信息,2005(14):215.
篇5
为了实现创新人才培养的目标,将研究性教学模式引入汇编语言程序设计教学中,对教学方法、教学组织形式及考核方法等进行了改革,改善了教学效果,提高了教学质量。
【关键词】
汇编语言程序设计;研究性教学模式;创新人才培养
1《汇编语言程序设计》课程现状及存在问题
《汇编语言程序设计》是计算机专业的专业基础课,是一门实践性很强的课程。以往老师讲授这门课程时,主要以“老师讲、学生听”的形式进行的,这样不助于学生理解指令的执行过程,往往导致学生在上机调试时无从下手,更谈不上综合程序的设计。这种僵化的教与学的模式必须进行改革,才能达到创新人才培养的目标。
2教学改革思路:
如果要提高教学质量,达到预期的教学效果,关键要改革教师的教学方法和学生的学习方式,即教师从传统的讲授灌入式向探究式转变,学生从传统的被动接受向主动接受、探究发现和研究性学习转变,达到培养学生主动发现问题、分析问题、创造性地解决问题的能力[1]。这就需要重新定位教师主导地位和学生主体地位的关系,采用以"学生为主体,教师为主导"的新教学理念。结合汇编语言程序设计课程的特点,紧紧围绕“深入理解机器工作的基本原理、培养底层编程意识和思想”和提高学生综合运用所学知识的能力两个核心目标,通过对教学方法及考核方式等进行改革,从而提高教学质量。
3教学方法及教学手段的改革
1.启发式教学:课程的讲授过程中,采用启发式教学方法,有意识地引导学生思考,将计算机的硬件工作过程深入课中,使得学生对语言的执行过程有更深入的理解。例如,在讲解存储器的分段时,可以将CPU与存储器的数据访问讲解一下,这样学生就能理解为什么要进行分段处理。2.项目驱动教学:汇编语言程序设计是一门实践性很强的课程,老师根据课程目标,设置3个难度适中的综合训练项目,贯穿整个教学过程中。学生在课余时间,通过检索资料、团队合作、综合分析,寻找解决问题的方案,最终提交程序代码及方案报告。“项目”教学是以学生为中心,老师为组织者和引导者,在项目的实现过程中,不但使学生加深对知识的系统理解,而且也了解了与知识相关的前沿热点问题,从而培养大学生自主学习能力、探究问题能力、协作能力、适应和创新能力等。3.随堂实践:学生上课可以自带笔记本,在知识点的讲解过程中,老师要充分利用多媒体教学环境中的计算机系统,对于程序实例可课堂调试演示,在机器上可随堂编写小程序现场运行,和学生一起进行调试的过程中,打破汇编语言的神秘感,消除学生对汇编语言难以掌握的恐惧心理,使同学们更直观、更快理解和掌握相关知识,激发学生对新知识和新技术的求知欲,提高教学质量。
4教学组织过程
课堂的前几分钟进行提问,掌握学生的知识点掌握情况,并督促学生搞好复习与预习;在知识扩展环节中,老师布置知识扩展点及要求,学生自主查阅资料并整理资料,增强学生查阅、整理和总结资料的能力,进而锻炼学生自主学习的能力;训练项目的实施以项目组的形式进行,即5~6名学生为1个项目组,并选其中一个学生担任组长,组长组织成员开展讨论和交流,但每个学生都独立完成项目的设计、实验和项目报告;项目的实施主要采取“课外为主、课内为辅”的方式。即学生领取任务后,通过课余时间进行资料查阅、讨论、答疑、编程和调试,以及完成项目报告书等。每个项目布置时,老师要进行概要的讲解,让学生了解项目的整体思路及接下来应该怎样解决,然后多安排几次答疑辅导时间,学生带着自己的疑问与老师交流,师生一起找到解决问题的办法,这也提高了项目的完成质量;答辩时要求以组为单位,在规定的时间范围内,做完的组可以找老师答辩,答辩时学生带着电脑可以进行现场调试,根据功能实现及答辩情况给予答辩分,对平时负责本组程序讲解的同学答辩成绩有加分;由组长组织,进行讨论,锻炼学生的表达能力,增加学生的知识储备;每周安排一次答疑,这样可以及时了解学生知识点的掌握情况,有助于老师课堂内容的安排,同时也有助于师生交流,提高教学质量。
5考核方式
以课程结束时的考试作为评定学生的依据是很不科学的,要改变传统的学生学业评价中“一考定全局”终结式评价模式[2]。学生的评价应该是能够不断的指导学生、鼓励学生、完善其学习方法,增加学生的应用能力,进而实现人才的培养目标。在课程考核中,我们采取以下的考核办法:期末总成绩由考试成绩(50分)、综合训练成绩(40分)、平时成绩(10分)三部分组成。总成绩中加重了学生对所学知识综合应用能力的比重,同时也注重对学生学习过程的评价。
6结束语
本文将研究性教学模式引入《汇编语言程序设计》课程教学中,打破了传统的教学理念,经过两轮教学实践,教学效果较以往有明显的提高。
参考文献:
[1]罗克露.研究性教学模式的探讨[J].计算机教育
篇6
关键词:汇编语言;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) .
篇7
关键词:计算机;汇编语言;系统控制;应用研究
中图分类号:TP313 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-02
汇编语言是一种面向机器的特殊程序设计语言,计算机汇编语言是指通过汇编语言程序设计实现计算机的硬件系统控制的指令的一种程序构成。利用计算机汇编语言进行编程设计,不仅可以有效提高工作效率,还可以节省程序空间,实现最大利用。本文将主要对计算机汇编语言的相关理论及其在实践中的具体应用进行研究分析。
一、计算机汇编语言的概念
在计算机的系统操作过程中,主要是通过计算机硬件设备对计算机的软件发出工作命令完成的。计算机汇编语言是通过汇编语言程序的设计,来操控计算机的某一程序系统,从而实现汇编语言程序对计算机的控制。计算机汇编语言的这一操作控制过程也正好符合计算机主机中中央处理器的工作原理和工作结构。控制命令是由控制编码与操作数构成,操作数的处理功能和中央处理器能够拥有的功能是由控制编码来控制实现,中央处理器是控制命令得以执行的根本,操作数能够为中央处理器执行控制命令提供处理对象。
中央处理器执行系统所发出的控制命令,从而的实现命令完成。中央处理器实现这一过程主要依据其强大的功能和结构特性。在计算机的中央处理器中,中央处理器的控制器部分首先对其它系统所发出的控制信息中的操作码进行编译、执行等工作,然后再通过已经接收、编译的信息,发出控制命令,从而帮助整个计算机系统完成运行工作;中央处理器的运算器部分则是实行对控制器所接收到的数据信息进行高速运算功能;另外,中央处理器中还有一个寄存器的部分,主要是用来储存数据的,寄存器的功能不同,在处理数据和执行命令时所发挥出的作用也就不同。
在计算机的实际应用中,汇编语言在对计算机软、硬件的操控和工作效率上的优点是其它编程语言不能够实现的。在通过计算机硬件设施来控制计算机的软件系统上,很多时候都只有汇编语言可以满足;在利用汇编语言进行编程来完成工作目标上,汇编语言不仅能够快速的完成工作目标,而且整个目标程序的设置也是最简短的,在空间和时间上都具有无可比拟的优越性。这里可以通过一个对比显现出来,假设现在通过汇编语言和不是采用汇编语言的两种方法来计算目标程序,通过两个操作运算过程就可以明显看出,不采用语言汇编计算方法的计算过程,在运算中不仅花费的时间要远远高于运用汇编语言来计算的方法,而且冗杂繁芜的计算过程占用了计算机的大部分空间,而运用语言汇编计算方法的计算过程只占用了一少部分空间,孰优孰劣,结果不言而喻。
二、汇编语言与高级语言、DELPHI语言、C语言的结合运用
(一)汇编语言与高级语言的结合运用
在计算机的实际程序应用中,一般程序员在进行程序编写时大部分是运用高级语言来完成,而在整个程序的重要部分,或者说在实际中运行要求高、运行次数又较多而且可以直接与计算机硬件设施相关联的部分,其程序的编写都是运用汇编语言来实现的。采取以上的方法,是因为在实际操作中虽然汇编语言拥有工作速度快,工作效率高,占用空间小的优势,但它同时也要求对计算机内存装置有相当的熟悉度,在进行程序编制和读写时也存在有一定的难度,在计算机程序编写的实践应用中有一定的不便利性;而高级语言除了占用计算机存放空间比较多,程序编写的代码较长使计算机运行速度较慢外,高级语言本身也存在有丰富的函数和数据信息、齐全的运算符、可移植性好、易读易写等优点。这样将汇编语言与高级语言结合在一起运用到计算机程序编写实践中,不仅可以取长补短实现优势互补,提高工作效率,还节省了计算机的空间占有量。
另外,在计算机程序编写的实践应用中,汇编语言除了与高级语言可以相互结合使用实现优势互补外,汇编语言和DELPHI语言、C语言之间也可以结合使用,以实现计算机程序编写过程的最大高效便利化。
(二)汇编语言与DELPHI语言的结合运用
汇编语言与DELPHI语言在进行计算机程序编写是相互结合使用,主要是在DELPHI语言编写的程序中运用一定的数据信息将DELPHI语言程序融入到汇编语言编写程序中去,实现两种语言程序相互结合。
汇编语言编写程序与DELPHI语言编写程序之间在进行参数信息的相互传达时,可以由DELPHI语言编写程序向汇编语言程序进行传递,也可以由汇编语言程序向DELPHI语言编写程序进行传递。
DELPHI语言编写程序向汇编语言程序进行参数传递时,首先在DELPHI语言编写程序选出汇编语言程序中或者编写过程中的正确参数信息,然后在对这些参数信息进行汇编过程中直接运用其变量参数数据,其中存在的所运用变量参数之间语法不相同情况是由于变量参数在被传送的过程中,相互传递数据信息其实是地址。
汇编语言程序向DELPHI语言编写程序进行参数传递时,对汇编语言程序中的固定数据信息参数的传递有一定的特殊要求,汇编语言程序向DELPHI语言编写程序的参数传递过程则是运用指针的方式进行数据值的传递的。
(三)汇编语言与DELPHI语言的结合运用
篇8
【关键词】汇编语言程序设计 现状 问题 改革
随着我国国际化的发展进程越来越快,我国对高等院校教育水平的重视度也越来越高。为了加快接轨国际高等教育的进程,在近几年中,我国对教育事业的投入力度不断加强,提高了对学生实际动手能力以及创新能力的培养力度。《汇编语言程序设计》课程教学是高校计算机、通信、电子以及自动化等相关专业课程中的基础课程,对学生在学习过程中的创新能力以及实践能力的提高有一定的促进作用。另外,在对教师对问题进行研究的过程中,对提高其相应的科研水平以及意识也有一定的积极影响。
一、《汇编语言程序设计》课程教学的现状以及存在的问题
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.
篇9
关键词:整合; 微机原理与接口技术; 汇编语言
1.前 言
《微型计算机原理及应用》与《汇编语言程序设计》是计算机应用专业的两门较重要的基础课程,是软件专业的必修专业课。它是后继计算机语言课、操作系统、数据库原理等课程的基础,也是教学难度和学习难度较大的两门课程。原来的两门课程虽侧重点不同,但有些内容也有重复现象,况且两者有密切联系,如果分开开设,则不能使学生对计算机的组成框架及系统语言有总体的认识,教学效果也不好。这对本来就难学的《汇编语言》与《微机原理与接口技术》的老师和学生无疑都是一个挑战。面对这种困难, 结合着我们对学生的接受能力以及认知规律的了解, 我们尝试将这两门课程整合为一门《汇编语言与接口技术》, 将它们放在一起可减少两门课程的为数不少的重复内容, 从整体上看学生的课时减少了, 可是对这两门课的学习时间却没有减少, 使教学更加方便, 而且学生的学习效果也会有所提高。我们从以下几方面论述了这项课程改革的必要性。
1.1我校课时压缩迫使课程改革.
[1]好多高校都在加大课程整合的力度, 减少课程总学分, 拓宽基础, 加强通识教育。在这种趋势下,《汇编语言程序设计》的课时不断被压缩。课时减少后, 教师既要介绍复杂的指令系统, 又要介绍程序结构, 难免会顾此失彼。通常学生学习结束后, 还不明白这门语言的用途, 并且容易产生厌学情绪, 对后续课程《微机原理与接口技术》产生畏惧心理。从内容上看《汇编语言程序设计》和《微机原理与接口技术》都对计算机的组成与工作原理、汇编语言源程序的基本构成以及与外部设备的接口问题进行了讲述, 有很多相连之处。因此, 将这两门课程合并, 优化两课内容, 有利于整个教学计划的安排, 也有利于教学。
2.合理安排汇编语言与微机原理与接口技术的课程内容.
《微型计算机原理及应用》与《汇编语言程序设计》有好多知识点是重叠的,《汇编语言程序设计》中的内容主要是微处理器的结构、8086指令系统和汇编语言程序设计,《微型计算机原理及应用》把这些知识点都包含进去。 (如表 1 所示)
[2]将两门课程合二为一势必要对教学内容进行压缩, 那么选择什么样的教学内容较为合适呢? 我们采用的教材是《微机原理、汇编语言与接口技术》该书通过80286、80386、80486、Pentium和Itanium(安腾)微处理器和IBM PC机的硬件和软件分析以及总线技术,阐明微型计算机的组成原理以存储器、输入输出接口芯片与微型计算机的接口方法。同时还包括汇编语言程序设计和接口技术两部分内容。汇编语言程序设计是微机应用系统的系统软件和应用软件的设计基础,接口技术是微机应用系统硬件组成的基础。该书内容较全面,实例丰富。学习微型计算机的汇编语言程序设计和接口技术必须理论联系实际。该书在介绍基本概念的同时,列举了大量典型而有意义的例题和习题。更加注重实验环节。
[3]这门课程实践环节尤为重要,实验是实践环节的一个重要组成部分。可以提前几周把实验题目布置下去,让学生充分准备。一般我们对实验的要求是:硬件原理图、流程图、调试成功的汇编语言程序。从我们实验课堂来看学生都很重视,而且大家对实验的兴趣也非常浓厚,都能积极地参与到实验中去。通过实验的实战练兵,可以进一步巩固所学理论知识,使学生对微机原理系统有了系统的认识,通过实验,使学生对这门课从理论到实践跨出了关键性的一步。这是一个升华的过程,是一个质的飞跃,为学生今后的毕业设计乃至将来的工作打下了良好的基础。
3.考试方法.
按照教改计划确定的培养目标和对学生在知识与能力等方面的要求,教师在给学生期末总成绩时,本着重平时、轻期末,既注重课堂教学又重视实践教学的原则进行考核。考核办法:平时成绩+期末试卷成绩=总成绩。平时成绩:作业+课堂表现+实验(20分),共计30分;期末试卷成绩:70分,加大平时的考核力度,作业和课堂表现可以侧重于知识的掌握,实验和期末成绩既有知识的掌握、知识的运用、又有综合性和创造性。这种方式,可以促进学生时时注重学习,有利于学风和考风的好转,可以杜绝仅凭期末一次考试就一锤定音的方式。
4.结束语.
通过计算机专业课程的整合,开拓了整体教学的新视野,同时也给我们许多新的启示,给教学工作增添了活力。课程优化是我们教改工作的具体体现,今后,我们还需进一步研究与探讨课程整合的新思路,以培养出更优秀人才。
参考文献:
[1]许颖梅. 对汇编语言和微机原理课程整合的探讨[J]. 福建电脑,2007.01.
篇10
数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输差错。通信中校验的方法很多,其中的BCH编码有其独特的优点:不仅可以检纠突发差错,还能检纠随机差错,被广泛地采用在微机级的通信中。但对更低层的单片机级的数据传输通信纠错,往往采用奇偶校验等简单的校验方法。BCH校验因其算法复杂,尤其是动态实时的无线通信中,单片机的通信往往无法采用BCH解码检纠。
笔者近几年在工业测控和无线通信系统开发,摸索了BCH解码检纠在实时的、动态的、单片机级的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)码为例进行探讨。
1 BCH码结构
BCH码是一种检纠能力较强的循环码。它由信息多项式M(X)和校验多项式J(X)组成,如以T(X)表示整个BCH(31:21)码字的31位码组多项式,则:
T(X)=M(X)+J(X) (1)
在31位BCH码的后面再加上1位,以保证整个码字32位中“1”的个数为偶数。该位称偶校验位。这样就形成BCH(31:21)加1位偶校验位的标准码字,其结构为:
其中校验多项式J(X)由公式(2)计算:
X0X1……X20X21……X30X31T(X)J(X)偶校验位J(X)=M(X)/S(X) (2)
式中S(X)是BCH(31:21)码的生成多项式,见式(3):
生成多项式S(X)的值在BCH(31:21)码的值是固定的。
BCH码是一种循环码,循环码是利用除法来纠错的。由于任一码组多项式T(X)都能被生成多项式S(X)整除,所以在接收端可以将接收码组R(X)用S(X)去除。若在传输中未发生错误,接收码与发送码相同,即R(X)=T(X),故接收码组R(X)必定能被生成多项式S(X)整除;若码组在传输中发生错误,即R(X)≠T(X),R(X)被S(X)除时,可能除不尽而有余项Y(X),因此,可根据余项是否为零来判断码中有无错误(检错),如有余项,通过一定的运算就可以确定错误位置,从而加以纠正(纠错)。
这里R(X)被S(X)除,是32位被11除,这在非实时静态的微机级实现非常简单;但在实时的、动态的、单片机级的通信中实现要快速巧妙的算法才能实现,否则,现有的码未检错及纠错完毕,下一个码已经到了。因为动态中位和位的时距t往往只有几十μs,以9.6b/s的短信为例,t=104μs。在这104μs中要完成检错、定位和纠错三个算法程序,才是一个完整的解码检纠过程。
2 检错
根据上述原理,检错过程也就是求算R(X)被S(X)除的余项Y(X)的过程,如余项Y(X)=0,则R(X)=T(X),传输无差错;如余项Y(X)≠0,则R(X)≠T(X),检出传输差错。
在算法语言中,所有的运算总归于二种运算:加和减。这是电子计算机的二进制基本电路特性所决定的,也是汇编语言唯一的算术运算方法。为此,这里把除法用模二加法再加右移位实现。
已知:S(X)=11101101001
R(X)=r3r4r5r6 (ri为8位寄存器)
调用下面的模二加法右移子程序,得到R(X)/S(X)的余项Y(X)=r3r4。
;32位/16位模二加法右移子程序
m2add:mov r7,#00
m2ddgx:mov a,r3
xrl a,#0edh ;S(x)的高位=oed(h)
mov r3a
mov a,r4
cpl acc.5 ;S(x)的低3位=001(b)
mov r4,a
mov a,r3
acc7e10:jb acc.7m2addgx ;R(x)的最高位为“0”,则R(x)右移
mov a,r6
rlc a
mov r6,a
mov a,r5
rlc a
mov r5,a
mov a,r4
rlc a
mov r4,a
mov a,r3
rlc a
mov r3,a
mov r7
cjne r7,#10h,acc7e10 ;右移总次数为16次
ret
余项Y(X)的高8位在r3寄存器中,低3位在r4的高3位。
3 定位
如果Y(X)=r3r4≠0,表示接收到的码组R(X)有差错,下一步则由Y(X)的值推算差错在R(X)中的位置。
理论上要找出R(X)中差错的位置,必须计算出差错校验子C(X)。在实践中,校验子C(X)的计算不仅费时间,而且多位检纠还需多个校验子C(X)。为此,经过几年的实践,把Y(X)(即r3r4)直接作为综合校验子,通过快速查表找到差错位置。查找程序的大小和检纠差错位数有关,这里以检纠4位差错为例,说明定位纠错的方法。
;4位差错位址查找子程序
bitposi:mov b,0 ;对R(X)高位至低位的移动计数
mov r2,#1fh ;设表格长度
bto a: mov a,b
inc b
acall tabsub ;调用表格子程序,读入表格值
clr c
subb a,r3 ;Y(X)中的r3 和表格值比较
jnz binc1 :不相等,转出
mov a,b ;相等,继续
acall tabsub
clr
subb a,r4 ;Y(X)中的r4和表格值比较
jnz r2decl:不相等,转出
setb f0 ;相等,置标志位返回
ret
bincl:inc b
r2decl:djnz r2,btoa
ret ;表格查毕,没有相等的值,不置标志位返回
从查找子程序返回的B寄存器的值,即为差错在R(X)中从高位到低位的位数值。
;4位差错表格子程序
tabsub:inc a
movc a,@a+pc;将相对位置的表格送入a寄存器
ret
db 0ebh ;表格开始,长度为查找子程序中
db 00 ;r2寄存器的预置值
db 76h
.
.
.
4 纠错
找到了差错在R(X)位置,就可以纠错了。