Skip Navigation Links.
Collapse 电工与电子技术 代码阅读实践
Collapse 电工与电子技术 计算机文化基础
Collapse 电工与电子技术 Visual Foxpro数据库应用技术
Expand 实验室简介 实验课程简介
Expand 实验室简介 实验室简介
Expand 实验室简介 实验大纲
Expand 实验室简介 实验内容
Expand 实验室简介 实验课件
Expand 实验室简介 实验视频
Expand 实验室简介 常见问题及解答
Expand 实验室简介 在线测试
Expand 实验室简介 等级考试题集
Expand 实验室简介 相关知识点
Expand 实验室简介 学习推荐
Collapse 电工与电子技术 数字图像处理
Collapse 电工与电子技术 数据结构和VC编程
Collapse 电工与电子技术 数据库
Collapse 电工与电子技术 多媒体技术应用
Collapse 电工与电子技术 汇编语言程序设计
Collapse 电工与电子技术 VB程序设计
Expand 实验室简介 课程简介
Expand 实验室简介 实验室简介
Expand 实验室简介 理论教学
Expand 实验室简介 实验教学
Expand 实验室简介 创新型实验
Expand 实验室简介 教学视频
Expand 实验室简介 课程习题
Expand 实验室简介 在线测试
Expand 实验室简介 VB等级考试
Expand 实验室简介 软件下载
Expand 实验室简介 2012年秋“VB程序设计”考试题目
Collapse 电工与电子技术 计算机维护维修
首页 >   主页 > 课程 > 计算机类 > 汇编语言程序设计 > 汇编常见问题及解答
汇编常见问题及解答 
 

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来一起
学习,这样会使你的开发效率提高不少,而且方便管理和维护。