通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
汇编语言---套装软件制作(2)
责任编辑:admin   更新日期:2005-8-6
   NEXT1
  104:        CALL    MOVDATA     ;SET BUFFERS
  105:        CALL    SETDLT        ;SET INCREMENT
  106: NXT01:
  107:        CALL    DOTUP
  108:        LOOP    NXT01
  109:        CALL    XORDOT        ;SET NEW DOT
  110:        CALL    XYDISP        ;DISP NEW XXX,YYY
  111:        JMP    PP1
  112: NEXT1:
  113:        CMP    AX,5000H    ;↓键
  114:        JNE    NEXT2
  115:        CALL    MOVDATA     ;SET BUFFERS
  116:        CALL    SETDLT        ;SET INCREMENT
  117: NXT02:
  118:        CALL    DOTDOWN
  119:        LOOP    NXT02
  120:        CALL    XORDOT        ;SET NEW DOT
  121:        CALL    XYDISP        ;DISP NEW XXX,YYY
  122:        JMP    PP1
  123: NEXT2:
  124:        CMP    AX,4B00H    ;←键
  125:        JNE    NEXT3
  …
    这段程式总共要检查八次,才能确定是否有游标移动以及哪个游标在移动。然后,还要一一检查其他变化,共有十八种有效码。我实在佩服这种程式师,不但有无比的耐性,还有非凡的想像力,居然能把一段极为简单平凡的程式,写得这样的精彩动人!
    如果是我,我会写得毫无趣味:
  100: PP1:    SUB    AH,AH
  101:        INT    16H
  102:        OR    AL,AL
  103:        JNZ    PP1        ;AL 非0无效
  104:        MOV    BH,AL
  105:        MOV    BL,AH
  106:        SUB    BL,47H        ;最小之字标键
  107:        JLE    PP1        ;非处理范围
  108:        SHL    BX,1
  109:        CALL    FUNC[BX]
  110:        JMP    PP1
    这是主流程,程式短,速度快,维护容易,一眼看过去,有什么错误立刻分明。
 …
 1000: FUNC    DW    NEXT02        ;↖
 1001:        DW    NEXT0        ;↑
 1002:        DW    NEXT04        ;↗
 1003:        DW    PPRET        ;无效
 1004:        DW    NEXT2        ;←
 1005:        DW    PPRET        ;无效
 1006:        DW    NEXT4        ;→
 1007:        DW    PPRET       ;无效
 1008:        DW    NEXT12        ;↙
 1009:        DW    NEXT1        ;↓
 1010:        DW    NEXT14        ;↘
 …
    因为这是子程式,加一段、减一段容易非常。
    即使是子程式,也有很大的考究,就以前段来说,在 104至110 之间,就值得三思。
  104:        CALL    MOVDATA     ;SET BUFFERS
  105:        CALL    SETDLT        ;SET INCREMENT
  106: NXT01:
  107:        CALL    DOTUP
  108:        LOOP    NXT01
  109:        CALL    XORDOT        ;SET NEW DOT
  110:        CALL    XYDISP        ;DISP NEW XXX,YYY
    首先,104 和105 会重复多次,109 及110 亦然,为什么不合并为一呢?这也是很常见的程式合并手法,两次调用合为一次,速度及空间都较为经济。

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

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