小议汇编

 在绝大多数人眼中,汇编语言是一个低级的、面向机器硬件的程序设计语言。从第一颗微处理器诞生之日起,二进制代码形式的机器语言就被代替成了具有一定意义的特殊指令。指令的有序堆积即称为汇编语言。

 令人遗憾的是,中国人自计算机发明以来,几乎未在其硬件领域上取得过较大突破。微处理器技术也是如此。这也就能解释,为何若干套指令集中没有汉字的影子了。(无语。。。)其实,非但我国在这一领域起步较晚,当今技术水平与国外同类技术的差距也还是相当可观的。这样可能有人会说,经济全球化的今天,中国人为什么总要搞自己的一套东西!需知,信息产业在未来社会生活所占据的比重将十分庞大,而当今国际社会的政治形势变幻也从未停留过脚步,拥有民族化自主知识产权的技术也就成了重要一环。

 提前说了这么多废话,主要还是勉励当代微电子学专业的同学们奋发图强。我们从“软”的已经软到了火候,而该“硬”的却还没有硬得起来。

 目前高校的汇编语言教学主要是以8086/88指令系统为主要内容,事实上真正的汇编语言远不止这个概念。它的发展和CPU的发展几乎是同步进行的。我们知道,1971年intel公司推出了世界上第一台4位微处理器4004,1978年推出了16位微处理器i8086/87,并相应配套了x86指令集。随后的8088芯片用在了IBM-PC中,在1981年的首次PC机概念推广时广为人知。此后,x86指令集被多数微处理器厂商采用并集成到自主产品中。虽然后来的发展使cpu指令集不断更新扩充,但为了延续长期以往积攒的软件资源周期,都向上兼容了x86指令集。当然,不同的cpu大多数都有自己的扩展指令集,还有些并未沿用x86构架,但总的来说这些指令主要分两大构架:

   1、复杂指令系统计算机(CISC,Complex Instruction Set Computer):指令均处于平等地位的指令构架,有指令多且复杂,因为操作码扩展而增加寻址方式种类的特点。早期的x86指令集都属于cisc构架。

   2、精简指令系统计算机(RISC,Reduced Instruction Set Computer):指令有优先级之分,一般常用指令优先级较高,提升了运行效率,并且克服了cisc构架的上述若干缺点。当前除PC机以外的计算机系统基本上都采用RISC构架。

 cisc虽然拥有众多缺点,但x86集基础上所建立的软件资源是它至今仍必须在pc机上存在的重要原因。目前看来,cisc和risc在pc机上的争夺最终将走向中间领域,两大厂商intel和amd也在上世纪90年代开始同时采用了两种技术。

 那么,汇编语言的具体优势又在哪里?

 高级语言如C/C++,JAVA,C#等,都具有直观,抽象化易于理解,应用范围广的特点。早期的汇编语言相对而言就不具备这些优势了。通常汇编用来进行底层开发,例如操作系统及其硬件驱动程序、端口程序,还包括当前愈为流行的嵌入式开发等等。有时程序员会使用汇编语言和高级语言相配合以进一步达到高效精确的目的。近一段时期以来,随着汇编语言自身的发展和翻译程序的开发,汇编已经能够做到完全独立编写win32程序,其在一些高级绘图程序、视频游戏程序中的应用也越来越多。

 我认为,针对计算机偏软件方向的专业来说,汇编语言提供了一个能近距离观察机器内部实现的窗口。另外,通过对汇编语言程序设计的掌握,将对上层软件系统原理拥有更为深刻的理解。