WEB开发网
开发学院软件开发汇编语言 汇编语言套装软件制作 阅读

汇编语言套装软件制作

 2007-04-25 09:30:33 来源:WEB开发网   
核心提示:5: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 6: CDSP0: 7: MOV CX,16 ;高16点 8: CDSP1: 9: MOVSW ;移至萤幕上 10: ADD DI,1FFEH ;加一区,每区=2000H 11: JNS CDSP2 ;未超越区限,继续

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
再换一个方法,如果先使 BX 为1FFEH,DX为8050H,则在原程式中,将第10条及12条分别改为:
10: ADD DI,BX
12: ADD DI,DX
这一来,时钟脉冲快了2个,16次则快更多,如果再加上取消回路,其意义更大。空间原增加 130字元,现仅94字元,时间则省下 304个时钟脉冲。如果全萤幕显示了1,000 个字,在8MHZ频率下,将会加快 1/25 秒的速度。
在回路中,如果讲求时间效益,应极力避免使用PUSH及POP ,因PUSH需15个时钟脉冲,而POP 则要12个,两者相加是27个时钟脉冲,非常不值得。
解决方法之一是:设法将欲保留之值贮存在没有用到的暂存器中;再若是固定的常数,也不妨在每次要用时重新置入,祇不过是4个时钟而已。最麻烦是变数值,除了在设计模组之前,妥当地安排外,别无良策。

上一页  1 2 3 

Tags:汇编语言 套装 软件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接