通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
汇编语言---程式设计 (5)
责任编辑:admin   更新日期:2005-8-6
sp;3: CHECK:
    4:        LODSB          ;取资料,AH永远为0
    5:        MOV    BX,AX      ;利用BX间接定址
    6:        INC    WORD PTR RECORD[BX]
    7:        LOOP    CHECK
    8: STORE:
    9:        MOV    SI,OFFSET RECORD+512;指向最
                        ;后记录
   10:        MOV    BP,OFFSET RECORD    ;供检查
   11:        POP    DI      ;资料贮存处
   12: STORE1:
   13:        CMP    SI,BP      ;查是否完毕?
   14:        JE    RECEND      ;完成
   15:        DEC    SI      ;向上取
   16:        DEC    SI
   17:        MOV    CX,[SI]   ;取记录值
   18:        JCXZ    STORE1      ;无记录,重取
   19:        MOV    AX,SI      ;当前之位址
   20:        SUB    AX,BP      ;差值
   21:        SHR    AX,1      ;原有值
   22: STORE2:
   23:        REP    STOSW      ;重新载入
   24:        JMP    STORE1      ;继续
   25: RECEND:
   26:        RET
    程式的变化无穷无尽,尤其是用组合语言写作程式,简直没有止境。只要稍稍用点心,加一点点变化因素,一个巧妙无比的程式,就会跃然而出。
    写程式的乐趣,就在于心智的投入。学者们不妨试着把这      式再加以改良,其中还有不少可以下手的地方,养成习惯以后,程式自然就会精简了。

八、预置法

    预置法适用于流程的安排,尤其是在不确定的情况下,有时需要作多项检查,不仅浪费时间,对空间也不利。
    例如有一段程式,其目的在于处理使用者所选择的流程。由于使用者事先通过介面程式,选妥各项工作,现在必须依某一顺序执行。
    这是一项难度相当大的工作,要执行固定顺序不难,下面的程式就可以达到目的。当然,一如既往,我们会尝试着将程式一再改进。最后,我们再来讨论如何能执行使用者所安排的顺序。
    设子流程有八种,使用者选用时,可令BX值等于子程式的代号。选用方式为「开关式」,即单数次为开,设定参数,复数次为关,取消设定。
    设定后,因为共有八种程式,可以用八个位元来设置所需要执行的旗号。当然,这要看程式的多少而定,八位元正好用一个旗号FLAG:
    1: SETUP:
    2:        CMP    BX,MAXVAL    ; 最大值检查
    3:        JA    SETRET        ; 超过,无效
    4:        SHL    BX,1        ; 参数乘2
    5:        JMP    SUBTB[BX]    ; 各种程式
    6: SUBTB    DW    SUB1        ; 各种程式
    7:        DW    SUB2        ; 程式中设定
    8:        ..            ; flag
    9:        DW    SUBN
   10: ENTER:
   11:        SHR    FLAG,1        ; 检查FLAG
   12:        JNC    ENTER1
   13:        CALL    SUB1        ; 有设定
   14: ENTER1:
   15:        SHR    FLAG,1
   16:        JNC    ENTER2
   17:        CALL    SUB2
   18: ENTER2:
   19: ..    ; 如此连续进行八次
    显然这种做法其笨无比,第十条以后,可用回路取代:
   10: ENTER:
   11:        MOV    CX,8
   12:        MOV    AL,FLAG     ; 暂存器较有效
   13:        OR    AL,AL
   14:        JZ    ENTRET        ; 不必做
   15:        SUB    BX,BX
   16: LOOP0:
   17:        SHR    AL,1
   18:        JNC    LOOP1

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

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