首页  新闻  文章  软件  动画  编程  设计  视频  搜黑  网址  网校  博客  论坛  邮箱  最近更新

漏洞公布  病毒公告  业界动态  黑客新闻  黑客人物  杀毒防护  安全书籍  升级补丁
入侵检测  漏洞研究  软件评测  操作系统  技巧知识  网管天地  黑客编程  Q Q 技巧  安全防护
扫描检测  远程监控  脚本注入  拒绝攻击  嗅探监听  木马后门  字典代理  密码破解  Q Q 软件
Q Q 动画  木马教程  脚本入侵  漏洞利用  加密破解  软件应用  安全配置  综合教程
Delphi编程  汇编编程  VB编程  VC/C++编程  PB编程  VFP编程  WEB编程  Exploite  数据库编程
黑客培训 2G防毒Email
·搜黑-全球首例黑客资讯搜索
·视频-国内视频学习教学大全
·设计-汇集百家设计网站精华
·编程-13大编程语言全面学习
安全中国首页 > 编程中心 > 汇编编程 > 汇编文章
汇编语言---程式设计(5)
http://www.anqn.com       时间:2005-8-30 21:45:00       责任编辑:王奇       网友评论 
热 点:
四、桥式法: 

    桥式法是利用读写记忆体的特性,将程式中若干指令直接填入,作为临时便桥,以改变此段程式的功能。 
    例如在显示时,希望能提供多种变化,而又不愿减低速度及增加太多的程式。最好的方法,便是利用桥式法,在同一位址,填入需要的指令。 
    桥式法用得好而又灵活时,对程式的效率极有助益。但是应该注意一点,就是只能用在可读可写的记忆区中,如若要制成「韧体」,即置入仅读记忆体(ROM) 中的程式,绝不可使用此法。 
    下面的实例,即为萤幕显示的桥式应用。首先,把架桥的「材料」设置在缓冲器中,如: 
    CDSPMOD   DB      88H    ;8805 = MOV [DI],AL 
          DB      30H    ;3005 = XOR [DI],AL 
          DB      08H    ;0805 = OR  [DI],AL 
          DB      20H    ;2005 = AND [DI],AL 
    CDSPMOD 即为缓冲器,其中有四个数据,分别为机器码的相异部份,如分号后所注。因为四组机器码皆有 05 ,不必再填。=右边部份,即为该机器语言相对应的指令。 
    程式部份先设妥功能定义,利用一、所说的变数应用法,依序由0至3先载入暂存器BX中。根据 BX 值,将所需机器码载入程式中。 
   10:CLOD: 
   11:        MOV    AL,CDSPMOD[BX]    ;用BX取预存码 
   12:        MOV    CS:CDSP2[1],AL    ;载入CDSP2+1 
   13:CDSP: 
   14:        SUB    SI,SI        ;资料由0起 
   15:CDSP1: 
   16:        LODSB            ;取资料 
   17:CDSP2    LABEL BYTE        ;载入的位置 
   18:        XOR    ES:[DI],AL    ;原码26 30 05 
   19:        INC    DI        ;须改 30 部份 
   20:        LOOP    CDSP1 
   21:        RET 

五、流水线法: 

    工业上的流水线生产作业,需要极为严格的规格限制,原器件分别研制完毕后,统一送到生产线上组装。 
    程式亦可采用同样的方法,只可惜一时手头上找不到现成的、适用的例子,只得将方法概述如下: 
    先设定处理流程,凡是能用这种生产流程者,皆适用。 
    再设定处理流程中所采用的「生产线」,也就是缓冲器。因为流水线上所用的资料都需要由缓冲器提供。 
    此缓冲器的长度由流程决定,缓冲器中的资料则由各调用本流程的原程式载入。 
    各调用程式可视个别条件,将所需处理的资料,放在缓冲器内(全部或部份)。待调用后,再从原缓冲器中取出经过处理后的资料。 

六、对应表法 

    凡是指根据某种需要,将经过整理的资料,以某种固定的格式,安排在一特定区域中。每当需要时,立刻可以按照排列的位置取出来使用的,皆可称之为对应表。 
    这种对应表是我最喜欢利用的技巧,速度奇快不说,修改也极其容易。尤其是我做事一向不拘小节,写起程式来,专出小错。自从采用了表格对照法后,凡是适合这种形式的程式,只要想通了最理想的结构,几个指令就把程式写完了。 
    兹将附录中所举的例子,对字形放大所采用的查表法,在此作进一步的介绍。 
    假设有一组图形,要在萤幕上左右放大一倍。一般程式师做这种题目,都是在暂存器内移来移去,每一个字元的资料,起码要移八次之多,每次都要用借位作为转换值。而转换时,又要放进一个16位元的暂存器中,尽管可以用回路去做,时间的延误相当大,读者可参考附录二以做比较。 
    当然,表格要占用空间,以本例而言,如果一次用256B,取足则要512B。 
    因此这种技术可以说是以空间换取时间。在第一章第三节「效率」的第四条定律下,我们知道键盘输入速度,决定于人的操作速度,而人的反应远远不及电脑,故应以人的速度为时间边际值,尽量设法节省。 
    目前,所涉及的是显示时间,每个人在电脑前,都期望着立即得到结果。因此,显示速度不仅要快,而且越快越好。所以,前述的空时交换应在可能范围中,视实际的边际效应,以作取舍。 
    现在看看资料分析,下面列举的二进位资料,在左边为原图形点阵,在右边则为放大一倍后的点阵: 
    原点阵              左右放大一倍 
    00000001            00000000 00000011 
    00000010            00000000 00001100 
    00000011            00000000 00001111 
    .. 
    01010101            00110011 00110011 
    .. 
    11111111            11111111 11111111 
    现在有两个因素非常明显,第一,不论什么点阵,放大后长度加一倍,一字元有256 种。放大后点形种类不变,但字元数加倍为 512个。其次,由于放大后的 512个中,有一半皆相同,故仍可用256 种表示。 
    至于取前者或后者,当视情况而定。 
    决定以后,将之定义在缓冲器中,以原图形的点阵资料作为索引值,即可采间接定址法,立即取得放大后点阵。 
    在制作对应表时,应养成良好的习惯,根据资料的规则,以等长度、固定的格式输入。这样不仅对表中的资料能一目瞭然,而且容易输入、侦错、修改,一举数得。 
    如某表格为: 
    100 TBXXX  DB  0,1,3,7,0FH,1FH,3FH,7FH,0FFH,2,6,0EH,1EH,3EH,7EH,0FEH 
    此表看去远不如下表来得清楚、规律: 
    100 TBXXX DB  000H,001H,003H,007H,00FH,01FH,03FH,07FH 
    200       DB  0FFH,002H,006H,00EH,01EH,03EH,07EH,0FEH 
    从事程式写作,规律的思考方式及追求,经常事半功倍。这种小技巧看似没有多大作用。事实上,在输入时,规则化的结构可以轻易地利用现有的功能,或复制,或修改。更有利的是能一眼看出该表的意义及正确性,在程式侦错时,往往可以节省大量的时间。 

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

·上一篇: 汇编语言的艺术(组合语言的艺术)--基本认识(1)
·下一篇:汇编语言---程式设计(4)

发表评论  打印本文  返回顶部  关闭窗口
最新5条评论 条评论
条评论
名称: 信箱:

相关连接
·汇编语言的准备知识--给初次接触汇编者(1) [2005-8-30]
·汇编语言的准备知识-给初次接触汇编者2 [2005-8-30]
·汇编语言的准备知识-给初次接触汇编者3 [2005-8-30]
·汇编语言的准备知识-给初次接触汇编者4 [2005-8-30]
·汇编语言---程式设计(2)(图) [2005-8-30]
·汇编语言---程式设计(1) [2005-8-30]
·汇编语言---程式设计(3) [2005-8-30]
·汇编语言---程式设计(4) [2005-8-30]
·汇编语言的艺术(组合语言的艺术)--基本认识(1) [2005-8-30]
·汇编语言的艺术(组合语言的艺术)--基本认识(2) [2005-8-30]