购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 向高层汇编器求援

回想1995年,我曾和加州大学(UC)河滨分校计算机科学系的主任有过一次讨论。我感叹说,学生在学习汇编语言课程时,必须推倒重来,花费宝贵的时间重复学习这么多东西。随着讨论的深入,问题变得明朗起来—这不是汇编语言本身的错,而应归咎于现有汇编器,如微软MASM的语法所带来的麻烦。汇编语言的学习远不止学一些机器指令。首要的是,我们必须学会新的编程风格。掌握汇编语言不光包括学会机器指令的语义,还要学会如何组织这些指令来解决现实问题。这才是掌握汇编语言的难点所在。

其次,纯汇编语言并非一次只用几个指令就能写程序的玩意儿。即便是最简单的程序,也要求掌握许多知识和对指令系统的完整理解。学生在汇编课程中必须熟悉指令系统等计算机组织的课题,往往需要经过几个星期的准备,才能写出点什么,在汇编语言里无法从简单的应用程序一步步地学下去。

1995年的MASM有一个重要特性,就是支持类似高级语言的控制语句,例如.if、.while等。尽管这些语句的确不是机器指令,却允许学生使用他们熟悉的、已学过的编程结构,直到经过一段时间学习足够的机器指令,再用这些底层的机器指令写出自己的应用程序。在学期的前阶段,通过使用这些高层结构,学生就能专注于汇编语言编程的其他方面,而不必将所有东西立即吸收。这能让学生在课程中尽早着手编写代码,在学期结束时他们就能学会更多东西。

MASM之类的汇编器—我们指32位v6.0及以后的版本,除了有可以做同样事情的底层机器指令,还提供与高级语言一样的控制语句。这样的汇编器被称为高层汇编器。理论上,有了适当的汇编语言教材,又有这些高层汇编器帮忙,学生在课程的前几周就能着手编写简单程序了。

但诸如MASM之类的高层汇编器有一个缺点,就是它们只提供了几条高层语言的控制语句和数据类型。对于熟悉高级语言编程的人,其余所有东西都是陌生的。例如,MASM中的数据声明与大部分高级语言中的数据声明迥然不同。尽管有一些类似高级语言的控制语句,汇编语言程序员还是不得不重新学习相当多的信息。 Nq6ZfZegObSgbSl4PLvE93L86ey0KngSZLQrX2BD4Bpe6wcJDqXXF7BGRpLFAwkc

点击中间区域
呼出菜单
上一章
目录
下一章
×