您的位置:首页 >> 编程开发 >> 汇编 >> 汇编教程 >> 正文
汇编教程 RSS
 

SHELL 排序测试

http://www.rdxx.com 05年04月30日 00:00 我要投稿

关键词: 排序 , 测试 , Shell
一、比较表:

第一章第一节中所提及的排序程式测试结果如下:
┌──────┬─────────┬────────┐
│ 项 目│ C │组 合 语 言 │
├──────┼─────────┼────────┤
│源程式长度 │ 1,363 Bytes│ 3,581 Bytes│
│执行程式长度│ 69,345 Bytes│ 803 Bytes│
编程时间 │ 20 小时 │ 80 小时 │
│8,000 笔需时│ 30 秒 │ 8 秒 │
│48,000笔需时│ 640KB中, 无法执行│ 70 秒 │
└──────┴─────────┴────────┘

组合语言在大量资料处理时,应用灵活,而C语言因受到空间限制,以目前之系统空间,无法执行。
测试时间: 1989年 9月12至18日。
参加人员: 张达权,段旭光,李朝辉。
使用机种: IBM PS/2-50,80286 CPU,8MHZ。
使用语言: C及组合语言。
因其他语言皆无法胜任,故仅选用此二者。
处理对象: 48,000个中文词组,分别取自12个资料档中。
每档有 4,000个词组。
每个词组有一至五个中文字。
每个中文字占两个字元内码。
全部资料占 316,421字元。
排序方式: 按仓颉字母顺位排列。
为了效率,采用SHELL 排序法。

二、组合语言之制作:

1: CG SEGMENT
2: ASSUME CS:CG,DS:CG,ES:CG
3: ORG 100H
4: START:
5: MOV AX,CS
6: MOV DS,AX
7: MOV SI,130 ; 指向输入缓冲区
8: MOV BL,[SI-2]
9: DEC BX
10: SUB BH,BH
11: MOV [BX][SI],BH
12: CLD
13: MOV DX,SI
14: MOV AX,3D00H
15: INT 21H ; 打开源档
16: JNC ZSTART
17: MOV DX,OFFSET ZSTR1 ; 若无此档则退出
18: MOV AH,9
19: INT 21H
20: INT 20H
21: ZSTART:
22: MOV BX,AX
23: SUB DX,DX
24: MOV CX,8000H
25: MOV BP,4D00H
26: MOV DS,BP
27: ZREAD:
28: MOV AH,3FH ; 读档
29: INT 21H
30: OR AX,AX
31: JZ ZREND
32: MOV AX,DS ; 未完,换段再读
33: ADD AX,800H
34: MOV DS,AX
35: JMP ZREAD
36: ZREND:
37: MOV AH,3EH ; 关档
38: INT 21H
39: MOV AX,2400H
40: MOV ES,AX
41: SUB DI,DI
42: SUB SI,SI
43: MOV DS,BP
44: SUB BP,BP
45: ZC1:
46: CALL ZCHGSEG
47: MOV CX,5 ; 将不等长换为等长
48: ZC3:
49: LODSW
50: CMP AL,0DH
51: JZ ZC4
52: STOSW
53: LOOP ZC3
54: INC SI
55: INC SI
56: JMP SHORT ZC5
57: ZC4:
58: MOV AX,2020H
59: REP STOSW
60: ZC5:
61: INC BP
62: LODSB
63: DEC SI
64: CMP AL,1AH
65: JNZ ZC1
66: STOSB
67: MOV CS:ZBW2,BP ; BP为资料计数
68: CALL ZSORT ; 排序
69: CALL ZDEL ; 删除相同者
70: CALL ZTR ; 换为不等长方式
71: MOV SI,DX
72: SUB CX,CX
73: PUSH CS
74: POP DS
75: MOV DX,OFFSET ZFCB ; 将结果存档
76: MOV AH,3CH
77: INT 21H
78: MOV BX,AX
79: MOV AX,2400H
80: MOV DS,AX
81: SUB DX,DX
82: OR SI,SI
83: JZ ZC7
84: MOV CX,8000H
85: ZC6:
86: MOV AH,40H
87: INT 21H
88: MOV AX,DS
89: ADD AX,800H
90: MOV DS,AX
91: DEC SI
92: JNZ ZC6
93: ZC7:
94: MOV CX,DI
95: MOV AH,40H
96: INT 21H
97: MOV AH,3EH
98: INT 21H
99: INT 20H
100: ZSORT: ; 排序子程式
101: SHR BP,1
102: ZS0:
103: PUSH BP
104: MOV CS:ZBW1,BP
105: MOV AX,CS:ZBW2
106: SUB AX,BP
107: MOV DX,BP
108: MOV BP,AX
109: MOV DI,2400H
110: MOV DS,DI
111: SUB SI,SI
112: CALL ZFINDES
113: ADD BX,DI
114: MOV ES,BX
115: MOV DI,AX
116: SUB DX,DX
117: ZS1:
118: CALL ZCOMPS
119: JBE ZS4
120: CALL ZXCHG
121: PUSH DS
122: PUSH ES
123: PUSH SI
124: PUSH DI
125: PUSH DX
126: ZS2:
127: MOV DI,SI
128: MOV AX,DS
129: MOV ES,AX
130: SUB DX,CS:ZBW1
131: JC ZS3
132: CALL ZFINDES
133: MOV SI,AX
134: ADD BX,2400H
135: MOV DS,BX
136: CALL ZCOMPS

9 7 3 1 2 3 4 8 :


 
 
标签: 排序 , 测试 , Shell 打印本文
 
 
  相关资讯
RSS
 
无相关新闻
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站