
汇编是计算机编程中最为基础部分。
你先学了C/C++,正处于空中楼阁的尴尬处境。因为你在开发C/C++的时候,总觉得有一层雾纱隔着。无法真正看到问题的本质。人类对于无法控制的事总有一种反抗及寻根问底的情绪。
而你把汇编学通了,才能真正地从汇编连通到 *** 作系统,连通到C/C++。你才能真正看清计算机。这才能有机会步入大师级计算机学问境界。
用一句话:站在巨人的肩膀上……
比如只学现在流行的面向对象语言C#、Java等,虽然在短期内你可能会成为这方面的能手,但是想突破是有限的。因为本身的起步就低了。
再言,现在网络发展极快,C#、Jave这种浮于水面的技术很快会被新的东西所取代。但是C#、Java和更加新的未知技术都是从底层的汇编等变化而来。只要学好基础,一句话:以不变应万变。
我不知道学了汇编达到什么水平。但是学了汇编绝对能达到难以想象的水平。
汇编语言程序设计步骤:
1、分析问题,抽象出描述问题的数据模型
2、确定问题的算法思想
3、画出流程图或结构图
4、分配存储器和工作单元(寄存器)
5、逐条编写程序
6、静态检查,上机调试例:编程查找考生的最高分,假设所有考生分数已存入计算机内存
1、分析问题根据条件、特点、规律→数学模型本例分数已给定为0~200之间的整数集合(考虑加试分),记为{S},找max{S}(注:简单问题不一定写数学模型)
2、确定算法思想最好利用现成算法和程序设计方法,若无,则需根据实践经验总结算法思想
如本例,从成绩单第一分数往下看,边看边比较,记住较高分,舍弃较低分,直至看完,最高分存于脑中
归纳算法思想:建立数据指针并指向数据区首地址
将第一数取入寄存器(如AL),与下一数比较,若下一数大则将其取入寄存器,否则调整指针,再与下一数比较,重复上述过程,直至比较完毕,寄存器中即最高分
读分数用MOV指令,比较用CMP指令,分析判断用条件转移指令
3、画流程图或结构图有逻辑流程、算法流程、程序流程等,复杂问题需画模块结构
本例简单,只画出程序流程图(用模块化结构的N-S流程图表示):本例的N-S流程图图中初始化包括:设一个计数器,将分数个数减一后送计数器,每比较一次减一,至零查找结束;建立一个指针指向数据区
开始初始化取第一数到寄存器与下一数比较下一数大?是否取大数到寄存器修改指针,计数次数减一返回到循环体开始,直到计数次数为0退出循环结束
4、分配存储器空间和工作单元(寄存器)定义数据段、堆栈段、代码段等
工作单元一般用寄存器
本例:分数放数据段,建100字节堆栈空间,BX作数据指针,CX作计数器,AL放最高分
5、逐条编写程序DATASEGMENTFENDB85,90,60,75,87,35,80,78,96,82;存分数MAXDB;存最高分DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP();100字节堆栈STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDSMOVAX,0PUSHAX;为了返回DOSMOVAX,DATAMOVDS,AX;置数据段寄存器MOVBX,OFFSETFEN;置数据指针MOVCX,MAX-FEN;置计数器初值DECCX;N个分数比较N-1次MOVAL,[BX];取第一个分数LOP:INCBX;调整指针CMPAL,[BX];与下一数比较JAENEXT;大于等于则转MOVAL,[BX];否则取下一数NEXT:LOOPLOP;计数器减一,;不为零转LOPMOVMAX,AL;存放最高分RET;返回DOSSTARTENDPCODEENDSENDSTART6、静态检查,上机调试选用指令尽量字节少,使其执行速度快
易错处应重点查,如比较次数、转移条件等
确信无错后方可上机调试
学习汇编语言过程:
一,要有一定的微机硬件基础知识,因为汇编很底层,更加接近机器语言,往往很多的东西要从机器层面来支持理解。
二,最好先学习一门高级语言,因为高级语言更接近人的语言,相对比较容易理解。掌握了一门高级语言后再学汇编,一来不易产生畏惧感,二来遇到问题,只能局限于已学的汇编知识来来思考遇到的问题,此时跳出汇编,旁援掌握的语言有助拓新思路,而不只局限与汇编一个思路。
三,细致,踏实的学习态度是少不了的,更为重要的是实践。比喻为:犹如一个战士进入敌营中心地带,要冷静,小心,还要勇敢,智慧,要在敌中心步步为胜,留意敌人的一举一动,将敌一扫而光,不可大意一步,因为接近核心了,稍一大意有可能留下极大隐患。
四,一个狂热的学习劲头,是学习的动力。勤奋,刻苦,等品质也将帮你一路顺进。
入门级《汇编语言》,推荐清华大学出版社王爽的《汇编语言》,很简单,很好入门。书中内容的编排有一定连贯性,要用到哪部分知识就介绍哪部分知识。其它书籍不适合入门的原因是一开始就将所有的寄存器、寻址方式列举出来,记忆已经相当困难,何况是活用?所以还没有体会到编程的快乐,就被推进了无尽的苦难中!
如果需要学到一定的深度,清华大学出版社的《80x86汇编语言程序设计》(作者不详)《IBM-PC 汇编语言》是比较好的教材(沈美明,温冬婵著)。这些教材我全部都读过,基本上是按照由浅入深的顺序。
需要说明的是,汇编语言在当前高级语言的发展环境下,用途范围越来越狭窄,因为面向对象编程思想逐步取代过程语言设计,可以说汇编语言仅在电子产品的底层能够发挥其长处。但是可以借助汇编语言了解计算机的工作原理,为高级语言打下坚实的基础。
1王爽的"汇编语言第二版"这本书最好作为入门书籍去读,
通俗易懂,容易入门,方便掌握很多汇编语言的基础知识
2INTEL汇编语言程序设计第五版,Kip RIrvine著,温玉杰等译。这本书很经典。。。适合读过王爽的书以后再来读,可以加深对汇编语言的理解,接触WINDOWS下的32位汇编,并且介绍了汇编语言的高级语言接口等比较实用的知识。
3琢石成器-WINDOWS环境下32位汇编语言程序设计,罗云彬
如果对WINDOWS环境下的汇编感兴趣,那么可以看这本书,同样是经典之作,买之前也可以去网上翻书评,心里也有个数
以上就是关于汇编语言怎么学,就学王爽那本就行了学完了再学什么全部的内容,包括:汇编语言怎么学,就学王爽那本就行了学完了再学什么、汇编语言程序设计步骤有那几步_汇编语言编程步骤有哪些、如何学习汇编语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)