庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>汇编语言>基础教程>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

汇编语言---程式设计 (2)

 作者:本站收集   日期:2005-8-1 15:26:40
字号选择〖 〗/ 双击滚屏 单击停止   
四、模组分割

    既然称为模组,本不存在分割与否的问题。如果一个程式师一开始就具备模组的观念,彻底瞭解其性质,当然知道如何设计,自然就没有分割的必要。即令如此,在程式的制作过程中,经常是信马游缰,想到哪,写到哪。所以,养成模组分割的观念,对实际工作上,自有其必然的功效。
    模组分割的原因不定,大约可分下列数种:
  1,为了制作的方便,把程式分成模组,易于维护。
  2,为了工作效率,或需要速度、或为节省空间的程式,分别用不同的技巧制作。
  3,因程式师的工作能力,或工作条件而进行分割。
  4,因程式的功能分类,分开制作,以便于灵活应用。
    不论原因为何,分割模组前,一定要先确定目标,全面认知程式的格局,再加以整理、归类,才能根据类别来分割。
    分类确定后,再以分类来命名,以便于记忆及应用。这时格式的统一定义便是关键所在。因为模组一多,相互间的调用极为频繁,如果格式不能统一,程式间常常需要因应调整,反而增加了使用上的难度,得不偿失。
    其次,各模组必须建立一个总表,而且要经常维护,务必与实际上所使用者一一对应,切勿偷懒。每次调用时,还需修正记录,如使用次数,调用的程式等。
    如果程式制作的规模大,参与人数多,最理想是由专人负责模组管理。从事这种工作的人,必须头脑清楚,反应敏锐,而且要能任劳任怨,勤于更新。
    在做模组分割前,应先备妥 .ref 及 .lst 档,设有一程式 abcd.asm ,其做法为:
    C:>M ABCD,,,;
    m 为汇编程式,即 masm.exe 之简化名,请参见第二章第二节。其后之“,,,;”表示需要 .obj,.lst和 .crf三个档,而且不必显示在萤幕上。
    汇编完成后,再用 cref.exe 生成 abcd.ref 如下:
    C:>CREF ABCD;
    这时,将 abcd.lst 及 abcd.ref 印出,相互对照,先将程式精简、整理,再行分割。
  1,在 abcd.ref 档中,每个「标题」都来自 abcd.lst 档,标题之后,有若干组数字,其中带#者,表示标题出处,余者为调用之处。若仅有来处,而无调用处,则此标题可删除。再如标题前之指令为 jmp 或 ret ,则此标题所代表的程式毫无用处,亦应删除之。

  2,如 abcd.lst 档中有 nop指令,除非是有意安排者,否则亦应删除。如在 jmp xxxx 之后,可将之改为 jmp short    xxxx 。
    若 XXXX 之前无连接的程式,亦可将之合并。此外,凡指令 CALL 所调用的子程式,如仅调用一次,最好将此段子程式合并在程式内,或附属于其后,以便于分辨。

  3,程式精简及合并后,再行检查各段程式,凡功能独立者,应先分割。分割后,再检查其中是否调用其他子程式,如有,应先记录下来,此段程式即可视为「功能模组」。

  4,凡前述功能模组中调用的子程式,如仅供该模组调用,则可附在该模组后,否则应置于「共用模组」中。

  5,但凡程式之「主流程」,大多属「应用模组」。此类应用模组极难分割,也无分割的必要。

  6,分割完毕后,应详细注记,以便备用。

五、模组特性

    所谓模组特性,是指各个模组在设计或分割之初所考虑的因素。特性包括了功能,效率的特别要求以及使用时应行注意的重点等有关模组的细节。
    不论模组设计的目标为何,既然有了模组,就应该高度发挥其应有的效率。各个模组之分割,皆有其必然因素,不论是为了功能,或是为了制作方便,目的都在追求效率。而每个模组皆有其特性,要达到效率要求,应先瞭解模组的特性。
    下面以前节所举的中文系统为例,将其中各个模组的特性一一详细分析如下:
    【模组一】:中文处理的系统模组-功能模组
      1,键盘中断:因为人输入的速度远逊于电脑处理速度,所以,本中断程式应该以节省空间为主。此外,键盘的应用,以灵活达变为重点,宜多采用「建表」法,便于修改、变更。

      2,显示中断:显示速度非常重要,本模组应牺牲空间以争取时效。此外,显示的弹性要大,凡字符的大小、位置、属性等,都应该一次考虑清楚。
        目前显示器的规格很多,彼此互不相容,一般多在程式载入前,先作安排。在本模组中,尤其应该注意不同的显示程式,如何兼顾速度的运行。

      3,列印中断:列印也面临不同的机种介面问题,但因不涉及速度,其技巧完全属于设定及载入方面。

      4,通讯中断:通讯所需考虑的,是如何保证在资料传输过程中的安全、正确及保密。

    【模组二】:中文内码模组-辅助模组
      因为仓颉码可以组出既有的,以及排列组合上可能产生的中文字,照理应该不受内码的限制。但是仓颉输入码之长度不定,为了电脑的处理效率,我们采用了四字元内码,每一字元的最高位元设置为1 ,以与英文字符有别。
      内码的转换也应考虑速度,而且要能双向转换,程式制作不难,但处理的技巧也不低。

    【模组三】:中文字形结构模组-介面模组
      贮存中文基本字形结构,根据输入的仓颉码,得到文字结构的基本讯息,以之组成字形。
      中文字数极多,字形结构的规划是成败的关键,只要每个字形多加几个字元,空间就会恶性膨胀。
      本模组采用多层结构的技巧,其中子模组甚多,空间及速度兼顾,才能在极小的空间中,完成大量字形输输出,而且变化灵活,完全拜模组分割之助。

    【模组四】:字形分析模组-辅助模组
      举凡字形大小、种类、笔形的变化及位置等,皆在本模组中完成。
      字形分析以变化多为目的,故本模组主要功能在处理变数,应该妥善安排各缓冲器,以达到效率要求。

    【模组五】:英文字形模组-功能模组
      英文字形与中文有异,所以另成一模组。其字数较中文为少,但却不具备任意组合的功能。

    【模组六】:绘图模组-功能模组
      这段程式是字形产生器的核心,当得到模组四、五的资料以后,要以高速将字形绘出。
      绘图程式的关键在计算,计算虽然是电脑的原始功能,如果不另外加上「辅助计算器」,电脑的运算效率就大为降低。
      一般说来,仅在萤幕上绘图,或做字形绘制时,其范围有限,且可以预知,故可采用「对照表」或快速运算法,换取显示效率。在列印输出时,则可采高精度运算方式。

    【模组七】:各种介面-应用模组
      介面即为介于两个模组,或两个独立的系统间的机构,在大型模组工程中,介面之良窳,是使用效率的关键所在。
      介面是各个模组得以顺利配合的重要程式,只要瞭解介面的结构,便可以轻易地与原程式沟通。

六、模组调用

    模组的先决条件是要能灵活调用,否则就失去了其设计的意义。而且模组的目的之一,是为了提供给其他程式师,作二次开发用。所以调用的方法,至关重要,必须面面俱到。
    调用的方法很多,为了兼顾多方面的效应,我主张利用系统程式的中断处理。这样做的好处是,系统设计者不必考虑模组的设置,应用的程式师也无须担心入口的位置,直接以参数调用即可。更有利的一点,则是可以在空间不足时,利用覆盖的技术,灵活调用贮存在磁盘中的其他模组。
    「中断」是系统所提供的公用介面,其唯一的缺点是执行效率较差,但应用的程式师可以将中断所提供的位址,移到自己的缓冲区内,代之以长距离的调用,即可改进之。
    以下且以中文字形产生器应用介面为例,说明模组调用方法。本字形产生器提供见诸字典、文献之有效汉字六万余,仓颉输入法所可能组合产生的「新字码」约近六百万字,在本字形产生器中皆有相应之字形。
    除了字数外,字级由1*1 至 128*128,无级次变化。字体在目前仅提供明体、黑体、圆体及长、扁宋等,其横直粗细比值由1至8点,上限为直粗的十二分之一。字形变化有空心、斜体及十种填花体、横向粗细变化体等。
    至于繁体、简体字形或 ASCII字符,也可由使用者自选。
    



    第二种方法,则是提供模组的目标码 (.obj ),由应用程式师自行联接成执行档。这种做法,每个程式相互独立,兼容性不高,通用性也不强,如果同时想应用多个程式,则需要极大的系统空间。
    小型且专用性极强的应用程式,适用这种方法。但模组一旦与应用程式联接后,就很难再灵活应用。

上一篇:汇编语言---程式设计 (3)    下一篇:汇编语言---程式设计 (1)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-8-1 15:26:40
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿