WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2165查看
  • 0回复

主题

好友

1936

积分

金牌会员

发表于 2010-1-23 11:21:52 |显示全部楼层
作者:jhkdiy
注意:以下谈论纯属个人意愿,如有雷同纯属巧合~~~
主题:汇编常见问题解答

Q:请问汇编会过时吗?
A:汇编永远不会过时,只要有CPU的一天汇编都会在这个世界上。只不过现在的集成开发环境太多了,不但语言简单,开发环境还提供各种各样的方便,使得很多的第一次接触汇编的朋友觉得汇编太繁杂。


Q:学汇编还有用吗?我为什么要学汇编?
A:很多学生在学汇编之前根本不知道这种语言,大部分人只学过C语言。所以有此一问,学汇编的好处在于探索和了解CPU的工作方式,也有助于进一步提高编程技术,因为当你看到C语言的



[Copy to clipboard]CODE:
if( a > 1)
{
     b = 2;
}
else
{
     b = 3;
}

语句时,在你脑中可以想象到编译器是如何将这条语句翻译成汇编语言的:



[Copy to clipboard]CODE:
mov   al, a            ;if( a > 1)
cmp   al, 1            ;
;---------------------------------------
jbe  label1              ;go to else
mov   b, 2
jmp  _exit
label1:
mov   b, 3
_exit:

可是当你学过汇编后,你可以自己对这段代码进行优化:



[Copy to clipboard]CODE:
mov  b, 2
mov  al, a
cmp  al, 1
ja    _exit
mov  b, 3
_exit:

Q:汇编对我有什么用?
A:如果你想学破解,那么少不了要反汇编别人的程序,这时如果你没学汇编的话展现在你眼前的不是代码,而是天书。
     如果你想编写最高性能和最小尺寸的程序,那么汇编是不二之选。
     如果你想编写强悍的病毒、木马,汇编也是最合适的工具,当你反驳说“这个没必要,VB都可以编写病毒”时,你可以搜索一下CIH是用什么编写的。

Q:8088/8086汇编需要继续专研下去吗?学习win32汇编要把dos汇编学得很好吗
A:学校里学习的很多都是8088/8086汇编语言,这还是上个年代的产物,当64位的电脑都已经在玩游戏时**高校计算机教育还是在教dos下的16位汇编语言,
问一下老师为什么还学时老师总是回答”这是基础,打好基础先“。这句话对一半,错一半,基础是要的,可是我很少听朋友说学校教了16位汇编后会继续教32位汇编的,
至于用汇编语言来开发Windows应用程序更是屈指可数。我的建议是:8088/8086汇编只要做到理解即可,这个程度可以知道16位汇编的语言格式,掌握基本指令,
知道一些常用的中断调用。这就可以了,没必要再去深究用汇编语言实现树的查找,图的遍历等复杂的事。我们的重点应该放在继续学习32位的汇编,这个才是当前主流CPU的汇编语言,
而且当你学会32位汇编的时候就可以像其它语言一样学习masm32后开发Windows程序了。

Q:有那些汇编语言的好书介绍?
A:下面列一下比较知名的:
   书名:《Intel 汇编语言程序设计》(第四版)
   作者:【美】Kip  R。Irvine  译:温玉杰、张家生、罗云彬 等
   类别:编程-汇编语言入门
   价格:55 RMB
   出版社:电子工业出版社
简介和推荐理由:
    本书适合那些对学习操作系统基础、微处理器体系结构和程序设计感兴趣的读者。本书的第四版结合了Windows和MS-dos操作系统,并全面讲述了基于Intel处理器的32位汇编语言应用的程序设计。
    我一直以为学汇编语言会很难入门的,但当我开始翻阅这本书的时候,我看到了完全不同于我想法的世界,它不但不知不觉地带你进入汇编语言的世界,而且技术讲解非常详细而易懂,实在是不可多得的汇编语言书籍。

   书名:《 80X86汇编语言程序设计教程》
   作者:杨季文等著
   类别:汇编语言基础教程
   价格:¥39元
   出版社:清华大学出版社
简介和推荐理由:
      本书分为三部分。第一部分是基础部分,以8086/8088为背景,以dos和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为目标,细致和通俗地介绍了保护方式下的有关概念,系统和详细地讲解了保护方式下的编程技术,真实和生动地展示了保护方式下的编程细节。第三部分是上机实验指导。
    本书的第一部分适合初学者,可作为学习汇编语言程序设计的教材。本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术的参考书。
   
   
   书名:IBM-PC汇编语言程序设计(第二版)
   作者:沈美明
   出版社:清华大学出版社
   ISBN :730204664
   原 价:¥34.8
   
   书名:Windows环境下32位汇编语言程序设计
   作者: 罗云彬
   出版社: 电子工业出版社
   出版日期:2002年10月
   价格:78元

  这方面的优秀书籍很多,在这里就不一一介绍了,有兴趣的朋友可以到网上搜索便知。

Q:汇编编译器都有那些?为什么会有TASM/NASM/MASM等这么多的编译器?
A:汇编语言的编译器确实不少,国内外用的最多的就是MASM了,它是微软的产品,没有太多的原因,因为Windows也是微软的,TASM是Broland开发的
   以前比MASM优秀,不过现在很少人用了,因为Broland停止了对它的开发。NASM则用于Linux系统上,编译器是开源的。其它的汇编编译器有:
   GoAsm--Jeremy Gordon's GoTools Assembler
   FASM--Thomasz Grysztar's Flat Assembler
   ObjAsm32--Gerhard Friedrich 面向对象的win32Asm
   HLA - Randall Hyde's High Level Assembler

Q: 汇编需要什么工具和程序,到哪里下载?
A:目前阶段,汇编程序仅需要两个程序就够了。 masm.exe,link.exe。可以到网上搜索下载。
   另外,为了验证和调试程序,还需要一个程序debug.exe,该程序由windows本身就提供,所以就不提供下载地址了。
   将二者下载后,放到某一个目录中(任意目录都可以),考虑到很多命令需要通过键盘敲入,所以建议你不要把文件放入到长文件名目录、
   中文目录或很深的目录中。比如你可以建一个“D:\Masm”目录,并建议此后的程序都放这个目录。

Q:学习汇编用什么环境?
A:大多数学校的汇编语言实验是用masm5.0和debug来做的,本来学习编程的的重点在于实践,现在最简单的事竟然成了最少做的实验。这两个工具
   都是基于dos的,使用也较简单,反正我是不了解debug的了(因为觉得没必要),有需要的朋友可以去搜索一下debug的使用。当学完16位的汇编后
   就可以学习32位的汇编了,这时如果想用汇编语言开发windows应用程序的话可以学习使用RadAsm,它是汇编语言的集成开发环境,可以和其它集成
   开发环境一样开发Windows程序。有兴趣的朋友可以参考我制作的《Win32汇编开发环境介绍和RadAsm简明教程第二版》网页教程。RadAsm经过配置之后
   也可以用来开发16位的DOS程序,不过还是建议使用masm5.0在dos下进行16位汇编的编译和连接,这样可以减少很多莫明其妙的问题。

Q:如何构造Win32Asm开发环境?
A:1:到http://www.masm32.com下载最新的masm32开发包,或在网上搜索下载。
   2:到http://www.radasm.com下载最新的RadAsm集成开发环境,或在网上搜索下载。
   3:配置一下RadAsm的环境,详细介绍可以看我编写的《Win32汇编开发环境介绍和RadAsm简明教程第二版》网页教程。
   4:没事了,可以进行你的创作了。

Q: 一个汇编程序的编译过程是怎么样的?
A:  假设将masm.exe 和 link.exe 程序放在“D:\Masm”目录下。
  1)首先你需要找一个编辑器,编辑器用任何“纯文本”编辑器都可以。比如记事本。编好以后保存到汇编目录中。扩展名为asm,比如myfirst.asm。但这里建议你找一个能显示出当前行的编译器。这样出错后排错很容易。
  2)然后在dos下进入D:\Masm目录中,输入“masm myfirst.asm",如果有错系统会提示出错的行位置和出错原因。
  3)然后再输入“link myfirst.obj”,即可看到当前目录下有一个myfirst.exe程序。
  4)最后输入“myfirst”来运行程序。

Q: 宏汇编和汇编有什么区别吗?
A: 二者的区别在于前者提供宏,后者不提供。后者已找不到了,所以你可以认为二者没有区别。

Q:学习用汇编开发windows应用程序需要那些知识?
A:最好先掌握一门编程语言,在于有基本的编程理念。
   首先应该学习32位汇编,当你学完16位汇编后这是很容易的事,只需多了解一下寄存器和新增的指令;
   学习windows SDK编程方式,它的意思是用C语言直接调用Windows API函数来编写程序。最好的书籍
   是《Windows程序设计》第五版,如果你想不学习C语言就直接用32位汇编开发的话会很吃力
   一下子要了解的东西会太多,但也是可以的,看下面
   跟着学习Iczelion的win32汇编教程和罗云彬编写的书,这是一项较漫长的过程,要慢慢学习,慢慢体会
   不过这也是最兴奋的事,你开发的程序不但小,而且很快(相对于其它语言)。这时最好配合RadAsm来一起
   学习,这样会使你的开发效率提高不少,而且方便管理和维护。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-2 23:10 , Processed in 0.062021 second(s), 16 queries .

返回顶部