组 合 语 言 之 艺 术
目 录
序 ------------------------------------------- 1
第一章 观念正误 ----------------------------- 3
第一节 电脑 ----------------------------- 3
一、前言 --------------------------- 3
二、正名 --------------------------- 4
三、应用 --------------------------- 5
四、美国市场的程式语言应用 --------- 7
五、各种语言的性能比较 ------------- 9
第二节 组合语言 ------------------------- 12
一、结构基础 ----------------------- 12
二、个人体验 ----------------------- 13
三、利人与利己 --------------------- 15
第三节 效率定律 ------------------------- 17
一、效率的定义 --------------------- 17
二、电脑的效率性 ------------------- 18
三、四大效率定义 ------------------- 18
四、组合语言之效率 ----------------- 20
五、模组的效率 --------------------- 20
第四节 程式价值 ------------------------- 22
一、程式的种类 --------------------- 22
二、价值观念 ----------------------- 23
三、创造价值 ----------------------- 24
四、追求价值 ----------------------- 25
第二章 准备工作 ----------------------------- 34
第一节 系统 ----------------------------- 34
一、系统之选择 --------------------- 34
二、目录及磁碟 --------------------- 34
三、应用工具 ----------------------- 35
四、简化名称 ----------------------- 36
五、参考资料 ----------------------- 37
第二节 应用工具的制作 ------------------- 40
一、联接目标档 --------------------- 40
二、目标档侦错及工具 --------------- 41
第三节 分类定义 ------------------------- 43
一、段名定义 ----------------------- 43
二、原始档档名定义 ----------------- 45
三、标题定义 ----------------------- 46
四、缓冲器定义 --------------------- 48
第四节 统一格式 ------------------------- 50
一、格式统一之优点 ----------------- 50
二、规格 --------------------------- 50
三、注记 --------------------------- 52
第三章 基本认识 ----------------------------- 54
第一节 应用工具 ------------------------- 54
一、对程式的认识 ------------------- 54
二、对资料的认识 ------------------- 58
三、对暂存器的认识 ----------------- 60
四、对指令的认识 ------------------- 64
第二节 工作环境 ------------------------- 68
一、系统空间 ----------------------- 68
二、周边设备 ----------------------- 70
三、系统程式 ----------------------- 71
四、配备程式 ----------------------- 72
五、公用模组 ----------------------- 73
第三节 处理对象 ------------------------- 74
一、数据资料 ----------------------- 74
二、文字资料 ----------------------- 74
三、图形资料 ----------------------- 79
四、概念资料 ----------------------- 80
五、综合资料 ----------------------- 81
第四节 指令应用 ------------------------- 83
一、避免浪费速度及空间 ------------- 83
二、程式要条理通顺 ----------------- 91
三、指令应用要灵活 ----------------- 97
四、回路中的指令 ------------------- 102
第五节 分支处理 ------------------------- 106
一、资料的分类 --------------------- 107
二、程式的结构 --------------------- 108
三、次序与条件「真」「假」 --------- 109
四、JMP 与 JMP SHORT --------------- 110
第四章 程式设计 ----------------------------- 111
第一节 主题认识 ------------------------- 111
一、任务 --------------------------- 111
二、分析 --------------------------- 113
三、改进 --------------------------- 116
第二节 系统分析 ------------------------- 117
一、硬体机种 ----------------------- 118
二、原则 --------------------------- 121
三、工作性质 ----------------------- 121
四、相关问题 ----------------------- 123
第三节 模组观念 ------------------------- 126
一、模组定义 ----------------------- 127
二、模组种类 ----------------------- 128
三、模组分割的基本原理 ------------- 129
四、模组分割 ----------------------- 132
五、模组特性 ----------------------- 134
六、模组调用 ----------------------- 137
第四节 程式规划 ------------------------- 141
一、程式性质 ----------------------- 142
二、使用频率 ----------------------- 143
三、程式流程 ----------------------- 144
四、流程图 ------------------------- 145
五、细部流程 ----------------------- 146
六、工作进度 ----------------------- 146
第五节 程式写作 ------------------------- 148
一、暂存器安排 --------------------- 148
二、程式规格 ----------------------- 148
三、程式及说明 --------------------- 149
第六节 特殊技巧的运用 ------------------- 153
一、变数法 ------------------------- 153
二、对称法 ------------------------- 154
三、虚拟法 ------------------------- 158
四、桥式法 ------------------------- 161
五、流水线法 ----------------------- 162
六、对应表法 ----------------------- 163
七、模式法 ------------------------- 165
八、预置法 ------------------------- 173
第五章 套装软件制作 ------------------------- 180
第一节 测试侦错 ------------------------- 181
第二节 研究改进 ------------------------- 183
第三节 程式合并 ------------------------- 191
一、过程的合并 --------------------- 192
二、分支的处理 --------------------- 198
第四节 定案包装 ------------------------- 204
一、手册 --------------------------- 204
二、版本 --------------------------- 204
三、包装 --------------------------- 205
附录一 SHELL 排序测试 ----------------------- 207
一、比较表 ------------------------- 207
二、组合语言之制作 ----------------- 208
三、C 语言之制作过程 --------------- 218
附录二 程式语言效率分析 --------------------- 221
一、ASSEMBLY ----------------------- 221
二、C ------------------------------ 228
三、BASIC -------------------------- 232
四、PASCAL ------------------------- 234
五、FORTRAN ----------------------- 235
附录三 键盘输入码表 ------------------------- 237
附录四 论中文资讯处理
序
本书专供已具备写作组合程式语言( Assembly Language)能力及经验,且有志将组合语言视为常用工具之程式师,做进一步观念、技术上研讨用。
微电脑由诞生迄今,不过短短廿载,一切观念及技术,尚处于开发阶段。可是利用一种不变的硬体机构,再加上可随实际需要而任意设计的程式,在相互配合下,完成某些指定的工作,却是最具效率的方法。
且不论电脑硬体未来的发展如何,程式这种可塑性极高的软体,必然会成为人类文明的重要一页。甚至于随着时代的需要,大量人力、心智的投入,它又何尝不可能成为一种艺术?一种代表着人类智慧、涉及各种领域、且具备商业价值的综合性艺术?
艺术具有开放性、观摩性、完美性的特徵,它可以充实人生、升华人性、活化心灵,是人类特具的一种创造行为。在每一个时代,随着环境及事物的变迁,都会有不同形式的艺术出现。人们运用心灵可以触及的各种素材,发挥到意识所及的最高境界,这就是艺术。
我认为在这个资讯时代,电脑程式的设计及应用,正是一种划时代的艺术。目前还只是电脑艺术的拓荒期,由无到有,再由简而繁,以臻于至善,在这过程中,尚有待我们投入大量的劳力、心血以及无上的智慧。
本书对初学程式语言者并无助益,读者起码应具备对电脑软硬体的认识,并略通组合语言的指令。更理想的是已经有一些应用上的经验,才能领会其中道理。
组合语言系供机器控制用,因中央处理器(Centrol Proc-essing Unit,CPU) 或微处理器(Micro Processor)之不同而有所不同。本书仅针对8088 CPU指令,作技术性探讨。
本书原系本人在两仪文化科技公司教学之讲义,后因各界需要,特加以整理发行。但因工作繁重,兼以视茫发苍,对有关细节,常有力不从心之叹。书中谬误之处甚多,尚请方家不吝指正是幸。
正当本书要出版之际,我发现市面上有本“ZEN of Assembly Language” (Michael Abrash, Scott, Foresman and Company)的好书,这本书中的观念和我极为接近,只是在技术上更进一层,分析得非常透彻,值得向大家推荐。
巧的是,在该书中也举了点阵放大的例子,且方法与我们用的很类似。读者有兴趣,正好详细比较一下,他山之石,可以攻错,能见到这样的好书,证明吾道不孤,颇令人安慰。
我坚信当电脑成熟时,软体的制作将全靠模组,而模组必须建立在组合语言上。因此,到了最后,只需要少数人制作专用模组,并公开销售。至于应用软体,将会简单到人人都能设计,所以有志从事电脑工作者,应该由组合语言着手。
本书由沈红莲小姐修辞、校正,刘莉小姐利用“聚珍整合系统”,以600 点雷射印表机制版,特此致谢。