当前位置:编程学习 > 汇编语言 >>

新手快速设计汇编语言程序(一)

学习任何一种艺术,只能从瞭解观念及熟练地运用工具、技巧上下功夫。至于个人的成就及表现,有待于不断地自我要求和探索,不是仅仅通过学习就可以轻易获得的。
组合程式的写作亦然,虽说尚有时、空效率的客观标准,但是一个功能复杂、应用广泛的程式,其价值的全面评估却非如此单纯。要言之,目前这种组合程式艺术仅在启蒙阶段,尚无成规可循,必须到大众都认识到其价值时,才会有定论。
因此,我只能在此举一个例子,说明程式写作的观念,希望读者能够举一反三,灵活应用。

第一节 主题认识

一、任务

兹假定有一任务,是要设计一些应用符号,其过程由编码到将符号绘制完成为止。这是一个实际且实用的例子,我利用仓颉码定义符号码,并以程式处理之,既精简,又快速。事实上,字形产生器就是利用类似原理设计的,在此特为参考。
这些应用符号,是用来画表格,要与文字混用,故将各种表格符号,分解成为文字字符,并予以定码。
首先考虑编码,在此,「编码」就是前面所说的「资料设计」。一种考虑周全的编码,在程式处理上,可以节省大量的时间和空间; 对使用的人而言,循着一种规则,也可达到易记易用效果。
要达到上述目的,必须先瞭解一些相关的因素,只要把这些因素纳入考虑范围,且其结果能表现在所编的「码」中,上述的任务就达成了。
这些相关的因素是:
1,编码的限制:
仓颉码取一至五码,限用 24 个字母,此类符号也不 能例外。要能与中文字同时输入,而且不能混淆,故不能 与已存在的中文字码有重码的情况发生。

2,功能的需求:
假定要设计四种不同粗细的格子,且每种皆能相互配 合。如:

┌ ┬ ┬ ┬ ┬ ┐ ┌ ┬ ┬ ┬ ┬ ┐

├ ┼ ┼ ┼ ┼ ┤ ├ ┤

├ ┼ ┼ ┼ ┼ ┤ ├ ┤

├ ┼ ┼ ┼ ┼ ┤ ├ ┤

├ ┼ ┼ ┼ ┼ ┤ ├ ┤

└ ┴ ┴ ┴ ┴ ┘ └ ┴ ┴ ┴ ┴ ┘
图 一
┌ ┬ ┬ ┬ ┬ ┐ ┌ ┬ ┬ ┬ ┬ ┐

├ ┤ ├ ┤

├ ┤ ├ ┤

├ ┤ ├ ┤

├ ┤ ├ ┤

└ ┴ ┴ ┴ ┴ ┘ └ ┴ ┴ ┴ ┴ ┘

│ │ │ │ ─ ─ ─ ─
图 二

二、分析

以上符号共有 104种形状(后来我发现不敷应用,又加入一些图形)可以细分为四类,分别为:

横向,左右延伸,上下等距。
纵向,左右等距,上下延伸。
横向,或左或右,上下等距。
纵向,或上或下,左右等距。

由此可知,我们已经能够定出其规律:
1,只有纵向横向,皆连接于格子的中央点。
2,只有四个位置,即上、下、左、右。
这种归纳方法相当有用,因为我们发现了二进位的影子,正该加以利用。
先以四个位置来考虑,上下形即为纵向,左右形为横向,是个标准的二进位结构,如果以对角线来看,左、上,右、下又可以组成另一维二进位,可以各用一个位元来表示。我选用了四种粗细,以凑成四个位元。以一字元示意(x 表与该性质无关的位元)如下:

凡属细点者: xxxxxxx0
凡属粗点者: xxxxxxx1
凡前述点不加粗: xxxxx0xx
凡前述点粗细加倍:xxxxx1xx
凡属于横向者: xxxxxx0x
凡属于纵向者: xxxxxx1x
凡属于左上者: xxxx0xxx
凡属于右下者: xxxx1xxx

以上各值用了四个位元,共有16种组合,若以码代表之,其组合数当视取码数而定。再参考图一,每种因素取一码,横、直、位置共有四种,结论是最多应取四码。
取四码虽然理想,但仓颉码的设计原本是为了全部六、七万个中文字,而文字的产生为约定俗成,不可能恰好有一连续空余的四码区段,可以安排表格码。
我在输入码的组合中,好不容易找到一区,即YYX 码后,没有已存在的中文字,故此决定把表格码安排在此区。
仓颉码最多取五码,YYX 已用去三码,仅余两码可用。
再看前面的分析,只有16种组合,而符号有24个之多。这种搭配很不理想,需要再加考虑。
需要取三、四码的,都是要贯穿格子中心的形状,如果再设几个贯穿格子的形状,也当作基本图形,则每个图形仅取两码即可。
到底我们要多少贯穿形呢?八个!(见图二)八加十六,恰恰好廿四个,完全符合我们前面所强调的精简法则。
这几种定义,实际上仅需将第五个位元设为一即可:
凡属半形者: xxx0xxxx
凡属贯穿形者: xxx1xxxx
最后,这24个码再加 41H就可以得到与文字相等的码值,读者如有兴趣,不妨试着将这些码的值求出,今后应用时就可循着这种思路得出其输入码,而不必死记。
不过,编码还没有完成,因为在电脑中,一字一代码是相当重要的原则,精确、效率都建立在这个原则上。假如有一代码所代表的形状,与其他代码所代表者相同,就相当于有「重码」字,这种情况应设法避免。此外,为了便于使用,取码也应依一定规则,配合字母顺序,且以符合程式的处理为宜。
例如 YYXAK与 YYXKA所得形状完全相同,要避免困扰,应规定依字母顺序,只有 YYXAK为有效码。
又如 YYXAI所得之形,为左侧细横加右侧细横,相当于一条贯穿的细横。而这种横与 YYXU 一码完全雷同。必要时,可以仅以 YYXU 为正确码,将YYXAI, YYXBJ, YYXCK, YYXDL, YYXEM, YYXFN, YYXGO, YYXHP等码建表拦掉。
注:关于这一点,由于我当年的疏忽,编错了几个,若现在改过来,就会造成过去所建资料不能再用的痛苦,所以从事规划者,千万慎始!

三、改进

上述的编码方式,是否很理想呢?绝对不是,不仅由于当年的经验不足,考虑的不够周全,已经有了一些错误的编码,而且观念上也有疏忽处。希望读者能进一步的研究出更好的方法,至少,应该能把我个人所发生的缺点加以改进。关于这一点,不妨当作考试题目,在参考本章第五节程式写作时,留心一点,就会发现其中大有文章。
编码确定以后,就可以写程式了。由于编码时已经把程式的「位元资料」一并考虑,所以立刻分支,利用绘图的程式,轻松愉快地,用几条指令,就完成了任务。

第二节 系统分析

所谓系统分析,即为有系统、有规则地去分析「对象」,以电脑术语而言,对象指的是所使用的硬体及软体。
系统是一系列有组织且统属的整体,从宏观角度来看,系统所涵盖的有:
1,目的:
任何一种系统,必然有一个特定的目的,如果不能对其目的先作分析,甚至于不知道目的为何,又怎能发挥系统的功能?

2,结构:
系统之组成,是基于其特殊结构,也可以说是组件、部件或或部门,端视其系统特性而定。瞭解结构,分析结构的性质,再配合各种条件,才能达到目的。

3,效应:
效应指预期的结果,系统分析的意义是为了实现,唯有透过对目的的认识,对结构的瞭解,才能设计出方案。可是这种方案所产生的效应,如不能料于机先,又怎知是否符合理想?
同时,系统分析还有另一层意义,天下所有的事都是相互的,单一的系统没有分析的可能与必要。比如说分析一部汽车而不理会其行经的路况,不顾使用的条件、油料、配件、人员素养等因素。则我们可以断言,这种分析的结果,除了提供参考外,毫无实用价值。
在电脑上亦不例外,电脑术语上的系统分析,概指对硬体机种的性质、设备以及使用者的需求范围等的分析、瞭解和设计而言。在下面我们将对这些一一进行分析。

一、硬体机种

以 IBM PC/AT作为发展对象,本来不必讨论其硬体机种。只是,站在系统分析的立场,则不能不加以说明,因为这是系统分析必要的步骤之一。
根据市场分析,国内 IBM及与其兼容的微电脑几乎占 80%以上,中文系统是特为国人发展的,而且是种「附属程式」。以目前的形势看来,可以说是别无他途。
既然决定了系统,进一步是探讨系统的规格。
硬体系统的规格,不妨参考随机而来的手册或说明书,资料越齐全,对工作越方便。尤其是「程式师手册」(Programm-er's Manual)更是必备,应事先收集妥当,随时可以取用。
有了硬体的规格资料,再看哪些与程式本身有关,摘录下来,一条一条地比对,直到全部有了答案,机体的系统分析才算完成。
兹以一、所述的任务为目标,并假定使用的机种为 IBM的AT 兼容机。
其相关的规格有:
系统记忆体 640KB
硬磁盘 20 MB
软磁盘 360KB
萤幕显示卡 Hercules Graphic Card
键盘 101键,型号 CSK-1101
操作系统 dos 3.3 版本
其他周边无关宏旨,从略。
此外,为了应用中文,假定采用了“聚珍整合系统”,本系统程式包括所有中文字形及七大应用软件,占 440KB。
作为一个系统,使用者能支配的空间越大越好,既然要用中文,而中文系统程式又是一种附属程式,难免就会占用部份空间。
因此,要想使中文的应用功能不弱于原系统,必须非常有效地利用时间及空间。既然已经用了 440KB,千万不要再多事浪费。
有些中文系统的设计,是把中文字形存贮在硬磁盘中,从表面上看来,空间并没有浪费多少。但是不要忘了,硬盘的读写次数有其极限,如果每个中文字要读取一次,大概不到半年的时间,硬盘就会损坏。不仅如此,这种方法速度很慢,用起来也不方便。
有些设计为了避免上述的缺点,便以扩充记忆体的办法,先将「常用字」装入扩充区内。这样速度加快了,硬盘的损耗也减低了,可是成本却大大增加。也有人认为,硬体在不断改进,光盘问世后,容量不再是问题,何必多虑?
软体工程师的责任,是要在自己的技术能力上,发挥最大的边际效益。不论硬体是否能够改进,都应该不辞辛劳,努力将程式写好。一方面当目前硬体尚不够理想时,效率高的软件有立足之地,即使未来硬体改进了,优良的软件仍然占有高效率的优势。
当今电脑的应用观念尚未充份发挥,似乎光盘的容量大得超过我们的想像。可是,在未来的电脑时代,才真是「寸土寸金」,分秒必争的关头。尤其是一旦电脑成为普遍使用的「大众化产品」后,成本之高低将决定产品的成败。中国本来就贫穷,需要的电脑数量又多,能节省一分钱,对整个市场说来,就是一笔天文数字。更何况硬体技术越进步,电脑的体积越缩小,笔记型、口袋型电脑相继问世,其所面临的储存问题并不是光盘能解决的。
假如真能因为多花一点钱,一劳永逸地解决了问题,倒也值得,事实上却不然。文字是民族、文化的根本,收字不足将形成「残缺文化」。同时,电脑技术在进步,使用者的需求也跟着增加,私人用的排版软件以及「视窗」的方兴未艾,中文还能梦想徒以增加记忆体的方式去与拼音文字竞争吗?
那么,有没有其他的办法,用少量的空间,一次解决中文字形的困境呢?
所谓中文系统分析,就是要针对这类问题,提出正确的答案。最理想的答案,就是用事实来证明,我们已经完成了全部中文字形的字库,共收能见诸字典的「有效字」六万余,且能组合出符合仓颉输入法的字形「六百万」个!不仅如此,每个字的大小、长宽级次不限,(即所谓「无级次放大」)字型、字体也无限!而这些功能,仅用了 260KB的空间,每秒钟可组字 500至1000个!
我们还在努力改进,几十年的苦工算不了什么,只要我们还有余力,只要能保中国文化源远流长,这一切都是值得的。
前面所提到的任务,正是这些技术之一,因为其范围小,不涉及文字的专门知识,所以特地摘取作为分析的例证,以供有心人士参考。
因为我们能用 440KB完成任务,20MB的硬盘就可以完全由使用者支配了。反过来说,如果我们的中文字形要占用20MB硬盘,对客户而言,等于没有硬盘可用。于是,除了改变系统的规格,便得宣告该系统无法设计。
能不能使用软磁盘来存放字形呢?显然也行不通,软磁盘的读取速度慢,容量也嫌小,一般只用来做资料转换。

至于 Hercules 图形板,只是显示模组的一小段程式,我们提示在此,是因为这种显示板很适合中文系统。
键盘是一项经常被系统分析所忽略的组件,我个人过去就如此,这次特别提出,并在下文中详细说明。

二、原则

由前面任务已知有一种编码,能利用仓颉码特色,加入所有的表格符号,现在要找出一种有效率的设计及应用方式。
谁都知道在电脑作业过程上,产生功率最直接的步骤是机器码。而组合语言就是机器码的介面,根据效率定律一,组合语言的作业效率最高。
任务前面已经详细说明,效率的要求非常高,因此,我们决定利用组合语言作为基本工具。
再看效率定律二,生产成本的效益,取决于工作时间及损耗。如果采用组合语言写作,能不能在时间上有所改进?我们可以用事实证明,只要受过良好的训练,掌握了所有的技术,而且一切工具准备齐全,用组合语言写作所需要的时间,绝对不会比高阶语言多。
根据效率定律三,要达到应用方便的目标,在于功能的累进。不论将来硬体多进步,人类对其速度及容量的要求永远不会满足。采用组合语言只是第一步,举凡模组、介面等结合的技巧,及「整合」的观念,都有待大家努力去研究、开发。

三、工作性质
在谈到实际工作前,我们先说明一下中文系统。有人认为此为一系统程式,但我个人认为不如称之为附属程式。附属程式是一种环境,透过这种环境,可以增加中文的功能。因此,这种程式一定要驻留在系统中,而且,要改变原系统程式的中断程式位址。
所有的附属程式都需要一种「介面」,我们的工作自不例外。此处首先根据工作的性质,将所需的介面列举如下:
1,初始化系统图形态。
2,检查系统使用空间,决定是否能够执行。
3,检查和安排所有必要的参数值。
4,改变必要的中断入口位址。
5,申请程式的驻留,并回到系统。
在中文系统上,改变最大的首推图形字符显示INT 10H和列印INT 17H,其次是键盘处理INT 16H,和利用时序中断 INT 1CH 作为图形游标。这些本属系统功能,加以修改后,成为新的中断入口,在此仍称之为系统程式。
我们过去曾犯了一个很大的错误,为了想全面控制系统的功能,在改键盘中断程式时,把 INT 9H 也改了。原因在于对系统分析不够彻底,以致对该段程式的瞭解有了偏差。
INT 9H是在键盘输入后,每键产生两个字元的讯号,分别称为:「扫瞄码」(Scan Code) 及「字符码」(ASCII Code)。早期的机种,其键数不多,字符码完全符合 ASCII 的规定,即最高位的位元保持为0。
中文系统之所以能与若干英文软件兼容,就是利用该最高位元做分辨。我们当时误认为字符码不可能再改变,所以在写INT 9H时,该位元并未一一检查。不料新键盘的键数增加了,由于字符码不够,新加的「页控制键」,即键盘右中一列、键色较深的一区,其字符码皆为0E0H,亦即其高位不为0。这一来,在中文系统下,一碰到那些键,就被当作中文,事实上却又非中文码,因而天下大乱。
但是,在经过IBM BIOS的处理后,INT 16H 所得到的值却不然。那是为了与以往的系统兼容,把高位的位元放到一个缓冲器里去了。如果我们不改 INT 9H ,就不会有任何问题,而改了以后,又没有注意到这种情况,以致产品性能极不稳定,为人所诟病。
因为程式本身非常简单,介面解决以后,就只是程式的安排了。

四、相关问题

再来看看我们的工作还有什么应该注意的,除了程式本身的制作外,还要把前述的编码放到“聚珍整合系统”中。该系统的规格,请参考2聚珍整合系统操作手册。
我们已再三强调,表格之加入,一定要精简,否则喧宾夺主,就不值得了。
这104 种图形如果用点阵来画,共需 21,632B,竟占了系统空间的百分之廿。这还不说,点阵不能放大缩小,就无法供绘图、排版用。
于是决定了第一个原则,这些形状必须用程式绘制而不是存点阵资料,而且程式越小越好。
由于中文系统已经是图形态,且具备多种功能,所以不必再写绘图的程式,只要将输入码转换成该程式可以接受的资料结构即可。
“聚珍整合系统”内表格的制作,与下面所举的例子差异不大。为便于说明,在此以早期另一中文系统的表格符为例,使用的技术虽不成熟,但较为简洁。
当时所定的结构,是以暂存器的性质为本,规格如下:
AX=图形指令,如:横、直、斜、捺、点以及卅多种复杂的字形
BX=X1,X2
DX=Y1,Y2
SI= 指令贮存区起始位址
DI= 图形点阵贮存区起始位址
因此,只要资料结构符合,就可以运用原有的子程式。
第二个原则也因之决定,本程式应纳入原组字程式中,作为其中一个模组。
第三个原则,是在内码及资料表中,要增加一组表格码的资料。这并不难办到,因为 YYX后没有其他有效的中文字码,所以不会妨碍中文字码的排序。
凡是涉及编码的作业,千万不可忽略排序的功能。对系统分析来说,排序的功能是资料处理上,有关效率的重要手段。例如有个人口达一百万的都市,这一百万人的各种资料,都需要极为昂贵的电脑来处理。假定排序的功能良好,每天能够准时完成其固定的工作,而且排序的结果能令人一目瞭然,我们可以认定其效率正常。
再假设文字资料并不具备排序的功能,或者说其排序的结果,与使用者的观念无法配合,则电脑所处理的资料就等于废物。再若为了要用这些资料,须要用「对照表」的方式,重新排序,那么又要一倍以上的时间,也可以说还要耗费钜资增购一套电脑。
问题还没有解决,人所能接受的「文字序列」倒底又是什么呢?中文本身并不具备序列观念,这才是中文处理效率不足的,最严重的症结所在! 仅以字典为例,国人查字典时每个字要多久时间?一个「一」字,有多少同音字?如果有一个字,不知其正确读音,又该怎样去查?再问下去,恐怕能回答的人不多了,就是包括大学生以及学有专长的知识份子在内,到底能正确地读出多少音?我不讳言自己的无知,对我而言,只有三千个。
我承认当年研究仓颉输入码时,采用了拼音字母的排序优点。任何人只要能够正确地输入,就能与拼音文字一般快速地在经过排序的资料中,找到该中文字的位置。

目前中文电脑的发展还在字码输入,及字形显示中留连徘徊,但是,从事这项工作的人,有几个曾认真地考虑过这些问题?有几个真正瞭解系统分析的要求?所以,我期望读者们能够不贪急功,不求近利,扎扎实实地先把各种问题考虑清楚,然后再一步一步地研究解决之。

第三节 模组观念

当宇宙中还没有人类文明时,是一个整体,循着一定的规律,无休无止地运行。人类的出现,因为意识到自我与非我的分别,就产生了是、非,有、无,善、恶,好、坏的认知。世事的复杂性,即源自于这种分辨心,而忽略了本体的完整及规律性。
人类对知识的追求,是利用概念作为工具,有系统地对宇宙各种现象分门别类的分析。而分析的结果,可以视为各种模组,人则藉着各式模组,来认知宇宙这个大环境。
因此模组并不局限于具体的、客观的事物,任何可以经由分析、归纳而认知者,均具有模组结构。而且每每在一些模组的结构上,又有另一层次的模组展开。
电脑软件的模组,则是一些功能或性质独立的「目标档」(OBJ Files )。此类目标档与介面模组相互联接后,即可执行。为了追求工作效率,将此类模组有系统的予以分类整理,公开上市,不仅可以避免程式的重复制作,且可便利程式师的组合应用。
「集装货柜」增进了航运的效率,其原因就在于将货物「模组」化,有的以运送目的地、有的以货物性质而定。此外,如「预铸房屋」,甚至于流水线式的生产等,都具有相同的观念。这和程式制作时,为了效率所作的模组分割,有异曲同工之妙。
软件模组化的要求由来已久,此与工业生产的经验有关,但是迄今很少有具体的成功先例。因为软件的变化无穷,很难建立一种「工业标准」,既没有标准,就难以统一规划。
因为标准是人制订的,在初,不论如何深思熟虑,不周之处在所难免。但只要有了先例,而且能提供大家参考、应用,集合众人之智慧,总会有完善的一天。
问题在于,当今有经验的程式师们太忙了,有的忙于自我创造,有的忙于模仿抄袭,有的则忙于享受、玩乐。学校里所教的,全是与现实脱节的理论,而一出校门,由于软体程式师供不应求,炙手可热,立刻就投入了市场的洪流,推波逐澜,还有谁管什么模组!

一、模组定义

1,空间小、结构完整,能独立调用的程式。
模组不能太大,否则无法灵活应用,程式的结构又必须独立且完整,以便于分解、组合,供二次开发的程式自由调用。
有些模组需要与公用模组配合使用,由于公用模组为全部模组设计的基础,故仍可视为独立调用。

2,效率高、弹性大,便于其他程式调用者。
二次开发的程式系建立在模组结构上,如果模组的效率不佳,必然会影响其操作。同时,各种应用程式都有特殊的需求和条件,而模组则要考虑通用性,否则很难符合各种条件。所以,在设计模组时,要考虑应用的弹性,使之既能适应各种需求,又能达成特殊的任务。

3,功能明确,其变化以参数设定实现。
功能不明确,将会令应用者困惑,也就达不到预期的目的。功能明确与否,除了程式本身外,手册及说明也占了极大的比重。
所谓功能明确,并非指明确的单一功能,而是指功能的分类。在分类时,需要有一种容易分辨的方式,而最简单的,便是设置参数,凭参数作分支的条件。

4,程式之间必须利用暂存器传送资料者。
基于程式、模组之间相互独立,各自应用的缓冲器无法统筹运用。故在执行时,必须利用暂存器以传资料或参数,完成彼此的沟通。

二、模组种类

将模组分类,为的是便于说明,以下的分类法,并非一成不变。原则上,模组可分为:
1,功能模组:以所执行的功能加以分割者。
此类模组要考虑应用上的方便及功能的完整。然而,所谓功能的完整,祇限于独立、单一的目标,绝不可将多个不同的功能,设计在一个难以分割的模组中。

2,公共模组:没有明确的功能,但具有共用的效益,或其他某种特殊的目的,也可以设计成为模组。
这种模组经常附属于其他模组中,设计时应注意其调用的灵活性,并应专设一目录,详细记载其用途,以便随时查寻。

3,介面模组:介于两「面」之间,以解决两者问题之模组。一般在程式中,凡属资料与资料间、程式与程式间、硬体与硬体间者,皆为介面关系,处理这种关系的模组即为介面模组。

4,应用模组:应用者为人,工作者为程式,故提供给应用者操作的模组,概称应用模组。
此种模组在实质上,仍属一种介面,但因为其实用价值关系到一个程式的成败,必须独立考虑。
这种模组变化最大,随时有必要根据使用者的需求修改增减,故设计时要特别留意。

三、模组分割的基本原理

中国文化之博大精深,可以由古人的思想略窥一二,许多人自以为学了一点西方科学技术的皮毛,就像夜郎一样了不得了。其实,除了知识在不断累积外,从古至今,人的智慧并没有丝毫增长。
模组是一种极有价值的观念,任何事物的形体、结构、步骤,甚至于概念、认知等,都可在以某个目标为前提之下,分析成为若干模组。有了模组,范围就会缩小、问题也就变得单纯,比较容易掌握。如果能有效地利用模组,以之作为解决问题的手段,将是无往而不利。
庄子早见于此,曾经以寓言的方式,在其内篇《养生主》中,就曾对模组的分割,作了透彻的剖析介绍。时到今日,科学昌明之际,读来仍有「振聋起聩」,一新耳目之慨。
为此,特将原文抄录于下,再作浅释。

养生主第三

吾生也有涯,而知也无涯。以有涯随无涯,殆已。已而为知者,殆而已矣。为善??近名,为恶??近刑。缘督以为经。可以保身,可以全生,可以养亲,可以尽年。
庖丁为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所踦。砉然向然,奏刀騞然,莫不中音,合于桑林之舞,乃中经首之会。
文惠君曰:『嘻,善哉,技盖至此乎?』
庖丁释刀对曰:『臣之所好者道也,进乎技矣。始臣之解牛之时,所见??非牛者。三年之后,未尝见全牛也。方今之时,臣以神遇,而不以目视。官知止而神欲行,依乎天理。批大却,导大窾,因其固然。技经肯綮之未尝,而况大軱乎?良庖岁更刀,割也;族庖月更刀,折也。今臣之刀十九年矣,所解数千牛矣,而刀刃若新发于硎。彼节者有闲,而刀刃者??厚;以??厚入有闲,恢恢乎其游刃必有余地矣,是以十九年而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒。视为止,行为迟。动刀甚微,謋然已解,如土委地。提刀而立,为之四顾,为之踌躇满志,善刀而藏之。』
文惠君曰:『善哉!吾闻庖丁之言,得养生焉。』

1,前文释义
人的生命有限,而知识无尽,以有限之生命追求无尽的知识,是自陷于绝地。既已自陷,还妄想藉助于知识,以求自救,当然更是匪夷所思了。
其实,只要瞭解事物的道理,以及各种问题的症结。不要执着于表象,不要迷惑于现状,顺理而行。如是,不仅可以安身立命,且能功成名就。
梁惠王有一厨师,宰牛时,姿态潇洒,动作俐落,颇有艺术家的风采。梁惠王见了,赞不绝口:
『真了不起!你的刀法神奇到这个地步!』
厨师听了,忙把刀放下,向梁惠王禀告说:
『臣子我一向重视观念,并不在意小技巧。最初,臣宰牛时,只看到牛的全身。又过了三年,每宰牛时,所看到的只是牛的结构。现在,臣已能心领神会,按照自然的原则,不论是剖肉、卸骨,刀尖只要顺着关键的间隙轻轻一挑,其组织立即迎刃而解。
好的厨师每年换刀,这是因为切割过多,难免有所损耗;技术较差的,经常用力砍,刀锋易折,每月都需要换一次。而臣所用之刀,已经有十九年了,宰牛不下千头,而刀刃锋利如昔。
其实,道理很简单,牛体是由很多不同的组织组成,其间必然有衔接的空间。因为刀锋很薄,在组织间隙中移动,轻轻松松,甚至还有多余的地方。
当然,也有碰到棘手时。臣就会全神贯注,先找到问题所在,小心谨慎地处理。一旦刀锋稍动,剎时之间,组织分离,大功告成。
那种成就之后欣慰的感受,简直难以比拟。最后,为了下次的工作,把刀擦拭干净,好好保护收存。』
梁惠王听了,道:『好极了,听你一席话,领悟到不少人生的大道理。』

2,主旨精要
人生是有限的,为了有效的利用精力,以解决一切问题,应该学习掌握事物的原理。原理之一,即为事物皆具有模组的结构,模组是事物组成之基础。有能力的人,一定善于分析事理,瞭解事物的结构基础,得以从容不迫,在面对问题时,找到有问题的模组,在其症结上下刀,问题便会迎刃而解。

爱电脑 就爱www.zzzyk.com 电脑知识网

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,