?? counter.lst
字號:
Turbo Assembler Version 4.1 08/05/25 15:11:43 Page 1
F:\MICROC~1\計算器\counter.ASM
1 ;顯示字符的宏定義
2 DISP MACRO CHAR
3 PUSH AX
4 PUSH DX ;保存DX和AX
5 MOV DL,CHAR ;顯示字符
6 MOV AH,2
7 INT 21H
8 POP DX
9 POP AX
10 ENDM
11 ;
12
13 ;
14 0000 DSEG SEGMENT
15
16 0000 0A*(??) DATA DB 10 DUP (?)
17 000A 05*(??) RESULT DB 5 DUP (?)
18 000F 54 68 65 20 73 79 6D+ TABLE1 DB 'The symbol is wrong!',0AH,0DH,'$'
19 62 6F 6C 20 69 73 20+
20 77 72 6F 6E 67 21 0A+
21 0D 24
22 0026 54 68 65 20 72 65 73+ TABLE2 DB 'The result is:',0AH,0DH,'$'
23 75 6C 74 20 69 73 3A+
24 0A 0D 24
25 0037 61 6E 64 20 74 68 65+ TABLE3 DB 'and the arithmetical compliment is:','$'
26 20 61 72 69 74 68 6D+
27 65 74 69 63 61 6C 20+
28 63 6F 6D 70 6C 69 6D+
29 65 6E 74 20 69 73 3A+
30 24
31 005B 50 6C 65 61 73 65 20+ TABLE4 DB 'Please import the expressions:',0AH,0DH,'$'
32 69 6D 70 6F 72 74 20+
33 74 68 65 20 65 78 70+
34 72 65 73 73 69 6F 6E+
35 73 3A 0A 0D 24
36 007C 45 58 50 4C 41 49 4E+ TABLE5 DB 'EXPLAIN:Please the mun less than 255.After you improt the first mun, +
37 3A 50 6C 65 61 73 65+ please import space.afte the second mun,import enter',0AH,0DH,'$'
38 20 74 68 65 20 6D 75+
39 6E 20 6C 65 73 73 20+
40 74 68 61 6E 20 32 35+
41 35 2E 41 66 74 65 72+
42 20 79 6F 75 20 69 6D+
43 70 72 6F 74 20 74 68+
44 65 20 66 69 72 73 74+
45 20 6D 75 6E 2C 70 6C+
46 65 61 73 65 20 69 6D+
47 70 6F 72 74 20 73 70+
48 61 63 65 2E 61 66 74+
49 65 20 74 68 65 20 73+
50 65 63 6F 6E 64 20 6D+
51 75 6E 2C 69 6D 70 6F+
52 72 74 20 65 6E 74 65+
53 72 0A 0D 24
54
55 00F7 DSEG ENDS
56 0000 SSEG SEGMENT STACK 'STACK'
57 0000 64*(??) DB 100 DUP (?)
Turbo Assembler Version 4.1 08/05/25 15:11:43 Page 2
F:\MICROC~1\計算器\counter.ASM
58 0064 SSEG ENDS
59 ;
60 0000 CSEG SEGMENT
61 ASSUME CS:CSEG,DS:DSEG,SS:SSEG
62 0000 START:
63 0000 B8 0000s MOV AX,DSEG ;初始化數據段
64 0003 8E D8 MOV DS,AX
65 0005 B8 0000s MOV AX,SSEG
66 0008 8E D0 MOV SS,AX
67 000A BA 007Cr LEA DX,TABLE5
68 000D B4 09 MOV AH,9
69 000F CD 21 INT 21H
70 0011 B4 01 BEGIN: MOV AH,1
71 0013 CD 21 INT 21H
72 0015 3C 0D CMP AL,0DH
73 0017 74 0A JZ L0
74 0019 3C 1B CMP AL,1BH
75 001B 74 02 JZ LLL
76 001D EB F2 JMP BEGIN
77 001F LLL:
78 001F B4 4C MOV AH,4CH
79 0021 CD 21 INT 21H
80
81 0023 L0:
82 0023 BA 005Br LEA DX,TABLE4
83 0026 B4 09 MOV AH,9
84 0028 CD 21 INT 21H
85 002A BE 0000r MOV SI,OFFSET DATA
86 002D B1 00 MOV CL,0
87 ;以下為輸入數據程序段
88 002F L1:
89 002F B4 01 MOV AH,1
90 0031 CD 21 INT 21H
91 0033 3C 20 CMP AL,20H
92 0035 74 07 JZ L2 ;yes
93 0037 88 04 MOV [SI],AL
94 0039 46 INC SI
95 003A FE C1 INC CL
96 003C EB F1 JMP L1
97 003E L2:
98 003E 80 F9 02 CMP CL,2
99 0041 74 10 JZ L3
100 0043 80 F9 03 CMP CL,3
101 0046 74 23 JZ L4
102 0048 A0 0000r MOV AL,DATA ; ONE BIT
103 004B 2C 30 SUB AL,30H
104 004D A2 0006r MOV DATA+6,AL
105 0050 EB 3E 90 JMP L5
106 ;TWO BIT
107 0053 L3:
108 0053 A0 0000r MOV AL,DATA
109 0056 2C 30 SUB AL,30H
110 0058 8A 3E 0001r MOV BH,DATA+1
111 005C 80 EF 30 SUB BH,30H
112 005F B3 0A MOV BL,10
113 0061 F6 E3 MUL BL
114 0063 02 C7 ADD AL,BH
Turbo Assembler Version 4.1 08/05/25 15:11:43 Page 3
F:\MICROC~1\計算器\counter.ASM
115 0065 A2 0006r MOV DATA+6,AL
116 0068 EB 26 90 JMP L5
117 ; THREE BIT
118 006B L4:
119 006B A0 0001r MOV AL,DATA+1
120 006E 2C 30 SUB AL,30H
121 0070 8A 3E 0002r MOV BH,DATA+2
122 0074 80 EF 30 SUB BH,30H
123 0077 B3 0A MOV BL,10
124 0079 F6 E3 MUL BL
125 007B 02 C7 ADD AL,BH
126 007D 8A F8 MOV BH,AL
127 007F A0 0000r MOV AL,DATA
128 0082 2C 30 SUB AL,30H
129 0084 B3 64 MOV BL,100
130 0086 F6 E3 MUL BL
131 0088 02 C7 ADD AL,BH
132 008A A2 0006r MOV DATA+6,AL
133 008D EB 01 90 JMP L5
134 ;輸入運算符號
135 0090 L5:
136 0090 B4 01 MOV AH,1
137 0092 CD 21 INT 21H
138 0094 A2 0007r MOV DATA+7,AL
139 DISP 20H
1 140 0097 50 PUSH AX
1 141 0098 52 PUSH DX ;保存DX和AX
1 142 0099 B2 20 MOV DL,20H ;顯示字符
1 143 009B B4 02 MOV AH,2
1 144 009D CD 21 INT 21H
1 145 009F 5A POP DX
1 146 00A0 58 POP AX
147 00A1 BE 0000r MOV SI,OFFSET DATA
148 00A4 B1 00 MOV CL,0
149 ;
150 00A6 L6:
151 00A6 B4 01 MOV AH,1
152 00A8 CD 21 INT 21H
153 00AA 3C 0D CMP AL,0DH
154 00AC 74 07 JZ L7 ;yes
155 00AE 88 04 MOV [SI],AL
156 00B0 46 INC SI
157 00B1 FE C1 INC CL
158 00B3 EB F1 JMP L6
159 00B5 L7:
160 00B5 80 F9 02 CMP CL,2
161 00B8 74 10 JZ L8
162 00BA 80 F9 03 CMP CL,3
163 00BD 74 23 JZ L9
164 00BF A0 0000r MOV AL,DATA ; ONE BIT
165 00C2 2C 30 SUB AL,30H
166 00C4 A2 0008r MOV DATA+8,AL
167 00C7 EB 3E 90 JMP M1
168 ;TWO BIT
169 00CA L8:
170 00CA A0 0000r MOV AL,DATA
171 00CD 2C 30 SUB AL,30H
Turbo Assembler Version 4.1 08/05/25 15:11:43 Page 4
F:\MICROC~1\計算器\counter.ASM
172 00CF 8A 3E 0001r MOV BH,DATA+1
173 00D3 80 EF 30 SUB BH,30H
174 00D6 B3 0A MOV BL,10
175 00D8 F6 E3 MUL BL
176 00DA 02 C7 ADD AL,BH
177 00DC A2 0008r MOV DATA+8,AL
178 00DF EB 26 90 JMP M1
179 ; THREE BIT
180 00E2 L9:
181 00E2 A0 0001r MOV AL,DATA+1
182 00E5 2C 30 SUB AL,30H
183 00E7 8A 3E 0002r MOV BH,DATA+2
184 00EB 80 EF 30 SUB BH,30H
185 00EE B3 0A MOV BL,10
186 00F0 F6 E3 MUL BL
187 00F2 02 C7 ADD AL,BH
188 00F4 8A F8 MOV BH,AL
189 00F6 A0 0000r MOV AL,DATA
190 00F9 2C 30 SUB AL,30H
191 00FB B3 64 MOV BL,100
192 00FD F6 E3 MUL BL
193 00FF 02 C7 ADD AL,BH
194 0101 A2 0008r MOV DATA+8,AL
195 0104 EB 01 90 JMP M1
196
197 ; 以下為計算過程
198 0107 M1:
199 0107 B2 0A MOV DL,0AH
200 0109 B4 02 MOV AH,2
201 010B CD 21 INT 21H
202 010D B2 0D MOV DL,0DH
203 010F B4 02 MOV AH,2
204 0111 CD 21 INT 21H
205 0113 BA 0026r LEA DX,TABLE2
206 0116 B4 09 MOV AH,9
207 0118 CD 21 INT 21H
208 011A M2:
209 011A A0 0007r MOV AL,DATA+7
210 011D 3C 2B CMP AL,2BH
211 011F 74 20 JE M4
212 0121 3C 2D CMP AL,2DH
213 0123 74 33 JE M5
214 0125 3C 2A CMP AL,2AH
215 0127 74 43 JE M6
216 0129 3C 2F CMP AL,2FH
217 012B 74 52 JE M7
218 012D B4 02 MOV AH,2
219 012F B0 0A MOV AL,0AH
220 0131 CD 21 INT 21H
221 0133 B4 02 MOV AH,2
222 0135 CD 15 INT 21
223 0137 BA 000Fr LEA DX,TABLE1
224 013A B4 09 MOV AH,9
225 013C CD 21 INT 21H
226 013E E9 FEBF JMP START
227 0141 B4 00 M4: MOV AH,0
228 0143 A0 0006r MOV AL,DATA+6
Turbo Assembler Version 4.1 08/05/25 15:11:43 Page 5
F:\MICROC~1\計算器\counter.ASM
229 0146 B7 00 MOV BH,0
230 0148 8A 1E 0008r MOV BL,DATA+8
231 014C 03 C3 ADD AX,BX
232 014E 88 26 000Br MOV RESULT+1,AH
233 0152 A2 000Ar MOV RESULT,AL
234 0155 EB 45 90 JMP M8
235 0158 M5:
236 0158 A0 0006r MOV AL,DATA+6
237 015B 8A 1E 0008r MOV BL,DATA+8
238 015F 2A C3 SUB AL,BL
239 0161 C6 06 000Br 00 MOV RESULT+1,0
240 0166 A2 000Ar MOV RESULT,AL
241 0169 EB 31 90 JMP M8
242 016C M6:
243 016C A0 0006r MOV AL,DATA+6
244 016F 8A 1E 0008r MOV BL,DATA+8
245 0173 F6 E3 MUL BL
246 0175 A2 000Ar MOV RESULT,AL
247 0178 88 26 000Br MOV RESULT+1,AH
248 017C EB 1E 90 JMP M8
249 017F B4 00 M7: MOV AH,0
250 0181 A0 0006r MOV AL,DATA+6
251 0184 8A 1E 0008r MOV BL,DATA+8
252 0188 F6 F3 DIV BL
253 018A C6 06 000Br 00 MOV RESULT+1,0
254 018F A2 000Ar MOV RESULT,AL
255 0192 88 26 000Cr MOV RESULT+2,AH
256 0196 EB 04 90 JMP M8
257 0199 E9 FE75 LL: JMP BEGIN
258 ;以下為顯示程序
259 019C M8:
260 019C A0 000Ar MOV AL,RESULT
261 019F 8A 26 000Br MOV AH,RESULT+1
262 ;FIVE BITS
263 01A3 3D 2710 CMP AX,2710H
264 01A6 72 5B JB M13
265 01A8 BA 0000 MOV DX,0
266 01AB BB 2710 MOV BX,2710H
267 01AE F7 F3 DIV BX
268 01B0 8B CA MOV CX,DX
269 01B2 D4 0A AAM
270 01B4 04 30 ADD AL,30H
271 DISP AL
1 272 01B6 50 PUSH AX
1 273 01B7 52 PUSH DX ;保存DX和AX
1 274 01B8 8A D0 MOV DL,AL ;顯示字符
1 275 01BA B4 02 MOV AH,2
1 276 01BC CD 21 INT 21H
1 277 01BE 5A POP DX
1 278 01BF 58 POP AX
279 01C0 8B C1 MOV AX,CX
280 01C2 B3 64 MOV BL,100
281 01C4 F6 F3 DIV BL
282 01C6 8A CC MOV CL,AH
283 01C8 B4 00 MOV AH,0
284 01CA D4 0A AAM
285 01CC 05 3030 ADD AX,3030H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -