通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
汇编语言的艺术(组合语言的艺术)--准备工作
责任编辑:admin   更新日期:2005-8-6
   12: IG      SEGMENT PUBLIC
   13: IG      ENDS
   14:         END
    在 SEGMENT PUBLIC 之后,有多种表示方式:
    SEGMENT PUBLIC XXXX
        XXXX=CODE 表示为程式段,在联接时,属程式的段与段前后衔接。两段程式之间,以 000H 填充至「节」( 每十六个字元为一「节」 )之首位。
        XXXX=DATA 表示资料段,在联接时同上。
        如果程式师为了某种原因,必须严格控制程式之位置及长度时,不宜使用上述两种方式。
        最简单之陈述方式,即在 SEGMENT PUBLIC之后,保持空白。
        XXXX=BYTE 表示程式联接后,各程式之间紧密接合,不留空位。这种方法,有利于程式精简。
        XXXX=WORD 表示程式联接后,各程式之间紧密接合,但在后面的程式必然由双数位起。

    又如在 XXXX 前后加以引号如:
    SEGMENT PUBLIC 'XXXX'
    此一宣告,用以通知汇编程式各段的顺序及定义。因此在编写程式时,只要使用的段名及定义与本档相符,不管将各段安排在程式任一位置,都不致发生错误。
    ‘XXXX’与本段程式的排列顺序有关,在联接时,先将引号中的字串排序妥当,各程式即依此顺序排列之。
    也就是说,凡是使用了引号,则程式联接的顺序,即以在引号中字串,于联接时出现先后为顺序。
    单一程式档的错误不难测知,但若各段之间发生错误,对经验不足的程式师,将有无从下手之虞,不得不慎!
    一般说来,在联接时,最令人头痛的错误讯息为:
    'fixup overflow at nnnn..'
    不论其错误提示内容如何,此种错误的发生,多半是因为段与段之间的标题、缓冲器或是暂存器的使用发生了混淆,联接程式得不到正确的信息所致。
    解决方法是在第一个错误讯息出现时,立刻以‘Ctrl_C’停止汇编,记下第一个讯息,再在原程式中,找到该位置,(多半为一标题位置)在此标题之前,一定会发现与「段」有关的错误。

二、原始档(Source File)档名定义

    在共同设计大型模组时,程式师间的默契,全赖事先相互约定。否则程式越大,所面临的困难将越多,经常耗时费事,甚至最后功败垂成。
    因此,在设计之初,必须妥善规划,将一应有关的档案、名称、功能等,皆明确地加以定义。参与设计的程式师,更必须严格遵守,方能得心应手。
    原始档名的定义,其目的有三:
  1,代表程式设计者:当制作的程式甚多时,一见档名,就应能分辨出各个程式的设计人。再如某程式师所编程式在一    个以上,则应在其本人代码之后,加一数字编号。这样,遇有任何问题,立即可以找到来处,进行追踪。

  2,代表程式功能:每当联结后发生问题时,应能由档名查知问题所在,故每种功能宜给予适当的名称。

  3,代表联结的关系:除了功能外,有时尚须表示各程式之间的联结关系。如某一程式必须安排在另一程式之前或后,亦应在档名最后,以数字表示顺序。
    若参与的程式师不超过廿人,则以一字元为限,各人事先选定一个字母,作为档案名称的第一字元。第二字元则视该程式师是否编写一个以上的程式而定,是则取一数字代表之,若无则免。
    功能以三到六字元为宜,能统一长度将更为方便,余下一字元留供数序用。
    例:程式师代号为‘C’,本程式之编号为3,功能为‘DRAWS’,此外并无联结关系,则其名应为:
        cdraws3.asm

三、标题定义

    程式在整理或测试时,最大的困扰,是寻找某一个标题的出处或功能。如果在同一档中,尚可利用cref.exe,列印出一份对照表来;如果不知道出自哪一个档案,在众多的程式中,就只有望洋兴叹了。
    至于功能,如名称定得太长,不仅输入、修改不便,而且会使得程式看来杂乱无章,令人眼花撩乱。如果定得太简单,或各人任意定名,则难以理解。
    所以,标题定名之重要性,不下于程式之写作。尤其是在参与人数众多时,标题不仅要统一,而且要能代表所有必备的讯息。
    标题所代表的讯息有:
          A x x x x x x x x
          │└┬┘└┬┘└── 分支代号
          │  │    └──── 延伸定义
          │  └─────── 功能名称
          └───────── 程式出处

  1,程式出处:如果很多人同时参加一个计划,而某程式师仅写了一个程式,此定义即为该程式师之代码。否则尚要附    加编号,以便随时可查到。即使只有一个人写作程式,程式可能不断扩大,为了制作的方便,或为了模组的分割,常有必要将程式分到其他档中。因此,一段程式究竟出自于哪一个档案,全赖标题表明,以便能迅速地找到。 
        程式出处一般用一个字母即可,如前述第一个字母A代表此段程式来自编号为A的原始档;或属于以A为代号程式师的程式。

  2,功能名称:除若干已知会用到的功能可以事先定义外,其余的多半是在发展过程中,针对需要而产生。对功能定义千万不要掉以轻心,一个程式的再利用价值,常与其功能定义息息相关,明确的定义,可以令人对其功能及应用方式一目瞭然。
        功能名称长度以三个字母为宜,太长则输入费时,尤其是国人不见得个个英文了得,与其写错,不如藏拙。
        如:DSP 表示萤幕显示功能
            PRN 表示列印功能
            KIN 表示键盘输入功能

  3,延伸定义:若功能相同的程式过多,2,中的定义方式难以分辨,则可再加一延伸定义。
        如:DSPDOT表示显示点阵
            PRNCHI表示列印中文
            KINASC表示输入 ASCII 字符

  4,分支代号:在程式中常有分支,分支代号最理想是由小而大,依序安排。但由于写作时常难以预知后情,故宜先留空号,以便扩充。
        如:DSPDOT10
            PRNCHI06
            KINASC24

四、缓冲器定义

          B x x x x x x x 
          ││└┬┘└┬┘
          ││  │    └─── 延伸定义
          ││  └────── 功能名称
          │└──────── 类型
          └───────── 缓冲器保留字

        第一个字母规定用‘B’,为缓冲器保留字。
        第二个字母定义其类型:
        Q=QWORD     如:BQxxxx 缓冲器长度为8字元。
        D=DWORD     如:BDxxxx 

上一页  [1] [2] [3] [4] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程