当前位置: 网学 > 编程文档 > 汇编语言 > 正文

汇编语言:套装软件制作

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
用已知的技巧,来改进设计的程式呢?
  回路是利用计数器,反复进行相同的程序作业,这种程式,目的就是为了节省空间,相对地,时间上难免有所损失。
    因此,在设计回路时,必须先行考虑清楚: 空间的节省与时间的交换是否值得? 其次,则要充份掌握回路的特色,要用得恰到好处,不可掉以轻心。
    原则上,在回路中,指令要用得精简,流程要非常明确,尤其重要的是,应力求避免在回路中使用缓冲器,最好充份利用暂存器。如果时间效率极为重要,则不妨放弃回路方式。
    有一个显示程式,目的是要将 16*16点阵字形送到萤幕上。对象是Hercules 640*400的图形卡,计分四区交互传送,这是另一个「高科技」界的新鲜奇事,在IBM PC推出时,最高密度的图形态,只有 640X200点阵,那是迁就电视萤幕的扫描方式,先送单线的水平讯号,再送双线,故分两区。Hercules卡为了加高密度,应用Interlace 技术,又在单双水平扫描线中各加了一行,遂成了四区。
    Hercules很适宜中文的显示,如用 16X16字形,正好显示25行,每行40字,与英文完全兼容。若希望有一状态显示栏,则可用 15X15字形,留出24条线供做状态栏。
    遗憾的是在最需要中文的国内,却偏爱CGA,EGA 等密度不足的显示设备。不但售价偏高,功能也不足,弄得不伦不类。
    最理想的还是VGA 显示,计有 640X480之萤幕点阵,不仅空间大,在记忆体中,只有一区,应用非常灵活。
    下面,我们先介绍 Hercules 的显示方法,同时探讨回路的处理方式。
  1: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2: ;HERCULES 中文显示处理程式。      ;
  3: ;输入参数:SI=点阵字形,DI=萤幕位置。    ;
  4: ;     DS =CG,ES= 0B800H(萤幕段)。   ;
  5: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6: CDSP0:
  7:     MOV   CX,16    ;高16点
  8: CDSP1:
  9:     MOVSW      ;移至萤幕上
  10:     ADD   DI,1FFEH    ;加一区,每区=2000H
  11:     JNS   CDSP2    ;未超越区限,继续
  12:     ADD   DI,8050H    ;超越区限,换区加行
  13: CDSP2:
  14:     LOOP  CDSP1
  15:     RET
  程式到此结束,相当精简,技巧在第10至12条区限的检测方式。一般做法是在检查区限时,用:
     ADD   DI,1FFEH    ; 加区值
     CMP   DI,8000H    ; 最大区限值
     JB   CDSP2    ; 未超过
     SUB   DI,8000H    ; 减去区限
  如此则多了一条4字元的指令,加上4个时钟脉冲,做16次回路就损失64个时钟脉冲值。在全萤幕显示时,以1,000 个字来算,为数就不少了。
  当然,取消了回路速度还可以加快,其结果,则要增加130 个字元,时间则快了 272个时钟脉冲,是否值得,就要看实际需要而定了。
  另一个方法,要增加2个字元,但可快上36个时钟脉冲,其法在第11条上:
  11:     JS   CDSP3
  12:CDSP2:
  13:     LOOP  CDSP1
  14:     RET
  15:CDSP3:
  16:     ADD   DI,8050H
  17:     JMP   CDSP2
  再换一

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号