第一篇:c语言学习心得.doc
C语言学习心得
[摘要] 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。
林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。
许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。
通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢?
在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和:
void main()
{
首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。
int num1,num2,x=0;
由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。
scanf(“%d%d ”,&num1,&num2);
得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果NUM1这个变量不小于NUM2的话就跳过这个{}所包含的内容。开始进行循环。
if(num1
{
NUM1到NUM2之间的数字个数不是固定的,不能得到固定的循环起始点,所以这里的循环起始点就不输入代码中,但是通过题目中的提示知道NUM1这个变量如果大于NUM2的话循环就终止了,而NUM1这个变量还需每循环一次就必须改变其值。由于NUM1到NUM2之间的数字列如1-9每个数字跟其右边的数字都是存在加1的关系,所以这里就可以把NUM1这个值用做循环的“计数器”每循环一次就让NUM1加1,让其跟NUM2做比较是否结束循环。for(;num1<=num2;num1++)
{
在循环当中将每次循环所改变的变量NUM1的值除以2来判断其是否是奇数,如果用2除后余数为0的话就是偶数(因为偶数是不参加运算的)一旦判断其为偶数就用continue这个关键字来跳出一次循环。
if(num1%2==0)
continue;
那么NUM1的值除以2余数为1的话就是奇数(奇数是要参加运算的)一旦判断其为偶数就用下面这个公式来使其进行相加,因为已知X变量的值是0那么下面的公式就可以理解为假设NUM1=1,X=0+1;这时X的值已经发生变化,X=1;假设NUM1又等于3,X=1+3;以此类推直到循环结束X+NUM1也就结束了。
x=x+num1;
}
}
那么NUM1这个变量不小于NUM2的话NUM1是最大数,NUM2是最小数,开始执行{}内的内容。
else
{
for(;num2<=num1;num2++)
{
if(num2%2==0)
continue;
x=x+num2;
}
}
最后通过显示器输出显示X这个变量的值也就是所有奇数的总和。
printf(“%dn”,x);
}
由于计算机读取C语言代码时是从main()函数开始由上自下的逐一读取一条代码并运算的,所以从int num1,num2,x=0;开始来用自己所能接受的自然语言来描述这段代码。
最后将你所记录的自然语言转变成伪代码在转到流程图,这样反复努力多次后,就一定
可以达到有效的锻炼自己的抽象逻辑思维能力。另外还需注意的就是自己实在无法理解的地方不妨指出来多多请教老师和懂的同学让他们用自然语言来描述一道,并且记录下来这样可以达到事半功倍的效果。
我觉得入门还是多看些书,多实践,养成良好的编程习惯,在实践的同时多思考问题,多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现或者说模仿着去实现,让别人对你的代码多提意见,探究别人的思维过程,增强自己的思维能力,拓展视野,经常看看自己以前写的东西,有空拿出来改良改良,我想每隔一段时间,都会有意想不到的收获。
第二篇:语言学习心得
汇编学习心得
08网工
(一)班 李锐 0804031002 在大三接触汇编语言之前,我们在计算机组成原理课程中就已经有所了解了,但也只是略微明白一些如jmp,mov这样的指令,极度缺乏系统性的学习。
在接触这门课程后,感到汇编语言并不是很容易就可以弄懂的。相比较以前学过的高级语言如C、C++等,电脑等于在迁就人的思维方式,但学汇编,人却必须要去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。
另外,在C语言中不到10个语句构成的程序,用汇编语言却要好几十行甚至上百行。这不得不让我们对汇编产生一种恐惧感。事实上,这是完全不必要的。一旦对它的原理掌握后,编写程序就容易多了。另外,学习汇编语言能让我们更加了解计算机内部的组织结构,对我们计算机专业的学生来说,学习汇编也是提升综合能力的关键环节。
汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构。其中遇到很多新的概念,名字。如寄存器、中断、寻址方式等。这些概念在刚接触汇编这门课的时候难以理解,但在之后的学习中通过老师的讲解,自己亲手编程的方式也就渐渐清晰明了。
我们在学习之前都需要明确什么是汇编语言。计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。
经过一个学期的学习,我也慢慢摸出了汇编学习的规律。
首先,学习这门语言时如果能联系上以前学过的其他高级语言的知识,则会起到良好的效果。例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),循环结构(FOR...NEXT)三种结构,也通过C语言了解并掌握了什么是子程序,什么是调用。事实上,汇编语言中有关程序结构,子程序等等的知识都是跟C语言十分相似的,只是在编程时用到的语言不同:汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。
第二,学习汇编语言,首要问题是学习80X86指令系统。如果能将指令系统中的各个助记符、格式等都能完全掌握并灵活运用,大部分工作就已经完成了。指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那肯定不能灵活使用汇编语言。
指令的种类十分繁杂,但其格式却是统一的。
其中方括号中的内容为可选项。指令助记符决定了指令的功能,对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个或多个操作数,大多数指令要显示写出来,还有些操作数是隐含的。当指令包含操作数的时候,书写时必须遵守:
1、指令助记符和操作数之间有分隔符,比如几个空格;
2、如果含有多个操作数,操作数之间用逗号分隔。
现在简单总结汇编语言指令的分类:
1、数据传送指令;
2、标志位操作指令;3、算术运算指令;
4、逻辑运算指令;
5、移位运算指令;
6、位操作指令;
7、比较运算指令;
8、循环指令;
9、转移指令;
10、条件设置字节指令;
11、字符串操作指令;
12、BCD码运算调整指令;
13、处理器指令。
在编写汇编程序时,应该注意特别容易出现的错误,例如在编写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数,offset后只能跟简单地址符号,等等。
汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。
汇编语言中的程序结构,子程序等知识也会帮助我们编写出一个更加完善的汇编程序。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。这里要对子程序和宏汇编加以区分,我的理解是:子程序是调用,而宏是替换,比如一个MAX宏,所有出现MAX的地方,都用宏代码代替。
在学习汇编语言时,指令的功能是学习和掌握的重点,要准确有效并合理的使用这些指令,必须了解一些使用的规则。现对汇编语言编程时的规则进行总结,归纳起来有三点:
1、要求指令操作数的寻址方式;
2、指令对标志位的影响和标志位对指令的影响;
3、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令。
还有一点十分重要。和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。我们深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。通过实验,可以在很大程度上加深印象。在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。程序的编写在记事本中进行即可,掌握debug的使用对实验是有很大帮助的。
现在汇编语言的学课程已经告一段落了,学习过程中遇到的所有困难以及遗留的难点都需要我们在其余时间里逐步攻克,在打好基础的前提下,学习更加专业的汇编知识。
以上便是我在学习汇编语言过程中所有的心得体会,我们会在不断的学习与实践中向着更深入的层面迈进
第三篇:语言学习心得
汇编语言学习心得
在接触这门课之前就已对汇编语言有所了解,一方面是在计算机组成原理中有所涉及,虽然那时只知道简单的mov、add、jmp指令,不清楚其具体用法,缺乏系统性的学习;另一方面是在相关书籍中了解到汇编语言写驱动比较好但比较难,当时就觉得汇编是门很牛的语言,很想学习。接触这门课后,感到汇编语言的确不是很容易就可以弄懂的,相比较以前学过的高级语言如C、C++等,电脑等于在迁就人的思维方式,但学汇编,人却必须要去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学习,对汇编有了初步的掌握,可以说是汇编的入门教程。
在接触汇编语言的时候,对汇编的第一印象就是觉得这种语言非常繁琐和松散,里面有很多细小的知识点,而且有很多规定,必须要根据严格的规则来编写才能够写出正确的程序,譬如一些指令的具体作用,如XLAT指令、CWB指令、LEA指令、OFFSET等的含义和功能,还有大于、小于、等于指令的写法都要记住,不能像高级语言里面用符号“< > =”就能够实现了,正是汇编中的这些规则让我觉得汇编真是特别繁琐,所以在刚刚开始学习汇编的时候经常觉得有些不知所措,特别是对于几种寻址方式,还有各个段的功能,以及各种寄存器的作用都觉得学的很混乱,虽然老师在上课时说的都很详细了,但是在当时好像听懂了,但是很快又弄不清了,还有一些指令的用法会很快就忘记,或者是记混了,但是慢慢接触多了,特别是在做实验的之后,学习得很快,因为要是把学过的知识具体应用到现实中,对于知识的掌握要求就更深一步了,在实验过程中,发现了很多问题,例如一些寻址方式的应用,字符串的定义末尾要加上$符号,在利用AX、BX、CX、DX这几个寄存器的时候注意考虑PUSH进栈对数据进行保护,通过在实验中不断出现错误并改正,对汇编语言的掌握和使用能力都有所提高了。
刚开始对汇编的最大感觉就是觉得用起来很麻烦,不像高级语言那么随意,寄存器就那么几个,用的时候要好好利用,而且还要考虑到计算机内部的工作情况,特别是数据在内存中的存储情况,但是经过学习,发现汇编语言对我们学习好其他语言是非常有用的,原来在C语言中一直不是非常清楚的数据和地址的区别也通过学习汇编而了解得很清楚,通过汇编对CPU里面的工作情况也有了一定的认识,写有些指令的时候要考虑到CPU里面的标志位的改变和利用标志位来实现一些功能,这些在高级语言中是没有的。对于汇编中的指令我很多记不住,由于课件中的程序的注释都是中文的,而课本上的注释都是英文的,刚开始觉得看课件比较好一些,但是后来我发现课本上的英文注释更加容易理解和记忆,和用到的指令是匹配的,因为指令也都是英文缩写方式的,而且都是一些简单的单词,阅读起来并不复杂。
和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。我深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。后来随着老师的讲解和实验的进行,知道了程序的编写格式,包括数据段、堆栈段和代码段,其中数据段和堆栈段可以不定义,但代码段是必不可少的,也掌握了该怎么调试程序、运行程序等。特别是debug命令的使用,可以配合与list文件的使用,让我们可以调试排错、检查结果是否正确等,掌握debug的使用对实验有很大的帮助。程序的编写在记事本中进行即可,再在mask中编译,link中连接运行,当然也可以在专门的汇编工具中进行。通过实验,可以在很大程度上加深印象,在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处
老师经常说其实很多知识都是相通的,在学习了汇编之后对这点可以说是深有感触,而且在汇编也和很多其他课程息息相关,譬如本学期的微机接口课程里面所用得到的也是汇编语言,汇编虽然是比较低级的语言,但是许多工作还是需要通过汇编来完成,而且很好的掌握汇编后,能够对计算机硬件很好的支配,汇编很接近计算机的底层,总的来说汇编在今天的作用还是不容小觑的,学习好了汇编这门课程对于学习其他课程和进一步学好计算机都有很大的帮助。
14GB软件一班 01410271X07 肖雅丽
第四篇:语言学习心得
2010年6月英语四级、六级考试愈发临近,大家都希望掌握一些应试技巧,从而能够在四六级考试中取得比较满意的成绩。下面沪江网校的方辰晖老师从几个方面来谈一下语言学习以及四级六级应试技巧等问题。
语言是人类经过长期实践积累的,用于交流沟通的工具。历经无数代积累演变下来的语言,学好肯定不是一朝一夕之功,这就决定了,学习语言不可能一蹴而就,更不能闭门造车。但是,如果我们能提高对语言的敏感性,语言学习的进程还是可以大大加快的。
语言学习包括哪些?
任何语言都分为语法和词汇。基础是语法,但语法是有限的、固定的,可以在初级阶段学完,这里,可以建议大家在接触某种语言一年,对它有了初步的感性认识之后,选一本权威的语法书进行系统学习,在此不再赘述。关键是词汇,词汇是无限的,变化发展的,不断涌现的。无论对中小学生,还是专家学者,任何人在任何领域的学习工作中,都会遇到生词、新词。因此,学习语言,就是初级阶段学语法,高级阶段学词汇。语法学习的阶段是基础,万事开头难,但这个阶段,一般只要二到三年即可完成,因为语法是有限的。学习语言的大部分时间都耗在了后者上,而且词汇量的多寡往往就可以决定语言的水平。因此,对于想进一步提高语言水平的人来说,扩大词汇量就是学习语言的重中之重了。
关于词汇的认知
人类对于事物的认知有四个过程,即:
1.不知道不知道,自己没有接触过,根本没有意识到自己的无知。
2.知道不知道,开始意识到自己的无知,正设法去了解这一事物。
3.知道知道,经过学习,基本弄清了这一事物的来龙去脉。
4.不知道知道,对于这一事物早已了然于心,熟练的很,它已然成为自己不可或缺的一部分。
对于词汇的认知,也有一个类似的过程:
1.第一次听或第一次看到,不知其意,需要查阅词典。
2.查阅词典,了解意思后,再次听到或读到时,知其意,无需再查,但自己不会主动使用这个词到对话或写作之中。我们称其为阅读词汇或听力词汇。
3.会拼写,自己会主动使用这个词到对话或写作之中,但每次说或者写,都会在大脑中再现第一次学习这个词的情景,因为你需要回想这个词的用法。我们称其为写作词汇或口语词
汇。
4.彻底忘掉了第一次学习这个词的情景。只有达到这一步,我们才敢说你真正掌握了这个词汇。
在这里,我要声明一点,词汇的学习不是一次性完成的,因为这不符合人类认知的特点。我不提倡通过背词汇书学习语言,因为这种学习方法,记得快,忘得也快。在这种情况下,词汇在大脑的驻留时间仅仅能维持几天,就算应付得了后天的四级考试,肯定也无法应付后年的六级或八级考试。
词汇只能在实际运用中学习,我们和任何一个词的首次邂逅,都要在实际运用中发生,应该是第一次在电视电台里听到,或是第一次在报刊杂志里看到,肯定不是第一次在词汇书的背到。对于,第一次听到的单词,我们可能无法正确拼出,所以查阅这个词也就存在困难。我们要尽量把首次邂逅某个生词的机会放在阅读里。
如何通过阅读快速提高词汇量
大家知道,对于除专业领域的术语以外的词汇,从概率论上来说,任何一个词作为新词首次出现在普通文章中的概率是大致相同的。这就意味着,两个水平相当的学生,以学习相同数量的新词作为阅读目的的话,所需的阅读量也大致相同,假定他们的阅读速度相同的话,则耗时也大致相同。
任何一个单词,首次邂逅千万不要对其视而不见,我们必须认真查阅词典,可以使用电子词典,或在线词典,如新沪江小D。因为,这样可以节省很多时间。举个例子:有两个人,一个人见面两次才查生词,一个人首次见面即查生词,要学习同等数量的生词的话,前者所需时间是后者的两倍。
首次见面之后,最好尽快安排机会第二次相遇。方法就是,大量阅读同类文章,因为人类的大脑是会遗忘的,在遗忘之前,再次刺激大脑,会产生更有效的记忆。一般情况下,一个生词再短期内的第二次相遇以后,就会转化为阅读词汇。
成为阅读词汇的单词,要劲量找机会卖弄出去,在不同的机会卖弄几次以后,阅读词汇可以转化为写作词汇或口语词汇。当你在潜意识下写出或说出这个词的时候,恭喜你,这个词已经写进你的植物性神经了。
总而言之,通过阅读提高词汇量的捷径就是,见到生词立即查,似曾相识先回忆,学到立即要卖弄,卖弄多了可掌握。
关于大学的英语学习
大学四年,是学习英语的黄金时期。这个阶段,少了很多高中时的学习负担,英语学习不用以提高考试成绩为目的,考试真正成为了检验学习效果的手段。
大学时期的英语学习,目的各有不同,有人为了通过考试,如四六级、BEC、翻译考试、考研;有人为了出国,在国外深造、生存;有人为了日后在国内与客户交流。但无论如何,仅仅靠看书做题,是无法练就高水平英语的。英语学习在于厚积薄发,大三以前,应该注重积累,广泛涉猎。欧美文化、报刊杂志、流行歌曲、名人演讲、电台听力等等都可以尝试。有了这些,四六级的英语就不难准备了,各位同学就不必狂做四六级模拟题折磨自己了。我个人认为语言的学习,要从所有方面全面着手,仅仅练阅读,或仅仅练听力都是费时伤神,事倍功半的。人的精力有这样一个特点,长时间集中于某一种事物,就会容易疲劳,导致效率低下。对于英语,杂志看累了,我们可以听一些歌曲,歌曲听腻了,我们再看点美剧,万变不离其宗,人不累,效果也好,何乐而不为呢?(小编推荐:更有趣的外语学习,更人性化的学习体验, 更多好学、好玩的应用和功能,更完美的外语交流和互动,一切尽在沪江新部落哦!赶快戳我进啊>>>)
关于四六级的应试技巧
考试之前,我还是提倡做一套模拟试题的,不为提高英语技能,也不为发现错误日后改正,只为熟悉题型,提升应试技巧。快点我参加模考吧 >>
关于听力,一般考试都有一个试音时间,三到五分钟,这段时间一定要好好利用,姓名准考证号可以稍后再写,听力的选项一定要在第一时间通览一遍,时间还有富余的话,就再通览一遍,千万不要为了赶时间,去做阅读或干其他的事。听力考试过程中,要准备好笔纸,以备不时之需,即使没有内容需要记的,转转笔也可以缓解一下压力。
关于词汇题,这类题都很烦人,选项常常是些长得很像的词,这就没办法投机取巧了。只能靠平时积累。但不会选的题先可以不用猜,先把它标出来,后面做阅读的时候,说不定就些词,会给你灵感,这时再翻回去,选出来,准确性高点。
关于阅读,这就大有文章可做了。阅读里的文章可以给单选提供灵感,也可以给作文提供词句。至于答题技巧,就更有很多值得一提的了。四六级的文章一般有一篇记叙文,一篇新闻稿,一篇说明文,一篇议论文。后面的问题,都需要对通篇有正确的理解。因此,作者的观点非常重要,了解是褒是贬,还是中性,至少可以才对三分之一的问题。如何判定作者的态度呢?找中心句,一般出现在文章的第一句或结尾。但要注意的是,议论文类的文章,常常在开头放个“耙子”,然后对此反驳,当看到“Some people often hold the idea that….”时,我们一定要注意,这句话反过来理解才更接近作者的观点。
关于改错,这类题通常针对中国人的汉语固有思维设题,平时多读原汁原味的英语是很好的备考方法。在这里,我有另一种方法,可以供大家借鉴,就是看老师办公室,观摩老师如何批改学生作文的。仔细研读,老师批改后的作文。效果很不错哦。
最后,关于作文,分好提纲结构,很重要。提出问题,即摆事实。分析问题,即说原因。解决问题,即提方案。每个段落给几句模板试的句子,作文的一半不用临时去写了。另一半呢,需要临时结合题目写出来,要注意,避免使用大家都会用的词,如“I think”,“In my opinion”或普通句式,要是写成“I reckon”“Put in their shoes, I would….”这样阅卷老师必然会眼前一亮的。
第五篇:语言学习心得
汇编语言学习心得
在接触这门课之前就已对汇编语言有所了解,一方面是在计算机组成原理中有所涉及,虽然那时只知道简单的mov、add、jmp指令,不清楚其具体用法,缺乏系统性的学习;另一方面是在相关书籍中了解到汇编语言写驱动比较好但比较难,当时就觉得汇编是门很牛的语言,很想学习。接触这门课后,感到汇编语言的确不是很容易就可以弄懂的,相比较以前学过的高级语言如C、C++等,电脑等于在迁就人的思维方式,但学汇编,人却必须要去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学习,对汇编有了初步的掌握,可以说是汇编的入门教程。首先主要学习了汇编语言的基本知识,介绍了汇编的背景知识及由来,让我知道了汇编语言是处在机器语言和高级语言中间的一种低级语言。由于计算机能够直接识别的数据是由二进制数0和1组成的代码。所以用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。然后介绍了8086计算机组织,汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构,学到这还没见到很多的指令和语句,但这是学习汇编前必须要知道和掌握的,只有知道了汇编的实质、如何工作及一些基本概念,才能进行下一步的学习。直到后面终于学了80X86指令系统和寻址方式及后来的汇编语言格式,才真正进入了汇编的指令学习阶段,每一条指令的学习虽然简单但比较多,特别是有些指令的使用场合及错误用法等易犯错、易混淆,例如在编写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数,offset后只能跟简单地址符号,等等。但总的归纳起来主要掌握三点:
1、要求指令操作数的寻址方式;
2、指令对标志位的影响和标志位对指令的影响;
3、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令。这样学习起来方便的多,也更容易理解记住,这为以后的学习做了铺垫。
汇编的基本指令学完后,就开始进行应用了,首先学习的是循环与分支程序设计,第一个例子是简单的加法计算,虽然简单,却让我有点恐惧,一个在C语言中只要三四句就解决的问题,用汇编却写了将近20句,且还没有输出,也就是不知道结果是否正确。后来学习了dos系统功能调用,知道02号功能可以输出加法的结果,于是使用了,但输出的却是一个ASCII码值,又需要进行二进制到十六进制的转换,当时觉得很困惑,不知道为什么要转换,我们输入的不就是十六进制吗,算出来应该还是十六进制啊?随着继续深入的学习,才彻底明白为什么要转换,同时也了解了计算机中对于数字运算是如何工作的。这时发现汇编有很多高级语言所没有的优点,它能让我们更加了解计算机内部的组织结构,对我们计算机专业的学生来说,学习汇编也是提升综合能力的关键环节。一旦对
它的原理掌握后,编写程序就容易多了。后来学的越多,越复杂,程序也是越来越长,一堆的跳转指令,觉得很麻烦,且感觉整个程序无秩序,有时对于一段程序实现的功能还要研究半天。直到学习了子程序设计,一个过程定义对应一个功能,就像C语言中的函数,很有条理性。子程序设计能让一个大程序分成几个模块来做,提供了模块化程序设计的条件,可以节省存储空间及程序设计所花的时间,并且在主程序中进行call调用,十分方便,便于以后的维护、调试和修改。
最后学习了部分宏汇编,只是简单的几个用法并没有深入,但已经为我们做好了基础工作,便于我们自学后面的部分。宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。这似乎和子程序结构很像,但子程序有自己的优缺点,优点很明显,缺点是子程序为转子及返回、保存及恢复寄存器以及参数的传送等都要增加程序的开销,这些操作所消耗的时间以及它们所占用的存储空间,都是为取得子程序结构使程序模块化这一优点而增加的额外开销。所以,有时,特别在子程序本身较短或者是需要传送的参数较多的情况下,使用宏汇编更加有利。当然,在程序较复杂,实现的功能较多的情况下,子程序也必不可少。我的理解是:子程序是调用,而宏是替换,比如一个MAX宏,所有出现MAX的地方,都用宏代码代替。两者各有利弊,在掌握深入的基础上结合使用更好。
还有一点十分重要,和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。我深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。后来随着老师的讲解和实验的进行,知道了程序的编写格式,包括数据段、堆栈段和代码段,其中数据段和堆栈段可以不定义,但代码段是必不可少的,也掌握了该怎么调试程序、运行程序等。特别是debug命令的使用,可以配合与list文件的使用,让我们可以调试排错、检查结果是否正确等,掌握debug的使用对实验有很大的帮助。程序的编写在记事本中进行即可,再在mask中编译,link中连接运行,当然也可以在专门的汇编工具中进行。通过实验,可以在很大程度上加深印象,在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。
现在汇编语言的课程已经告一段落了,学习过程中遇到的所有困难以及遗留的难点都需要我们在其余时间里逐步攻克,在打好基础的前提下,学习更加专业的汇编知识来为我们所用。