nbsp;;先设为最小值,备用
4: COMPAR:
5: MOV AH,AL ;设AH为低位值
6: COMPAR1:
7: LODSB ;取资料
8: CMP AL,CL ;比是否终止指令?
9: JAE COMRET ;完成
10: CMP AL,AH ;比大、小
11: JAE COMPAR ;高位大,再查
12: MOV DI,SI ;暂时保存
13: COMPAR2:
14: MOV [SI-2],AX ;交换AH,AL,排序
15: DEC SI ;向低位再查
16: MOV AH,[SI-2]
17: LODSB ;取排序资料
18: CMP AL,AH ;比是否该排
19: JB COMPAR2 ;是
20: MOV SI,DI ;否,将原位址还原
21: JMP COMPAR0 ;从头再做
22: COMRET:
23: RET
总而言之,程式的变化无穷无尽,尤其是用组合语言制作程式,更是灵活精妙。就像下围棋一般,往往一两个指令就足以将整个局势扭转过来。
程式的效率经常决定在回路上,读者千万不要以为一两个时钟脉冲算不了什么。要知道,汪洋大海,也是由一点一滴的水珠累积而成的。
这段程式还有不少值得深思的,读者们不妨自行研究吧!想得多了,自然会有生花妙笔。
真要作大量的资料排序,还有更有效的方法,也是应用模式分析的原则,先找出资料的「型」。
假如以同样性质的资料为例,为了避免资料一一查找,浪费时间。我们不妨研究一下,