汇编语言范文10篇

时间:2023-04-10 05:16:31

汇编语言

汇编语言范文篇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

一、变量与函数的相互调用

c语言可以调用汇编子程序和汇编语言中定义的变量。但要注意由于。编译后的目标文件自动地在函数名和变量名前加一个下划线,所以在汇编语言中调用C语言的函数和变量时,应在函数名和变量名前加一下划线。在汇编语言程序开始部分,应对调用的函数和变量用EXTERN加以说明。

二、调用者与被调用者的参数传递

这种数据传递通过堆栈完成,在执行调用时从调用程序参数表中的最后一个参数开始,即从右到左自动依次压人堆栈;将所有参数压人堆栈后,再自动将被调用程序执行结束后的返回地址(断点)压人堆栈,以使被调程序结束后能返回主调程序的正确位置而继续执行。进人汇编子程序后,为了能正确获取主调程序并存人堆栈中的数据,被调的汇编子程序先后要做如下一些工作:

l、保存sp的副本进人汇编子程序后,子程序中免不了要有压栈和出栈的操作,故sP时刻在变化。为了能用SP访问堆栈中的参数,安全办法是一进人子程序后,先为SP制副本,以后对传递参数的访问都用副本进行。一般可用BP保存SP,如:pushbPmovbP,sp

2、保留数据空间如果汇编子程序中需要一些局部数据,可以简单地减小SP的值,以便在栈空间中保留出一段存贮区,用于存放局部数据,该区域须在子程序结束后恢复。如下语句可以保留一个局部数据区:pushbPmovbP,spsubsp,spaee;设spaee=4如上语句段中,SPACE是局部数据的总字节数。在以后的应用中,由于SP是变化的,而BP是固定的,用负偏移量可以存取局部变量。上例利用BP及偏移量,将两个字的局部数据初始化为0。

3、保留寄存器值如果在被调子程序中用到sI、DI等其它寄存器,则应先把它们压人堆栈,以保留寄存器原值。例如,下例就是将SI和DI寄存器的值压栈:pushbpmoybp,SpsubSp,sPaeePush51Pushdi

4、获取传递参数BP保留了SP在参数传递完并将BP压栈后的一个副本,利用BP可以很方便地访问各参数。现假设调用了名为funcl汇编程序模块的主函数:maln(){……fund(pl,pZ,p3);……}。各参数都是2字节的整数值,返回地址retumaddress,在小模式编译方式共占用2个字节。如果要将传递的参数p卜pZ、p3取出,并分别赋给bx、Cx、dx寄存器,可由下列语句完成这一功能:movbx,[bp+4jmovcx,[bp+6]movdx,[bp+8〕

汇编语言范文篇3

关键词:生态课堂;大型主机汇编语言;教学质量

构建一种“以人为本,以发展为本”的生态课堂是提高课堂教学质量的重要方式。所谓的“生态课堂”就是在“动态的、可持续发展的”理念下,变革教师的教学行为,营造一种自然、和谐的教育环境,促进学生知识能力全面健康发展。将生态的理念引入课堂,构建一种教师和学生、师生和环境之间的动态平衡关系,创设一种富有生命气息、宽松和谐的生态课堂,从而达到提高课堂教学质量的根本目的。

1传统课堂教学存在的问题

大型主机汇编语言作为大型主机专业方向的一门核心课程,在大型主机系列课程中具有承上启下的作用。作为一门语言课程,具有程序设计语言基本的程序设计结构,因此对于具有高级程序设计基础和微机汇编程序设计基础的学生来说不难理解。但是汇编语言本质上是机器语言,与高级语言相比又具有一些自身的特点。

第一,与硬件联系紧密。汇编语言属于低级语言,每一条指令对应一个机器动作,掌握这些指令的前提是对系统的硬件有一定的认识。这就需要掌握涉及到的CPU内部寄存器的特性和使用方法以及内存的特点和管理方式。

第二,指令繁杂,编程繁琐。大型主机汇编语言和微机汇编语言一样,指令系统集复杂,由数据传送指令、十进制操作指令、定点操作指令、循环和分支指令、程序控制指令、位操作指令、地址处理指令等七个功能组成。由于主机系统本身使用汇编语言提供了很多例程,并定义了相关的编程规范,用户编写的汇编程序必须遵循这些编程规范,因此,在编程中需要注意约定设置及隐含使用的寄存器等。编程不但要注意指令的正确使用,还要考虑寄存器、主存单元等硬件细节,所以比较繁琐。

第三,调试困难。主机汇编语言调试时需要用专门的工具,采用的是命令交互方式,界面不友好,而且直接对内存地址和寄存器内容的二进制显示,不易理解。

第四,课程中间才涉及程序设计和应用。汇编语言的课程体系中,只有到中间才涉及到程序设计和应用。因此,在学习前面的基础知识和指令系统时,容易产生知识凌乱、支离破碎的感觉,产生为什么要学这些东西、有什么用处的疑问。

正是由于大型主机汇编语言的这些特点,在“以教师为中心,教师讲、学生听”的传统教学模式下,学生在学习中普遍感觉内容不易理解和掌握,缺乏学习积极性。因此,如何打破传统教学模式,提高这门课的教学质量,就成为一个亟待解决的问题。近二十年以来,国内外的许多教育工作者、教育学家、教育技术专家从理论与实践两个方面作了大量的研究与探索,生态课堂正是这种努力所取得的主要理论研究成果。

2生态课堂教学模式

生态课堂教学模式的理论基础有学习理论、教学理论、生态学理论、情感教学理论、系统论等,但影响最大的是建构主义学习理论、情感教学理论、生态学理论。

依据建构主义、情感教学理论和生态学等理论,课堂教学过程既是教师引导学生学习的过程,也是学生主动建构知识的过程。当我们运用生态学的观点分析课堂教学过程时,课堂教学应处于一个动态、和谐、平衡、互动、相互联系的环境之中。从生态学的视角看,课堂就是一个微观的生态系统,作为生态因子的教师、学生和环境三者之间形成的一种动态平衡关系。课堂中的生态因素包括人的因素、物质因素和精神因素,这三者之间相互依存,相互制约,呈多元互动的关系。知识是课堂教学的纽带,如果没有知识的传递和建立在其上的互动,课堂便成为无本之木、无源之水。教师作为课堂的组织者和引导者,需要掌握知识和不断更新知识,这是保证教学顺利进行的前提。对于学生,学习知识是根本任务,知识的获取和整合是课堂活动的核心,在此基础上来实现创新等各方面能力的发展。

生态课堂就是从生态学的视角来关注课堂,重构课程理念、师生关系、实践范式等,并在此基础上构建的一种新型课堂。传统课堂的本质是技术,所以传统课堂本质上是一种技术课堂,它运用的方法是控制,追求的结果是知识与技能。而生态课堂的本质是联系、发展、和谐与共生,所以,生态课堂在方法上不强调控制,而重视作为生态因子的教师与学生的投入,就是说彼此将生命融入到课堂中来。

3大型主机汇编语言生态课堂的构建方法

(1)生态课堂中教师和学生的地位

在传统的课堂中,由于学生间的学业竞争和人际交往而带来的行为冲突以及由于要求及格率、优秀率、升学率而带来的师生间的行为冲突,使课堂教学充满紧张的气氛,教师和学生,特别是学生承受着更大的压力。在生态课堂中,由于教育目的的改变,教师不再是为教而教,学生也不再是为学而学。教师的教与学生的学不再是相互对立的,而是相互统一的,教中有学,学中有教。创设这种行为环境的关键是,要让教师认识到课堂教学经历就是自己生命历程的一部分,就是自己生命价值的体现;同样,也要让学生懂得,课堂学习不仅是学习一种知识,更要学会如何做人,如何与别人合作,如何与别人相处。只有这样,师生双方才能协调彼此的行为,相互合作,共同融入到课堂中去。也只有这样,一个和谐、共生的课堂才能真正构建起来。

教师是教学活动的设计者,是教学生态中的组织者,从教学活动的开始到教学活动的结束,教师总是要充分组织各种教学资源,组织教学对象进行各种教学活动,充分发挥学生积极、能动的主体性因素,并协调多种因素之间的关系,保证教学任务的完成和教学目标的实现。教师不再是知识的垄断者、灌输者,而是学习的参与者、引导者和启发者。

在学习过程中,学生可以对教师讲授的内容进行主体性选择,根据是否感兴趣、听得懂,来选择积极主动的听课方式还是消极被动的听课方式。对于不熟悉的教学信息,学生需要调动起自己的知识体系和认知结构,对教学信息进行破译、理解和吸收,最终将新的信息和已有的知识体系及认知结构融合起来,形成新的知识体系和认知结构,达到信息的真正同化。由此可见,教学效果最终是受学生学习状态制约的。

在生态课堂中,师生关系是平等的、互尊互敬的,而不是控制与被控制、支配与被支配的关系。教师的主导作用随学生的发展而变化,随着学生水平的提高,指导日益增强,控制日益减弱,教师应根据学生的水平和状态不断改变生态角色,发挥教学的多种功能,促进师生的和谐发展。

(2)大型主机汇编语言生态课堂的构建

在大型主机汇编语言的教学过程中,一方面要考虑该课程的特点,另一方面要考虑教师和学生在生态课堂中的关系和地位,将两者充分结合起来,才能真正构建一个健康的课堂生态系统。结合多年的教学经验,我们总结了几种操作性较强的方法:

第一,强调以学生为中心,调动学生主动学习积极性。

明确“以学生为中心”,这一点对于教学设计有至关重要的指导意义,因为“以学生为中心”还是“以教师为中心”,将得出两种全然不同的设计结果。至于如何体现以学生为中心,可以从三个方面努力:

(1)要在学习过程中充分发挥学生的主动性,要能体现出学生的首创精神。要求学生预习,鼓励学生在课程开始前提问,教师带着学生的问题来讲解知识。例如在讲授主机汇编语言时,很多同学就会提出主机汇编语言和微机汇编语言有何不同。老师在授课过程中,就会有意识地贯穿该问题。

(2)要让学生在不同的情境下有多种机会去应用他们所学的知识,也就是将知识“外化”;教师在课堂教学中注意设计情景教学,尽量让学生在情景下解决问题,把所学知识能灵活使用于实际生活中。例如在讲授十进制编辑指令时,首先设计一个银行账务打印需求的情景,然后针对该情景需求,讲授如何通过编辑指令实现客户要求。通过这样的讲授,学生对各类指令能解决什么实际应用问题有了较深刻的认识,增强了对繁复指令的掌握和运用的能力。

(3)要让学生能根据自身行动的反馈信息形成对客观事物的认识和解决实际问题的方案,实现自我反馈。例如在讲授如何调试程序时,首先让学生自己在实验课上尝试调试程序。学生自己调试程序后,通常会提出大量的疑问,教师在后续的课程中再详细讲授如何调试,解决程序中的问题,学生课下再去实践对程序的调试环节。通过这样一种自我反馈的方法,学生快速掌握了调试技能,提高了学习积极性。

发挥首创精神、将知识外化和实现自我反馈可以说是体现以学生为中心的三个要素。教师在教学当中注意穿插一些有趣的事情,以幽默的方式激活学生的兴奋中枢,不但活跃课堂气氛,而且能将学生的注意力吸引到课堂上,有时还会带来意想不到的好效果。

第二,学会运用赞赏,营造和谐的生态课堂。

教师尽量多用鼓励、赞赏的手法来营造课堂气氛,因为对学生行为的赞赏和肯定,会使学生产生一种成就感,激发学生进一步努力来获得更多的赞赏。学生从情感上接受一个老师后,更容易接受这位老师所讲授的课程。在课堂中,对于能正确完成练习,按时完成作业并积极配合老师的学生,给予表扬;对于没有特别突出表现的同学,肯定他们的学习态度和良好的纪律性。总之,让每个同学都能感觉到自己处于一个优秀的班集体,有一个喜欢他们的老师,教师在课堂上应该将自己美好的一面表现出来,积极参与到课堂活动中。例如在实验课中,同学们交实验有一个先后次序,在下一次授课中,宣读前十名交实验的同学名单。这样,入前十名的同学就会感受到被肯定,更加积极地参与课程。而这次实验排在后面的同学就会在下一次实验中努力,争取排到前面的名次中。这样不断循环,就营造了一个好的学习氛围。

第三,通过协作学习,加强难点知识的学习。

在个人自主学习的基础上开展小组讨论、协商,以进一步完善和深化对大型主机汇编语言难点和关键点的学习,在讨论中加强理解。整个协作学习过程均由教师组织引导,讨论的问题由教师提出,学生在学习中遇到的难题也可以作为讨论的内容。为了构造和谐的协作学习环境,教师应该注意思考以下问题:

(1)能引起争论的初始问题;

(2)能将讨论一步步引向深入的后续问题;

(3)考虑如何站在稍稍超前于学生智力发展的边界上,通过提问来引导讨论,禁止直接告诉学生应该做什么(即不能代替学生思维);

(4)对于学生在讨论过程中的表现,教师要适时作出恰如其分的评价进行鼓励。

第四,用生产实例,实行情景教学。

学是与一定的社会文化背景和生产实际即“情境”相联系的,在实际情境下进行学习,可以使学生利用原有认知结构中的有关经验去同化和索引当前学习到的新知识,从而赋予新知识以实际问题的意义;如果原有经验不能同化新知识,则要引起“顺应”过程,即对原有认知结构进行改造与重组。总之,通过“同化”与“顺应”才能达到对新知识意义的建构。在传统的课堂讲授中,由于不具备实际情境的生动性、丰富性,同化与顺应过程较难发生,使学生对知识的意义建构发生困难。

大型主机汇编语言教材中的程序例题多为计算、移位、逻辑处理、输入输出处理、调用子程序,编写宏指令等,单纯讲授这些内容会使学生觉得枯燥无味,而且会错误地认为汇编语言没有什么用处,只能做这些事情。所以在教学过程中,适当地引入一些有趣的实例,会激发学生的学习兴趣。例如在讲授输入输出处理时,就针对一个记录了用户购买商品信息的文件,要求编程实现对该文件记录信息的读入,并对数据进行处理,最后编辑成一定的格式打印输出。该实例给出了输入文件的记录格式和含义以及要求输出的格式,教师然后讲授如何通过指令实现对数据的读入、编辑、输出,这样学生会带着问题去思考和学习,课堂听课效率显著提高。

第五,提供丰富的环境资源,调动课上课下的学习热情。

课堂生态环境中较为重要的因素之一是现代教育技术,已有研究表明现代化教学手段的总体效果优于传统教学手段,但在具体指标上略有差异。因此在大型主机汇编语言的教学中,我们同时采用多媒体设备和黑板两种教学方式,把多媒体教学的直观形象和黑板教学中更多的互动与沟通结合起来,充分发挥二者的优势。在讲解指令的寻址方式时,利用投影动态显示寻址过程,复杂的过程变得一目了然;每学一个新的指令时,都在主机系统中编程运行,并查看结果,使得繁复的讲解过程变得简单清晰;在课堂上对程序的讲评和现场的调试,使学生找到发现问题的途径并提高解决问题的能力。但在教学生如何编写程序时,更多的是采用黑板,通过一条一条指令的编写,讲解编程的思路,学生能更好地领悟编程方法。在课堂下,为了支持学生的主动探索学习,教师提供大量丰富的信息资源,包括各种类型的教学媒体和教学资料,主要是用于支持学生的自主学习和协作式探索。教师需要帮助学生对于如何获取以及有效地利用信息资源等问题作出明确指导。

4结束语

针对大型主机汇编语言的课程特点,将生态学的观念引入课堂,使课堂不仅成为知识传递的场所,更是促进学生完善和发展自我的舞台,使师生两个重要的课堂生态因子能平等的、和谐的共同发展,实现真正的生态课堂平衡,提高了教学质量。

参考文献:

汇编语言范文篇4

关键词FranklinC51编译器汇编语言结构化设计模块中断

--------------------------------------------------------------------------------

在研制单片机应用系统时,汇编语言是一种常用的软件工具。它能直接操作硬件,指令的执行速度快。但其指令系统的固有格式受硬件结构的限制很大,且难于编写与调试,可移植性也差。随着单片机硬件性能的提高,其工作速度越来越快,因此在编写单片机应用系统程序时,更着重于程序本身的编写效率。而FranklinC51交叉编译器是专为80C51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可靠性高,可移植性好,即使在代码的使用效率上,也完全可以和汇编语言相比,因此目前它已成为开发80C51系列单片机的流行工具。

1C51语言程序设计的基本技巧

C语言是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。

在程序设计过程中,要充分利用C51语言的预处理命令。对于一些常用的常数,如TRUE,FALSE,PI以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义"#define"或集中起来放在一个头文件中进行定义,再采用文件包含命令"#include"将其加入到程序中去。这样当需要修改某个参量时,只须修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都作修改,从而有利于文件的维护和更新。现举例说明如下:

例1对于不同的单片机晶振,程序取不同的延时时间,而且可根据外界条件的变化修改延时时间的长短。对于这样的程序,可利用宏定义和条件编译来实现。程序如下:

#defineflag1

#ifdefflag==1

#definefosc6M

delay=10;

#elifflag==0

#definefosc8M

delay=12;

#else

#definefosc12M

delay=20;

#endif

main()

{

for(I=0;I<delay;I++);

}

这样源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。

2C51语言与汇编语言程序的混合编程

C51编译器能对C语言源程序进行高效率的编译,生成高效简洁的代码,在绝大多数场合采用C语言编程即可完成预期的目的。但有时为了编程直观或某些特殊地址的处理,还须采用一定的汇编语言编程。而在另一些场合,出于某种目的,汇编语言也可调用C语言。在这种混合编程中,关键是参数的传递和函数的返回值。它们必须有完整的约定,否则数据的交换就可能出错。下面就以力源公司的10位串行A/D转换器TLC1549为例说明C语言程序与汇编语言程序的调用。

图1TLC1549管脚图

1549的管脚图和时序图分别如图1和图2所示,假定DATAOUT接P1.0,接P1.1,CLOCK接P1.2。

1549的具体特性请查阅有关资料。

例2C语言程序与汇编语言程序的调用,其子程序如下:

PUBLICAD;入口地址

SEG_ADSEGMENTCODE;程序段

RSEGSEG_AD

USING0

AD:MOVR6,#00

MOVR7,#00

SETBP1.1

ACALLDELAY

CLRP1.1

ACALLDELAY

MOVR0,#10

RR0:SETBP1.2

NOP

CLRP1.2

DJNZR0,RR0

ACALLDELAY

MOV30H,R6;A/D转换的高

;两位保存在R6中

ACALLCIR

MOVR6,30H

SETBP1.2

NOP

CLRP1.2

MOV30H,R6

ACALLCIR

MOVR6,30H

MOVR0,#8;A/D转换的低

;8位保存在R7中

RR2:SETBP1.2

NOP

CLRP1.2

MOV30H,R7

ACALLCIR

MOVR7,30H

DJNZR0,RR2

RET

CIR:CLRC

MOVC,P1.0

MOVA,30H

RLCA

MOV30H,A

RET

END

在以上程序中,函数的返回值为一无符号整型数,根据调用规则,返回值的高位必须在R6中,低位在R7中,这样才可保证数据的传递不出错。另外,在调用过程中,必须注意寄存器的入栈。这样在以后用到A/D转换时,在C语言中调用汇编语言子程序AD()即可。

3C51中断处理过程

C51编译器支持在C源程序中直接开发中断过程,因此减轻了使用汇编语言的繁琐工作,提高了开发效率。中断服务函数的完整语法如下:

void函数名(void)[模式]

[再入]interruptn[usingr]

其中n(0~31)代表中断号。C51编译器允许32个中断,具体使用哪个中断由80C51系列的芯片决定。r(0~3)代表第r组寄存器。在调用中断函数时,要求中断过程调用的函数所使用的寄存器组必须与其相同。"再入"用于说明中断处理函数有无"再入"能力。C51编译器及其对C语言的扩充允许编程者对中断所有方面的控制和寄存器组的使用。这种支持能使编程者创建高效的中断服务程序,用户只须在C语言下关心中断和必要的寄存器组切换操作。

例3设单片机的fosc=12MHz,要求用T0的方式1编程,在P1.0脚输出周期为2ms的方波。

用C语言编写的中断服务程序如下:

#include<reg51.h>

sbitP1_0=P1^0;

voidtimer0(void)interrupt1using1{

/*T0中断服务程序入口*/

P1_0=!P1_0;

TH0=-(1000/256);/*计数初值重装*/

TL0=-(1000%256);

}

voidmain(void)

{

TMOD=0x01;/*T0工作在定时器方式1*/

P1_0=0;

TH0=-(1000/256);/*预置计数初值*/

TL0=-(1000%256);

EA=1;/*CPU开中断*/

ET0=1;/*T0开中断*/

TR0=1;/*启动T0*/

do{}while(1);

}

在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。

汇编语言范文篇5

1计算机C语言的特点

C语言主要有以下几个特点:一是语言功能性全面。C语言具备多种数据类型,通过指针概念提高了编程效率。另外,C语言还具备强大图形功能,支持大部分类型的驱动器,其具有较强的逻辑判断能力,实现决策支持;二是适用范围比较广。C语言能够在各种操作系统中使用,比如UNIX、DOS等,并且机型匹配度比较高;三是具备较强语言结构性。C语言属于结构式语言,数字代码分割化具备独立级程序信息交流的特点,此结构的主要优势就是编程语句结构清楚,能够直接读取和使用;四是使用效率高。C语言应用结构比较简单,能够直接扫描读取目标内存,并且对系统功能直接调用,具有大部分高级语言没有的效率;五是语言灵活、简洁。C语言的关键字有32个,控制语句有9种,具有自由化源程序书写格式,能够在指定编程中区分大小写,避免不需要的部分,C语言语法和编程比较简单,结构布局比较紧密。

2计算机C语言的软件编程技巧

在编程过程中,C语言软件编程主要优势为容易操作、简洁、紧凑,能够实现计算机软件多功能。为了有效提高软件编程的效果,要掌握以下的编程技巧。

2.1指针技巧

C语言比其他高级语言要优秀,指针是一种特殊的变量,通过指针解决用户程序编写时遇到的问题。指针主要包括指针的值、类型与名称。程序员在编写程序的时候要先定义指针名称后赋值,从而对指针和变量进行区分。程序员调用指针,利用C语言中特有的函数进行定义,以算法和程序编写得到的方式展现算法具体内容。在对函数编写过程中,程序要对参数名、函数名与返回值进行设置,对位运算、文件知识进行明确,实现程序目标需求,确定二进制对象。在此过程中,要设置文件程序、数据的完整顺序,以便于查找数据。

2.2位运算

C语言位运算在计算机语言中尤为重要,通过二进制开展位运算,通过计算机软件进行编写。另外,通过程序文件存储程序,并且查找相关数据。最后,通过自然语言和流程图实现算法,利用流程序将算法的过程展现出来,通过流程图符号将算法程序展现出来。2.3文件知识位运算在C语言中是唯一的,位运算对象为二进制位。在进行各种运算时和二进制位结合,并且在开展运算过程中要和相关程序结合。计算机中的文件具有重要的作用,其包括数据文件与程序文件两种。在编程处理过程中,程序设计员在文件中将编写程序保存,对于数据查找是非常有利的。

2.4特有函数

在C语言编程的时候会使用部分特有函数,函数名能够将函数自身功能充分展现出来。在对函数定义后,函数参数名、名称和返回值类型都能够通过程序员进行定义。C语言翻译系统具备库系统,并且对函数名称定义。所以,在对程序调用的时候,程序员只需要根据“#include指令”,在全部文件中融入相对应的头文件就行。比如,在运行程序的时候,如果使用aqrt函数,为了保证程序能够稳定的运行,要在头文件中融入“#includestring.h”。

2.5汇编语言

C语言与汇编语言同为计算机软件开发程序,所以可以将两者结合使用,以便完成难度比较大的编程任务。在编写程序的时候,使用C语言能够嵌入汇编语言,在寄存器存储转换功能下使用汇编语言。比如,在C语言源程序中输入汇编语言,使用大括号扩充程序,之后加入“asm”,在asm前输入命令代码,通过“;”隔开。

3C语言程序设计案例分析

在信息技术不断发展的过程中,在软件开发时要充分利用不同语言混合编程,具体包括以下内容。

3.1混合软件编程方法

利用两种语言混合编程实现软件的开发,可以提高程序开发的效率,混合软件编程主要方法为:其一,在C语言中结合汇编语言。将asm汇编语句在C语言源程序中嵌入:asmmovax,5将此汇编语句嵌入到C语言源程序中,要使用大括号概括嵌入程序,以下为部分主要程序:Main(){asm{movah,2movbh5int10h)}程序嵌入在试验过程中的格式是固定的,将sam关键词添加到嵌入代码前,或者直接将汇编语言添加到asm代码块中。其二,C语言编写与汇编程序,独立编译目标代码模块。在混合编程中,C语言能够有效调用汇编语言子程序和定义变量,通过多功能模块创建任务,利用合适语言独立编程不同功能模块。所以,程序员要根据不同模块的特点对语言与语言编程进行独立编程,构成目标文件并且连接,构成完整可执行文件。

3.2案例分析

在软件开发中,C语言和汇编语言结合可以使编程效率得到提高。在具体操作中,程序员利用混合后传递参数,在寄存器中利用存储单元调用变量,控制返回值。此程序主要功能就是寻找5个数的最小数,主要包括汇编子程序qiumin.asm、主程序min.c。使用C语言编写主程序需使用汇编语言编写子程序,之后通过主程序调用,从而对最小数寻找,程序代码为:min.c*/#include<stdio.h>Intexternqiumin(intciunt,intv1,int,v2,intv3,intv4,intv5);Main(){Intmin;min=qiumin(12,54,8,4,23,9);printf(“Theminis%d/n”min);}

3.3C语言多项式除法

首先,定义函数名称,对初始位置确定并且创建数据库。之后基于C语言实现编程与计算,此时系统就会生成冗余余数,在remainder文件中存储。程序员以运行结果结合实际需求,分析软件应用性。假如结果满足运行需求,表示软件运行正常。反之,程序员就要检查编程过程,之后进行更改。使用C语言实现循环冗余校验码流程的设计为:USHORTpolydiv(USHORTdata,USHORTdivisor,USHORTremainder)taticUSHORTquotient,i;For(i+8;i>0;I-)returnremainder}

结语:

汇编语言范文篇6

【论文摘要《微机原理和接口技术》是高职高专计算机及相关专业必修的一门专业基础课,同时也是一门实践性和应用性很强的课程。本文针对该课程在教学过程中存在的一些新问题,根据笔者多年的教学实践提出了一些改进的方法和建议,以期提高该门课程的教学效果。

《微机原理和接口技术》是高职高专计算机及相关专业必修的一门专业基础课,同时也是一门实践性和应用性很强的课程。经过理论和实验两方面的教学,使学生把握微型计算机的基本工作原理,汇编语言程序设计的基本方法,微机系统和输入输出设备的典型接口电路和接口技术,并能综合运用软、硬件技术分析实际新问题。《微机原理和接口技术》这门课程的学习涉及到很多先行课程,比如《模拟电子技术》、《数字电路》等,这些课程的学习效果往往对本课程的学习有一定影响,加之本课程的教学内容较多,各个知识点之间相互交叉又造成理解上的困难,需要学生记忆的内容太多,导致学生学起来较困难,从而失去了学习的信心,达不到预期的教学效果。针对这样的目前状况,作者结合自己的教学实践,谈谈对于该课程教学的思索。

一、让学生充分熟悉到该课程的重要性,提高学生的学习动力及喜好

随着高校的扩招,就业压力的增大,学生密切的关注所学的知识是否能够促进自己未来的就业和发展,高职学生尤是如此,所以在教学过程中经常有学生提问说《微机原理和接口技术》这门课程晦涩难懂,学习它有什么实际意义,对我今后的学习和发展有什么功能。对于学生的提问我思索摘要:其实在教学过程中第一节课是非常关键的,在第一节课里教师应该将本课程的内容进行整体的介绍并且要告诉学生学习该课程的意义。《微机原理和接口技术》主要讲述微型计算机的基本工作原理,汇编语言程序设计的基本方法,微机系统和输入输出设备的典型接口电路和接口技术三部分内容。第一部分内容的学习有利于学生对微机工作原理有深入地了解,直接地应用在嵌入式计算机、自动控制等方面,把握它也有利于对后续课程的学习,比如《操作系统》、《编译原理》等,并且这一部分内容中介绍到的计算机内部各部件的结构又是汇编语言程序设计的基础。第二部分介绍的汇编语言程序设计是我们和计算机沟通最直接的方式,假如我们想从事计算机科学方面的工作的话,汇编语言的基础是必不可缺的,因为我们的工作平台、探究对象都是机器,我们通过汇编语言和机器交流,尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是C语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。由于汇编语言和硬件密切相关,所以第一部分内容的学习一定要打好基础。第三部分内容是一些常用且典型的芯片,使学生能深层次的理解微机系统,为以后学习其他芯片打下基础。只有让学生熟悉到本课程的学习确实能对自己的就业和未来发展有用,才能激起学生学习的喜好和动力,提高主动学习的热情。

二、改进教学方法,提高教学效果

《微机原理和接口技术》这门课程中有一些内容确实比较抽象,难于理解,又有很多知识点需要学生记忆,所以光有学习的热情还不够,正确的学习方法才能有事半功倍的学习效果。

1、在学生学习过程当中,要不断鼓励学生

《微机原理和接口技术》这门课程会分章节讲述构成微机的中心处理器,系统总线,存储器,输入输出设备和一些典型的接口电路以及它们的工作原理。我们知道微机是一个有机的整体,要讲清楚任何一个部件的工作原理都不可能只单独将这一部件拿出来讲,必然涉及到其他新部件,而其他新部件我们还没接触到,所以经常出现一个知识点还没讲清楚,又出现新的疑问,在整个课程的学习当中疑问会一直存在,直至该课程结束,也就是说只有到学期末所有的疑问才能搞清楚。还有这门课中最难的地方在第二章,本章知识理解起来困难,并且有大量内容(几乎全部内容)要求在理解的基础上记忆以便为后续的学习奠定基础,而这时学生刚刚开始接触这门课程便一下子觉得很难,轻易产生放弃的思想。所以教师在整个学期中非凡是学期初一定要不断鼓励学生摘要:学习中存在新问题是很正常的,随着进一步学习新问题会得到解决,关键是坚持,树立学习信心。

2、对于抽象的概念和工作原理,老师要精心设计课堂教学,使晦涩难懂的知识变得浅显易懂

课堂教学是使学生获得知识最有效最快捷的方式。在教学过程中,真正做到“以学生为本”,提高课堂效率,我的心得是精心的进行合理、有效的课堂教学设计。合理、有效的课堂教学设计可以在最短的时间得到最好的教学效果。比如,本课程的教学布置中,先讲cpu内部寄存器后讲存储器分段,讲cpu内部寄存器时就要涉及到存储器分段,这样一来知识点前后交叉多,学生听不明白,老师也会觉得讲不清楚。换种思路,重新调整一下次序,先介绍存储器分段,讲清楚四种段、段地址和偏移地址以及物理地址的形成,再介绍cpu内部寄存器,4个段寄存器分别存放4个段的段地址,地址指针寄存器和指令指针寄存器用来存放偏移地址,这样讲符合学生接受知识的规律,用时较少而且教学效果好。

3、采用多媒体教学手段,更高效地完成课堂教学任务

随着信息技术的发展,多媒体技术在课堂教学中得到了广泛的应用。多媒体计算机使图、文、声、像集于一体,使教学内容形象生动富有感染力,使抽象新问题形象化。一些抽象概念在单纯语言讲解的情况下,感性材料不足,说服力不强,通过多媒体可以把抽象的理论和抽象的模型具体形象地展示在屏幕上帮助学生理解。比如讲存储器分段时,说到存储单元物理地址唯一而逻辑地址不唯一时很多学生感到很困惑“逻辑地址不唯一”,传统教学手段凭教师一张嘴、一根粉笔、一块黑板有时很难讲清楚,这时采用多媒体动画的形式将存储器分段进行演示,它能够直观形象地让学生看出段和段之间的一种重叠关系,某个存储单元既属于A段又属于B段,从而得出这一存储单元逻辑地址不唯一,既记住了结论又很好的理解了结论推导的整个过程。

4、注重实践环节

首先,高职教育的培养目标是培养重点面向基层的中高级工程技术人才,因此,加强实践教学,具有重要意义。其次,本门课程的实践性和应用性非常强,对于大多学生来说,许多知识只有通过实践教学才能真正的理解,这就要求我们必须重视实践教学的功能,改进教学内容,把实践课教学放到和理论教学同等重要的位置。高职学生综合运用知识的能力较差,所以实验基本上以验证性的实验为主,学生只需输入现成的程序,连接较少的导线,客观上为缺乏自觉性的学生提供了偷懒的机会,结果实验虽然做了,学生却没有多少收获,所以指导教师的要求往往不能得到很好的落实。针对验证性实验许多学生完成以后不愿深入思索和理解的现象,教师根据实验情况,设计实验思索题,这些实验思索题需要仔细思索对实验程序和连接线作出修改后才能得到实验结果,从而引导学生去思索完成。通过这样的做法,在以后的实验和实训中逐步培养学生的分析能力、综合运用知识的能力。近些年来,学校每年要组织学生参加大学生挑战杯竞赛,竞赛的许多题目涉及到微机应用系统设计,学生通过参加竞赛的培训和参赛,能深入理解微机原理和接口技术的知识,并能将其运用到实际中去。

汇编语言范文篇7

2.联系元器件厂商,获取器件资料费用

3.元器件费用

4.开发人员薪资

5.样机测试费用

6.时间成本

以上几个点的成本控制和管理在很多工程管理的书籍和资料都有详细介绍,本文只是根据笔者所做过的电子设计工程补充一些看法。

进入项目可行性分析阶段后,项目管理人员应该仔细做好项目规划工作,一个项目的成功与否,一般取决于该项目的技术复杂性和成本复杂性。为了避免由于不可预知的工程复杂性而导致的项目流产,项目管理人员在制定设计方案的时候需要招集各方面的人员,把该项目仔细的分解开来,然后针对这些子项目逐一探讨分析,仔细地权衡各方面因素,看看是否可行,成功的代价如何,只有每个子项目都做到有把握后才能将整个项目推入实施阶段。

在项目通过可行性论证后,就转入正式的开发阶段。项目管理人员需要制定详细的开发的技术规划,一个项目的设计思路确定之后,该产品的开发成本、制造成本和维护成本也就大致确定下来了。所以一个不良的规划,往往会对项目带来灾难性的后果。这个阶段项目负责人要和合作的开发人员充分交换意见,根据开发人员的数量和专长将项目分解开来,让每一个工程技术人员完成本项目的一部分工作。

项目开始运转后一定要做好全套设计文档。文档中要明确每个开发者所必须完成的功能和相互之间的接口。同时也要要求每个开发人员为自己所开发的模块做好技术文档。表面上看这个工作增加了开发成本,但这样不仅有利于该项目今后的扩充维护,也同样有利于该项目的测试工作。这事实上降低了项目在这些方面的成本,项目规模越大,在这方面投入所体现的效益就越明显。同时这项工作还可以降低由于开发人员流动带来的工程扩充维护的风险,因为技术文档越多越详细,继承该工作的技术人员所付出的时间代价就越小。

在元器件选择方面,应尽量使用标准器件或易于采购的器件。因为这些元件产量大,价格好,供货渠道也多,对于降低硬件成本有显而易见的好处。尤其在所设计的产品产量不会很大的时候更应该如此。在设计一些高附加值,小批量的产品的时候,尽量使用硬件模块和软件模块来设计,这虽然加大了一些投入,但总的来说,压缩开发时间,让产品更快面对市场带来的效益会大于这些投入。同时模块化设计还可以提高产品的设计质量。更可以将开发人员的精力集中于高层次的设计上,提高他们的成就感。

尽量使用各种EDA(电子设计自动化)工具。综合使用各种EDA工具来完成设计,可以大幅度加快开发进度,减少差错,提高工程质量。一提起EDA工具很多人就会想起Protel、Orcad、Pads等电路板布线软件。其实这些工具不仅包含原理图和电路板布线,一般也包含了可编程逻辑器件(PLD)设计、信号仿真等模块,充分利用这些功能往往可以在设计阶段就发现很多构思和图纸上的缺陷。对减少设计阶段的返工和修改有事半功倍的效果。此外,还有一些别的种类的软件,虽然不是专门的电子设计软件,但我们依然可以借用。比如:如果项目中包含了复杂一些的数学算法(如模糊逻辑和人工神经元算法等),我们还可以动用专门的数学CAD软件――MATLAB先仿真一下你的信号处理流程,然后根据仿真的结果来设计相关的硬件和软件。就节约了很多在目标机上反复写片、反复调试算法的时间。

在设计电路的时候,修改硬件在所难免。为了便于电路修改,要注意电路的可塑性。电路的可塑性是指电路的可修改能力。如果电路便于修改,会减少很多开发人员更改电路的低级劳动。提高电路的可塑性一般有以下几种方法:

1.能够使用软件实现的功能不要用硬件实现。由于硬件和软件的物理结构的差异,在修改硬件的时候要付出比软件多得多的代价。用软件代替硬件后还能降低产成品的成本,便于批量生产和销售。

2.如果电路中有CMOS、TTL电路要尽量使用PLD(可编程逻辑器件)来实现,因为PLD本身具有可修改的特性。用它们实现数字逻辑后,要改变逻辑关系的时候,只要在计算机上修改它们的逻辑描述文件,然后经过编译、写片就得到一片新的逻辑关系的集成电路。就像修改软件一样容易。用PLD代替不同的普通数字集成电路后,有利于减少元器件种类。方便采购和库存管理。

3.试制过程中适当在电路板上多留一些资源,比如PLD的容量要比你预期的容量稍大一些,单片机的ROM、RAM、I/O端口等资源都要留适当的空余。因为在设计过程中随时会有很多不可预见的情况发生,解决这些问题,通常会增加对硬件资源的需求量。如果没有在电路板上保留适当的冗余资源,将不得不在电路板外面再搭一块小电路板。事实证明,这样修改电路不仅容易给电路引入干扰信号,而且会大幅度降低试制样机的可靠性,同时会使技术人员的很多时间花费在反复修改电路的简单劳动上。

编写单片机的软件的时候,应该尽量使用高级语言来编写。现在许多开发单片机的技术人员依然保留了80年代的开发方法。使用汇编语言,逐条指令编写,并且手工分配单片机中的内存资源。这种方法在写小规模软件还可以,可一旦软件规模变大之后,由于汇编语言的低可读性、低结构性往往会让设计人员被自己软件中的复杂的逻辑关系搞得晕头转向,在一个软件的逻辑关系混乱后,要保证写出来的软件能安全运转是很困难的。我们推荐使用C语言来写软件单片机代码。(对于常见的8051系列,我们一般使用KEIL、FLANKLIN等软件。其它类型的单片机一般都有其配套的C语言编译器,该型号单片机的经销商一般可提供)用C语言有这么几个好处:

1.可以大幅度加快开发进度。

2.可以实现软件的结构化编程,它使得软件的逻辑结构变得清晰、有条理。

3.在写一些数学算法和循环、判断语句的时候有比汇编语言高得多的效率。

4.省去了人工分配内存资源的工作,在汇编语言中我们不得不为每一个子程序来分配储存变量的空间,这是一个复杂、乏味又容易出差错的工作。而使用C语言后你只要在代码中申明一下变量的类型,编译器就会自动为你分配寄存器和内存,低级重复易出差错的事情都由计算机代劳了。根本不要人工干预。

5.因为循环、判断语句和变量名字都使用自然语言,因此写出来代码的可维护性和软件可读性很好。这样当需要更换软件开发人员的时候,可以比较容易地进行代码移交和消化。即使没有更换人员,他们在维护自己的代码的时候也比较容易。

6.当写好了一个算法后,以后需要在不同种类的CPU上也需要这个算法时,可以直接引用原来的代码,再配合这种CPU专用的编译器重新编译就可以了。这样可以实现软件的低成本跨平台移植。而汇编语言在这种情况下,除了重新写代码,没有别的办法。因为C语言的这种特性,如果在设计复杂算法时(比如视频/音频信号处理、模糊逻辑和人工神经元算法等),可以在PC机上使用VisualC++、C++Build等x86平台的C语言编译器设计、调试该算法的代码,调试成功后就可以移植到单片机的软件系统中去。由于PC机上有充足的系统资源,开发调试进度会有大幅度的提高,这样就节约了软件的时间成本。

7.在团体写作的软件中,软件接口容易做到规范统一。

虽然使用C语言写出来的代码会比汇编语言所占用的空间要大5%~20%,但是由于半导体技术的发展,芯片的容量和速度有了大幅度的提高。在这种情况下,代码占用的空间差异已经不是很关键的了。相比之下,我们更应该注重软件是否可以长期稳定运行的能力,注重使用先进开发工具所带来的时间成本的优势。

汇编语言范文篇8

【关键字】自然辩证法计算机语言计算机技术编程语言因特网

面向对象正文一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。一、科学认识大门的钥匙--当代自然辩证法自然辩证法,是马克思主义对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉著作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。自然辩证法是马克思主义哲学的一个重要组成部分。在辩证唯物主义哲学体系中,自然辩证法与历史唯物论相并列。它集中研究自然界和科学技术的辩证法,是唯物主义在自然界和科学技术领域中的应用,它的原理和方法主要适用于自然领域和科学技术领域。学习和运用自然辩证法将有助于我们搞清科学和哲学的关系,从而更加清楚地认识科学的本质和发展规律,更加全面的观察思考问题,只有加深了认识,我们才能更好地发挥主观能动性,迎接新的科学技术的挑战。下面我将以自然辩证法的观点来分析计算机语言的发展历程。二、计算机语言的发展历程和发展趋势计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。计算机语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言。1、计算机语言的发展历史:二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(KonradZuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着C,PASCAL,FORTRAN,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如EIFFEL,C++,JAVA,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。2、计算机语言的发展现状:目前通用的编程语言有两种形式:汇编语言和高级语言。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类和编译类。3、计算机语言的发展趋势:面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,未来语言的发展将不在是一种单纯的语言标准,将会以一种完全面向对象,更易表达现实世界,更易为人编写,其使用将不再只是专业的编程人员,人们完全可以用订制真实生活中一项工作流程的简单方式来完成编程。下面是一张计算机语言发展图表,从中不难得出计算机语言发展的特性:²简单性提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序²面向对象提供简单的类机制以及动态的接口模型。对象中封装状态变量以及相应的方法,实现了模块化和信息隐藏;提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用²安全性用于网络、分布环境下有安全机制保证。²平台无关性与平台无关的特性使程序可以方便地被移植到网络上的不同机器、不同平台。三、面向未来的汉语程序设计语言:从计算机诞生至今,计算机自硬件到软件都是以印欧语为母语的人发明的。所以其本身就带有印欧语的语言特征,在硬件上CPU、I/O、存储器的基础结构都体现了印欧语思维状态的"焦点视角",精确定义,分工明确等特点。计算机语言也遵照硬件的条件,使用分析式的结构方法,严格分类、专有专用,并在其发展脉络中如同他们的语言-常用字量和历史积累词库量极度膨胀。实际上,计算机硬件的发展越来越强调整体功能,计算机语言的问题日益突出。为解决这一矛盾,自六十年代以来相继有500多种计算机语言出现,历经五代,至今仍在变化不已。汉语没有严格的语法框架,字词可以自由组合、突出功能的整体性语言。在计算机语言问题成为发展瓶颈的今天,汉语言进入计算机程序设计语言行列,已经成为历史的必然。1、发展汉语程序设计语言的理由:1)计算机语言问题解决,只能从人类语言中寻找解决方案;2)计算机语言的现存问题是形式状态与功能需求的矛盾;3)计算机硬件的发展已为整体性语言-汉语进入计算机程序设计语言提供了条件2、汉语程序设计语言的技术特点:1)汉文字的常用字高度集中,生命力极强,能灵活组合,简明准确地表达日新月异的词汇,这些优点是拼音文字无法企及的。2)汉语言的语法简易灵活,语词单位大小和性质往往无一定规,可随上下语境和逻辑需要自由运用。汉语言的思维整体性强,功能特征突出。3)汉语程序设计语言的发明者采用核心词库与无限寄存器相结合的方法,实现了汉语言的词素自由组合;将编译器与解释器合一,使汉语程序设计语言既能指令又能编程;以独特的虚拟机结构设计,将数据流与意识流分开,达到汉语程序设计语言与汉语描述完全一致,通用自如。具有汉语言特性的汉语程序设计语言的出现,打破了汉语言不具备与计算机结合的条件而不能完成机器编码的神话。还为计算机科学与现代语言学研究提出了一条崭新的路径,它从计算机语言的角度,从严格的机械活动及周密的算法上,向世人证实汉语的特殊结构状态,及其特殊的功能。四、计算机语言之父——尼盖德尼盖德帮助因特网奠下了基础,为计算机业做出了巨大贡献。尼盖德是奥斯陆大学的教授,因为发展了Simula编程语言,为MS-DOS和因特网打下了基础而享誉国际。克里斯汀·尼盖德于1926年在奥斯陆出生,1956年毕业于奥斯陆大学并取得数学硕士学位,此后致力于计算机计算与编程研究。1961年~1967年,尼盖德在挪威计算机中心工作,参与开发了面向对象的编程语言。因为表现出色,2001年,尼盖德和同事奥尔·约安·达尔获得了2001年A.M.图灵机奖及其它多个奖项。当时为尼盖德颁奖的计算机协会认为他们的工作为Java,C++等编程语言在个人电脑和家庭娱乐装置的广泛应用扫清了道路,“他们的工作使软件系统的设计和编程发生了基本改变,可循环使用的、可靠的、可升级的软件也因此得以面世。”尼盖德因其卓越的贡献,而被誉为“计算机语言之父”,其对计算机语言发展趋势的掌握和认识,以及投身于计算机语言事业发展的精神都将激励我们向着计算机语言无比灿烂的明天前进。五、结束语用科学的逻辑思维方法认识事物才会清楚的了解其过去、现在和未来,计算机语言的发展同样遵循着科学技术发展的一般规律,以自然辩证法的观点来分析计算机语言,有助于我们更加深入地认识计算机语言发展的历史、现状和趋势,有了自然辩证法这把开启科学认识大门的钥匙,我们将回首过去、把握现在、放眼未来,正确地选择计算机语言发展的方向,更好的学习、利用和发展计算机语言。六、致谢首先感谢张老师,张老师幽默的讲解和精炼的内容使我受益匪浅,使我对以后的工作和生活有了更深刻的认识。另外要感谢本文所参考的文献的作者和相关网站。最后还要感谢在我写论文过程中提供无私帮助的人们,以及给我支持的家人和朋友。

参考文献

1.《计算机语言与计算机程序发展历史》博客中国网

2.《计算机发展史》上海科学技术出版社

3.《软件发展与社会进步》蔡希尧

4.《自然辩证法概论》北京航空航天大学出版社

汇编语言范文篇9

关键词:电子产品设计成本控制EDAPLD单片机C语言

一、我们在设计电子产品的过程一般都会对所设计的产品进行成本控制,总是尽量简化电路,减少元器件、尽量简化安装工序。一般这些简化都是针对最终产品的。但是作为开发工作本身也同样需要成本,也需要进行成本控制。尤其是一些产量小、附加值高的非消费类产品。

电子产品的开发成本一般包括以下这么几块:

1.项目可行性分析费用

2.联系元器件厂商,获取器件资料费用

3.元器件费用

4.开发人员薪资

5.样机测试费用

6.时间成本

以上几个点的成本控制和管理在很多工程管理的书籍和资料都有详细介绍,本文只是根据笔者所做过的电子设计工程补充一些看法。

进入项目可行性分析阶段后,项目管理人员应该仔细做好项目规划工作,一个项目的成功与否,一般取决于该项目的技术复杂性和成本复杂性。为了避免由于不可预知的工程复杂性而导致的项目流产,项目管理人员在制定设计方案的时候需要招集各方面的人员,把该项目仔细的分解开来,然后针对这些子项目逐一探讨分析,仔细地权衡各方面因素,看看是否可行,成功的代价如何,只有每个子项目都做到有把握后才能将整个项目推入实施阶段。

在项目通过可行性论证后,就转入正式的开发阶段。项目管理人员需要制定详细的开发的技术规划,一个项目的设计思路确定之后,该产品的开发成本、制造成本和维护成本也就大致确定下来了。所以一个不良的规划,往往会对项目带来灾难性的后果。这个阶段项目负责人要和合作的开发人员充分交换意见,根据开发人员的数量和专长将项目分解开来,让每一个工程技术人员完成本项目的一部分工作。

项目开始运转后一定要做好全套设计文档。文档中要明确每个开发者所必须完成的功能和相互之间的接口。同时也要要求每个开发人员为自己所开发的模块做好技术文档。表面上看这个工作增加了开发成本,但这样不仅有利于该项目今后的扩充维护,也同样有利于该项目的测试工作。这事实上降低了项目在这些方面的成本,项目规模越大,在这方面投入所体现的效益就越明显。同时这项工作还可以降低由于开发人员流动带来的工程扩充维护的风险,因为技术文档越多越详细,继承该工作的技术人员所付出的时间代价就越小。

在元器件选择方面,应尽量使用标准器件或易于采购的器件。因为这些元件产量大,价格好,供货渠道也多,对于降低硬件成本有显而易见的好处。尤其在所设计的产品产量不会很大的时候更应该如此。在设计一些高附加值,小批量的产品的时候,尽量使用硬件模块和软件模块来设计,这虽然加大了一些投入,但总的来说,压缩开发时间,让产品更快面对市场带来的效益会大于这些投入。同时模块化设计还可以提高产品的设计质量。更可以将开发人员的精力集中于高层次的设计上,提高他们的成就感。

尽量使用各种EDA(电子设计自动化)工具。综合使用各种EDA工具来完成设计,可以大幅度加快开发进度,减少差错,提高工程质量。一提起EDA工具很多人就会想起Protel、Orcad、Pads等电路板布线软件。其实这些工具不仅包含原理图和电路板布线,一般也包含了可编程逻辑器件(PLD)设计、信号仿真等模块,充分利用这些功能往往可以在设计阶段就发现很多构思和图纸上的缺陷。对减少设计阶段的返工和修改有事半功倍的效果。此外,还有一些别的种类的软件,虽然不是专门的电子设计软件,但我们依然可以借用。比如:如果项目中包含了复杂一些的数学算法(如模糊逻辑和人工神经元算法等),我们还可以动用专门的数学CAD软件――MATLAB先仿真一下你的信号处理流程,然后根据仿真的结果来设计相关的硬件和软件。就节约了很多在目标机上反复写片、反复调试算法的时间。

二、在设计电路的时候,修改硬件在所难免。为了便于电路修改,要注意电路的可塑性。电路的可塑性是指电路的可修改能力。如果电路便于修改,会减少很多开发人员更改电路的低级劳动。提高电路的可塑性一般有以下几种方法:

1.能够使用软件实现的功能不要用硬件实现。由于硬件和软件的物理结构的差异,在修改硬件的时候要付出比软件多得多的代价。用软件代替硬件后还能降低产成品的成本,便于批量生产和销售。

2.如果电路中有CMOS、TTL电路要尽量使用PLD(可编程逻辑器件)来实现,因为PLD本身具有可修改的特性。用它们实现数字逻辑后,要改变逻辑关系的时候,只要在计算机上修改它们的逻辑描述文件,然后经过编译、写片就得到一片新的逻辑关系的集成电路。就像修改软件一样容易。用PLD代替不同的普通数字集成电路后,有利于减少元器件种类。方便采购和库存管理。

3.试制过程中适当在电路板上多留一些资源,比如PLD的容量要比你预期的容量稍大一些,单片机的ROM、RAM、I/O端口等资源都要留适当的空余。因为在设计过程中随时会有很多不可预见的情况发生,解决这些问题,通常会增加对硬件资源的需求量。如果没有在电路板上保留适当的冗余资源,将不得不在电路板外面再搭一块小电路板。事实证明,这样修改电路不仅容易给电路引入干扰信号,而且会大幅度降低试制样机的可靠性,同时会使技术人员的很多时间花费在反复修改电路的简单劳动上。

编写单片机的软件的时候,应该尽量使用高级语言来编写。现在许多开发单片机的技术人员依然保留了80年代的开发方法。使用汇编语言,逐条指令编写,并且手工分配单片机中的内存资源。这种方法在写小规模软件还可以,可一旦软件规模变大之后,由于汇编语言的低可读性、低结构性往往会让设计人员被自己软件中的复杂的逻辑关系搞得晕头转向,在一个软件的逻辑关系混乱后,要保证写出来的软件能安全运转是很困难的。我们推荐使用C语言来写软件单片机代码。(对于常见的8051系列,我们一般使用KEIL、FLANKLIN等软件。其它类型的单片机一般都有其配套的C语言编译器,该型号单片机的经销商一般可提供)用C语言有这么几个好处:

1.可以大幅度加快开发进度。

2.可以实现软件的结构化编程,它使得软件的逻辑结构变得清晰、有条理。

3.在写一些数学算法和循环、判断语句的时候有比汇编语言高得多的效率。

4.省去了人工分配内存资源的工作,在汇编语言中我们不

得不为每一个子程序来分配储存变量的空间,这是一个复杂、乏味又容易出差错的工作。而使用C语言后你只要在代码中申明一下变量的类型,编译器就会自动为你分配寄存器和内存,低级重复易出差错的事情都由计算机代劳了。根本不要人工干预。

5.因为循环、判断语句和变量名字都使用自然语言,因此写出来代码的可维护性和软件可读性很好。这样当需要更换软件开发人员的时候,可以比较容易地进行代码移交和消化。即使没有更换人员,他们在维护自己的代码的时候也比较容易。公务员之家

6.当写好了一个算法后,以后需要在不同种类的CPU上也需要这个算法时,可以直接引用原来的代码,再配合这种CPU专用的编译器重新编译就可以了。这样可以实现软件的低成本跨平台移植。而汇编语言在这种情况下,除了重新写代码,没有别的办法。因为C语言的这种特性,如果在设计复杂算法时(比如视频/音频信号处理、模糊逻辑和人工神经元算法等),可以在PC机上使用VisualC++、C++Build等x86平台的C语言编译器设计、调试该算法的代码,调试成功后就可以移植到单片机的软件系统中去。由于PC机上有充足的系统资源,开发调试进度会有大幅度的提高,这样就节约了软件的时间成本。

汇编语言范文篇10

单片机的特点主要有:高集成度,体积小,高可靠性;控制功能强;低电压,低功耗,便于生产便携式产品;易扩展;优异的性能价格比。目前,单片机的应用领域主要包括:办公自动化设备;单片机在机电一体化中的应用;在实时过程控制中的应用;单片机在日常生活及家用电器领域的应用;在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比;在计算机网络和通信领域中的应用;商业营销设备;单片机在医用设备领域中的应用;汽车电子产品;航空航天系统和国防军事、尖端武器等领域,单片机的应用更是不言而喻。

二、单片机开发中的几个基本技巧

在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着。现归纳出单片机开发中应掌握的几个基本技巧。

1、如何减少程序中的bug。对于如何减少程序的bug,应该先考虑系统运行中应考虑的超范围管理参数如下。物理参数:这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。资源参数:这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。应用参数:这些应用参数常表现为一些单片机、功能单元的应用条件。过程参数:指系统运行中的有序变化的参数。

2、如何提高C语言编程代码的效率。用C语言进行单片机程序设计是单片机开发与应用的必然趋势。如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句。各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很多,反而导致执行效率低于汇编语言。

3、如何解决单片机的抗干扰性问题。防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外你也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。

4、如何测试单片机系统的可靠性。当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:测试单片机软件功能的完善性;上电、掉电测试;老化测试;ESD和EFT等测试。有时候,我们还可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等。

综上所述,单片机已成为计算机发展和应用的一个重要方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。此外在开发和应用过程中我们更要掌握技巧,提高效率,以便于发挥它更加广阔的用途。

参考文献:

[1]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1990

[2]蔡美琴等.MCS-51单片机系统及其应用.北京:高等教育出版社,1992

[3]孙涵芳.MCS-51/96系列单片机原理及应用.北京:北京航空航天大学出版社,1996