1.汇编会过时吗?
A:汇编永远不会过时,只要有CPU的一天汇编都会在这个世界上。只不过现在的集成开发环境太多了,不但语言简单,开发环境还提供各种各样的方便,使得很多的第一次接触汇编的朋友觉得汇编太繁杂。
2.学汇编还有用吗?为什么要学汇编?
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:
3.汇编有什么用?
A:如果你想学破解,那么少不了要反汇编别人的程序,这时如果你没学汇编的话展现在你眼前的不是代码,而是天书。
如果你想编写最高性能和最小尺寸的程序,那么汇编是不二之选。
如果你想编写强悍的病毒、木马,汇编也是最合适的工具,当你反驳说“这个没必要,VB都可以编写病毒”时,你可以搜索一下CIH是用什么编写的.
4.8088/8086汇编需要继续专研下去吗?学习win32汇编要把dos汇编学得很好吗
A:学校里学习的很多都是8088/8086汇编语言,这还是上个年代的产物,当64位的电脑都已经在玩游戏时中国高校计算机教育还是在教DOS下的16位汇编语言,
问一下老师为什么还学时老师总是回答”这是基础,打好基础先“。这句话对一半,错一半,基础是要的,可是我很少听朋友说学校教了16位汇编后会继续教32位汇编的,
至于用汇编语言来开发Windows应用程序更是屈指可数。我的建议是:8088/8086汇编只要做到理解即可,这个程度可以知道16位汇编的语言格式,掌握基本指令,
知道一些常用的中断调用。这就可以了,没必要再去深究用汇编语言实现树的查找,图的遍历等复杂的事。我们的重点应该放在继续学习32位的汇编,这个才是当前主流CPU的汇编语言,
而且当你学会32位汇编的时候就可以像其它语言一样学习masm32后开发Windows程序了。
5.汇编编译器都有那些?为什么会有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
6. 汇编需要什么工具和程序,到哪里下载?
A:目前阶段,汇编程序仅需要两个程序就够了。 masm.exe,link.exe.另外,为了验证和调试程序,还需要一个程序debug.exe,该程序由windows本身就提供,所以就不提供下载地址了。
将二者下载后,放到某一个目录中(任意目录都可以),考虑到很多命令需要通过键盘敲入,所以建议你不要把文件放入到长文件名目录、
中文目录或很深的目录中。比如你可以建一个“D:\Masm”目录,并建议此后的程序都放这个目录。
7.学习汇编用什么环境?
A:大多数学校的汇编语言实验是用masm5.0和debug来做的,本来学习编程的的重点在于实践,现在最简单的事竟然成了最少做的实验。这两个工具
都是基于DOS的,使用也较简单,反正我是不了解debug的了(因为觉得没必要),有需要的朋友可以去搜索一下debug的使用。当学完16位的汇编后
就可以学习32位的汇编了,这时如果想用汇编语言开发windows应用程序的话可以学习使用RadAsm,它是汇编语言的集成开发环境,可以和其它集成
开发环境一样开发Windows程序。有兴趣的朋友可以参考我制作的《Win32汇编开发环境介绍和RadAsm简明教程第二版》网页教程。RadAsm经过配置之后
也可以用来开发16位的DOS程序,不过还是建议使用masm5.0在DOS下进行16位汇编的编译和连接,这样可以减少很多莫明其妙的问题。
8.如何构造Win32Asm开发环境?
A:1:到http://www.masm32.com下载最新的masm32开发包,或在网上搜索下载。
2:到http://www.radasm.com下载最新的RadAsm集成开发环境,或在网上搜索下载。
3:配置一下RadAsm的环境,详细介绍可以看我编写的《Win32汇编开发环境介绍和RadAsm简明教程第二版》网页教程。
4:没事了,可以进行你的创作了。
9. 一个汇编程序的编译过程是怎么样的?
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”来运行程序。
10. 宏汇编和汇编有什么区别吗?
A: 二者的区别在于前者提供宏,后者不提供。后者已找不到了,所以你可以认为二者没有区别。
11.学习用汇编开发windows应用程序需要那些知识?
A:最好先掌握一门编程语言,在于有基本的编程理念。
首先应该学习32位汇编,当你学完16位汇编后这是很容易的事,只需多了解一下寄存器和新增的指令;
学习windows SDK编程方式,它的意思是用C语言直接调用Windows API函数来编写程序。最好的书籍
是《Windows程序设计》第五版,如果你想不学习C语言就直接用32位汇编开发的话会很吃力
一下子要了解的东西会太多,但也是可以的,看下面
跟着学习Iczelion的win32汇编教程和罗云彬编写的书,这是一项较漫长的过程,要慢慢学习,慢慢体会
不过这也是最兴奋的事,你开发的程序不但小,而且很快(相对于其它语言)。这时最好配合RadAsm来一起
学习,这样会使你的开发效率提高不少,而且方便管理和维护。