通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
汇编语言的艺术(组合语言的艺术)--基本认识(3)
责任编辑:admin   更新日期:2005-8-6
sp;这样做看起来似乎程式不够精简,可是正确的重要性远在精简之上。一旦发生了错误,再精简的程式也没有使 用价值。
        此外,在程式中常有加、减的运算,这时也应该作正确性检查,否则会发生上述同样的问题。

三、指令应用要灵活

    有一段很简单的程式,其写作的方法甚多,但是指令应用的良窳,会使得程式的效率相去天上地下,难以估计。
    这段程式的用途,是要将一段资料中,英文字符大、小写相互转换。当然,转换的选择要由使用者决定,在下面程式且略去使用介面,假设已得知转换的方式。
    设资料在 DS:SI中,资料长度=CX ,大写转小写时BL=0,反之,则BL=1。
    我见过一种写法,简直无法原谅:
    1: LOOP1:
    2:        CALL    CHANGE
    3:        JC    LOOP11
    4:        ADD    AL,20H
    5:        JMP    SHORT LOOP12
    6: LOOP11:
    7:        SUB    AL,20H
    8: LOOP12:
    9:        MOV    [SI-1],AL
   10:        LOOP    LOOP1
   11:        RET
   12: CHANGE:
   13:        LODSB
   14:        OR    BL,BL
   15:        JZ    CHANGS
   16:        CMP    AL,61H
   17:        JB    CHARET
   18:        CMP    AL,7AH
   19:        JA    CHARET
   20:        STC
   21: CHARET:
   22:        RET
   23: CHANGS:
   24:        CMP    AL,41H
   25:        JB    CHARET
   26:        CMP    AL,5AH
   27:        JA    CHARET
   28:        CLC
   29:        RET
    这种程式错在把由12到29的程式写得太长,共 25B,有共用的价值,于是作为子程式调用。
    试想一下,每一笔资料,都要调用一次,浪费四个字元事小,但每次要费 23+20个时钟脉冲,资料多时,不啻为天文数字。更何况这段程式写得极差,在回路中,又多浪费了几十个时钟。关于这一点,下面会继续讨论。
    照上面这段程式,略加改进,写法如下:
    1: CHANGE:
    2:        LODSB
    3:        OR    BL,BL
    4:        JZ    CHANGS
    5:        CMP    AL,61H
    6:        JB    CHARET
    7:        CMP    AL,7AH
    8:        JA    CHARET
    9:        SUB    AL,20H
   10: CHANG0:
   11:        MOV    [SI-1],AL
   12: CHANG1:
   13:        LOOP    CHANGE
   14:     RET
   15: CHANGS:
   16:        CMP    AL,41H
   17:        JB    CHANG1
   18:        CMP    AL,5AH
   19:        JA    CHANG1
   20:        ADD    AL,20H
   21:        JMP    CHANG1
    这样的写法还是不佳,因为在回路中,用常数与暂存器比较,速度较暂存器相比为慢。应该先将需要比较的值,放在暂存器DH,DL 中,改进如次:
    1:        MOV    AH,20H
    2:        MOV    DX,7A61H
    3:        OR    BL,BL
    4:        JZ    CHANGE
    5:        MOV    DX,5A41H
    6: CHANGE:
    7:        LODSB
    8:        CMP    AL,DL
    9:        JB    CHANG1
   10:        CMP    AL,DH

上一页  [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做放大镜
    鼠绘美女及服装修画全过程