Skip to content

Commit 15d9a7a

Browse files
committed
code restructured
1 parent 7287556 commit 15d9a7a

File tree

7 files changed

+594
-585
lines changed

7 files changed

+594
-585
lines changed

code.asm

Lines changed: 94 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ FOR_PRINT DW ?
77
CR EQU 0DH
88
LF EQU 0AH
99
NEWLINE DB CR, LF , '$'
10+
i dw ?
11+
j dw ?
12+
k dw ?
13+
l dw ?
14+
m dw ?
15+
n dw ?
16+
o dw ?
17+
p dw ?
1018

1119
.CODE
1220

@@ -91,193 +99,192 @@ MOV AX, @DATA
9199
MOV DS, AX
92100
PUSH BP
93101
MOV BP,SP
94-
SUB SP,60
95-
102+
SUB SP,44
96103
; i=1;
97-
MOV WORD PTR [bp-18],1
98-
MOV CX,[bp-18]
99-
MOV WORD PTR [bp-2],CX
104+
MOV WORD PTR [bp-2],1
105+
MOV CX,[bp-2]
106+
MOV i,CX
100107

101108
; printf(i);
102-
MOV AX,[bp-2]
109+
MOV AX,i
103110
MOV FOR_PRINT,AX
104111
CALL OUTPUT
105112
; j=5+8;
106-
MOV WORD PTR [bp-20],5
107-
MOV AX,[bp-20]
108-
MOV WORD PTR [bp-24],AX
109-
MOV WORD PTR [bp-22],8
110-
MOV AX,[bp-24]
111-
ADD AX,[bp-22]
112-
MOV WORD PTR [bp-26],AX
113-
MOV CX,[bp-26]
114-
MOV WORD PTR [bp-4],CX
113+
MOV WORD PTR [bp-4],5
114+
MOV AX,[bp-4]
115+
MOV WORD PTR [bp-8],AX
116+
MOV WORD PTR [bp-6],8
117+
MOV AX,[bp-8]
118+
ADD AX,[bp-6]
119+
MOV WORD PTR [bp-10],AX
120+
MOV CX,[bp-10]
121+
MOV j,CX
115122

116123
; printf(j);
117-
MOV AX,[bp-4]
124+
MOV AX,j
118125
MOV FOR_PRINT,AX
119126
CALL OUTPUT
120127
; k=i+2*j;
121128

122-
MOV AX,[bp-2]
123-
MOV WORD PTR [bp-34],AX
124-
MOV WORD PTR [bp-28],2
125-
MOV CX,[bp-28]
126-
MOV WORD PTR [bp-30],CX
129+
MOV AX,i
130+
MOV WORD PTR [bp-18],AX
131+
MOV WORD PTR [bp-12],2
132+
MOV CX,[bp-12]
133+
MOV WORD PTR [bp-14],CX
127134

128-
MOV CX,[bp-30]
135+
MOV CX,[bp-14]
129136
MOV AX,CX
130-
IMUL WORD PTR [bp-4]
131-
MOV WORD PTR [bp-32],AX
132-
MOV AX,[bp-34]
133-
ADD AX,[bp-32]
134-
MOV WORD PTR [bp-36],AX
135-
MOV CX,[bp-36]
136-
MOV WORD PTR [bp-6],CX
137+
IMUL j
138+
MOV WORD PTR [bp-16],AX
139+
MOV AX,[bp-18]
140+
ADD AX,[bp-16]
141+
MOV WORD PTR [bp-20],AX
142+
MOV CX,[bp-20]
143+
MOV k,CX
137144

138145
; printf(k);
139-
MOV AX,[bp-6]
146+
MOV AX,k
140147
MOV FOR_PRINT,AX
141148
CALL OUTPUT
142149
; l=k/3;
143150

144-
MOV CX,[bp-6]
151+
MOV CX,k
145152
CWD
146-
MOV WORD PTR [bp-40],CX
147-
MOV WORD PTR [bp-38],3
148-
MOV CX,[bp-40]
153+
MOV WORD PTR [bp-24],CX
154+
MOV WORD PTR [bp-22],3
155+
MOV CX,[bp-24]
149156
MOV AX,CX
150-
IDIV WORD PTR [bp-38]
151-
MOV WORD PTR [bp-42],AX
152-
MOV CX,[bp-42]
153-
MOV WORD PTR [bp-8],CX
157+
IDIV WORD PTR [bp-22]
158+
MOV WORD PTR [bp-26],AX
159+
MOV CX,[bp-26]
160+
MOV l,CX
154161

155162
; printf(l);
156-
MOV AX,[bp-8]
163+
MOV AX,l
157164
MOV FOR_PRINT,AX
158165
CALL OUTPUT
159166
; m=k%9;
160167

161-
MOV CX,[bp-6]
168+
MOV CX,k
162169
CWD
163-
MOV WORD PTR [bp-46],CX
164-
MOV WORD PTR [bp-44],9
165-
MOV CX,[bp-46]
170+
MOV WORD PTR [bp-30],CX
171+
MOV WORD PTR [bp-28],9
172+
MOV CX,[bp-30]
166173
MOV AX,CX
167-
IDIV WORD PTR [bp-44]
168-
MOV WORD PTR [bp-48],DX
169-
MOV CX,[bp-48]
170-
MOV WORD PTR [bp-10],CX
174+
IDIV WORD PTR [bp-28]
175+
MOV WORD PTR [bp-32],DX
176+
MOV CX,[bp-32]
177+
MOV m,CX
171178

172179
; printf(m);
173-
MOV AX,[bp-10]
180+
MOV AX,m
174181
MOV FOR_PRINT,AX
175182
CALL OUTPUT
176183
; n=m<=l;
177184

178185

179-
MOV AX,[bp-10]
180-
CMP AX,[bp-8]
186+
MOV AX,m
187+
CMP AX,l
181188
jle L0
182-
MOV WORD PTR [bp-50],0
189+
MOV WORD PTR [bp-34],0
183190
JMP L1
184191
L0:
185-
MOV WORD PTR [bp-50],1
192+
MOV WORD PTR [bp-34],1
186193
L1:
187194

188-
MOV CX,[bp-50]
189-
MOV WORD PTR [bp-12],CX
195+
MOV CX,[bp-34]
196+
MOV n,CX
190197

191198
; printf(n);
192-
MOV AX,[bp-12]
199+
MOV AX,n
193200
MOV FOR_PRINT,AX
194201
CALL OUTPUT
195202
; o=i!=j;
196203

197204

198-
MOV AX,[bp-2]
199-
CMP AX,[bp-4]
205+
MOV AX,i
206+
CMP AX,j
200207
jne L2
201-
MOV WORD PTR [bp-52],0
208+
MOV WORD PTR [bp-36],0
202209
JMP L3
203210
L2:
204-
MOV WORD PTR [bp-52],1
211+
MOV WORD PTR [bp-36],1
205212
L3:
206213

207-
MOV CX,[bp-52]
208-
MOV WORD PTR [bp-14],CX
214+
MOV CX,[bp-36]
215+
MOV o,CX
209216

210217
; printf(o);
211-
MOV AX,[bp-14]
218+
MOV AX,o
212219
MOV FOR_PRINT,AX
213220
CALL OUTPUT
214221
; p=n||o;
215222

216223

217-
CMP [bp-12],0
224+
CMP n,0
218225
JNE L4
219-
CMP [bp-14],0
226+
CMP o,0
220227
JNE L4
221-
MOV WORD PTR [bp-54],0
228+
MOV WORD PTR [bp-38],0
222229
JMP L5
223230
L4:
224-
MOV WORD PTR [bp-54],1
231+
MOV WORD PTR [bp-38],1
225232
L5:
226233

227-
MOV CX,[bp-54]
228-
MOV WORD PTR [bp-16],CX
234+
MOV CX,[bp-38]
235+
MOV p,CX
229236

230237
; printf(p);
231-
MOV AX,[bp-16]
238+
MOV AX,p
232239
MOV FOR_PRINT,AX
233240
CALL OUTPUT
234241
; p=n&&o;
235242

236243

237-
CMP [bp-12],0
244+
CMP n,0
238245
JE L6
239-
CMP [bp-14],0
246+
CMP o,0
240247
JE L6
241-
MOV WORD PTR [bp-56],1
248+
MOV WORD PTR [bp-40],1
242249
JMP L7
243250
L6:
244-
MOV WORD PTR [bp-56],0
251+
MOV WORD PTR [bp-40],0
245252
L7:
246253

247-
MOV CX,[bp-56]
248-
MOV WORD PTR [bp-16],CX
254+
MOV CX,[bp-40]
255+
MOV p,CX
249256

250257
; printf(p);
251-
MOV AX,[bp-16]
258+
MOV AX,p
252259
MOV FOR_PRINT,AX
253260
CALL OUTPUT
254261
; p++;
255262

256-
MOV AX,[bp-16]
257-
MOV WORD PTR [bp-58],AX
258-
INC WORD PTR [bp-16]
263+
MOV AX,p
264+
MOV WORD PTR [bp-42],AX
265+
INC p
259266

260267
; printf(p);
261-
MOV AX,[bp-16]
268+
MOV AX,p
262269
MOV FOR_PRINT,AX
263270
CALL OUTPUT
264271
; k=-p;
265272

266-
NEG WORD PTR [bp-16]
267-
MOV CX,[bp-16]
268-
MOV WORD PTR [bp-6],CX
273+
NEG WORD PTR [bp-]
274+
MOV CX,-p
275+
MOV k,CX
269276

270277
; printf(k);
271-
MOV AX,[bp-6]
278+
MOV AX,k
272279
MOV FOR_PRINT,AX
273280
CALL OUTPUT
274281
; return 0;
275-
MOV WORD PTR [bp-60],0
276-
MOV AX,[bp-60]
282+
MOV WORD PTR [bp-44],0
283+
MOV AX,[bp-44]
277284
JMP L_main
278285

279286
L_main:
280-
ADD SP,60
287+
ADD SP,44
281288
POP BP
282289

283290
;DOS EXIT

input.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
int main(){
1+
int i,j,k,l,m,n,o,p;
2+
int main(){
23

3-
int i,j,k,l,m,n,o,p;
4+
45

56
i = 1;
67
println(i);

0 commit comments

Comments
 (0)