欢迎来到天天文库
浏览记录
ID:23149211
大小:491.44 KB
页数:29页
时间:2018-11-04
《汇编基础入门知识》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、汇编基础入门知识最近想初步了解一下汇编的内容,在网上搜了搜,发现一篇写得很不错的文章,特地转过来留存。写得浅显易懂,而且加入了很多个人的见解,比书上写的好懂多了。比较钦佩作者,可惜找了半天没有找到这篇文章的原作者是谁。转载地址:http://www.zxbc.cn/html/20070611/22772.html学习汇编前你应该知道的知识1、汇编需要什么工具和程序,到哪里下载?目前阶段,汇编程序仅耑要两个程序就够Y。masm.exe,1ink.exe。前者是编译程序,后者是链接程序。另外,为了验证和凋试程序,还需要一个程序deb
2、ug.exe,该程序由winclows本身就提供。将二者下载后,放到某一个目录中(任意目录都可以),考虑到很多命令需要通过键盘敲入,所以建议你不要把文件放入到长文件名目录、屮文目录或很深的目录中。比如你可以建一个''D:MaSrn〃0录,并建议此后的程序都放这个H录,此后称这个H录为汇编FI录。2、学习汇编需要有哪些编程方面的知识?没有任何编程方面的知识,学习此语言等于缘木求鱼,所以诘放弃学习的想法。一般来说至少要知道如下儿点:*)程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),
3、循环结构(FOR...NEXT)三种结构。*)知道什么是子程序,什么是调用。*)汇编程序员的视角。不同编程视角编程要求是不一样的。比如删除文件:〉〉用户的视角是找到''删除〃按钮或菜单,然后单击一下即对。»高级程序员的视角是知道删除的文件,并发出删除命令。这些通过API实现。〉〉汇编程员的视角是得到要删除的文件名,找到该文件所在位置,通过调用删除''中断命令〃进行删除。〉〉操作系统开发人员的视角则是接到删除命令后,先找到系统根目录区,由根冃录区的链接依次找到子H录区,直到找到要删除的文件,然后按照操作系统删除文件的规则对该文件名
4、进行修改。比如DOS,只把第一个字符改成n?n。按程序语句等价的角度看,一行VB的打印语句,用汇编实现大约需要一西二十多行。知道汇编语言的视角后就要知道,前面的道路是坎坷的,没有耐心是不行的。想通过几分钟几行程序就完成很复杂的操作不是件容易的事。3、学汇编有什么用?汇编产生于DOS时代或更早,而现在是Windows时代,所以可能遗憾地说:尽管还有批牛人在用汇编开发核心级程序,但我们几7•没什么用,除Y必要时间能拿来分析一两个程序的部分代码之外,别的也就没干什么用了。并R.并不是所有的汇编命令都能在windows下使用。而泛泛地追
5、求''时髦〃而学本语言,最后的结果是损了夫人又折兵。所以学之前你要考虑好。我劝那些为了当''黑客〃而学汇编的人就此止步。第零讲预备知识1、一个汇编程序的编译过程是怎么样的?1)首先你需要找一个编辑器,编辑器用任何''纯文本〃编辑器都可以。比如记事本。编好以后保存到汇编目录巾。扩展名为asm,比如myfirst.asm。但这里建议你找一个能显示出当前行的编译器。这样出错后排错很容易。2)然后在DOS下进入DAMasm目录屮,输A''masmmyfirst.asm",如果有错系统会提示出错的行位賈和出错原因。3)然后再输入''lin
6、kmyfirst.obj",即可看到当前目录下有一个myfirst.exe程序。2、宏汇编和汇编有什么区别吗?二者的区别在于前者提供宏,后者不提供。后者已找不到了,所以你可以认为二者没有区别。3、机器语言、汇编语言、髙级语言的关系最早的计算机采用机器语言,这种语言直接用二进制数表示,通过直接输入二进制数,插拔电路板等实现,这种''编程〃很容易出错,每个命令都是通过查命令表实现,既然是通过''查表〃实现的,那当然也可以让计算机來代替人查表实现了。于是就产生了汇编语言,所以不管别人怎么定义机、汇语言,我就认为,二者是等价。后来人们发
7、现,用汇编语言编某一功能的时候,连续一段代码都是相同或相似,于是就考虑用一句语言来代替这一段汇编语言,于是就产生了高级语言。因此,所有高级语言都能转化成汇编语言,而所以汇编语言乂可转化成机器语言。反之,所有机器语言可以转成汇编语言(因为二者等价)。但并不是所以汇编语言都能转成高级语言。4、计算机的组成通常都把计算机定义成五部分:运算器、控制器、存储器、输入系统、输出系统。为了简单起见,我们如此理解:运算器+控制器=CPU。存储器=内存(暂不包括外存,也不包括CACHE)。输入系统=键盘(不包括鼠标),输出系统=显示器(不包括打印
8、机,绘图仪)。5、寄存器和内存的区别寄存器在CPU中。内存在内存条中。前者的速度比后者快100倍左右。后面的程序要求每条指定要么没有内存数据,要么在有一个寄存器的参与下有一个内存数据。(也就是说,不存在只访问内存的指令)。6、汇编语言的计数与生活中的计数不一样,
此文档下载收益归作者所有