File tree Expand file tree Collapse file tree 2 files changed +18
-255
lines changed Expand file tree Collapse file tree 2 files changed +18
-255
lines changed Original file line number Diff line number Diff line change 1- .MODEL SMALL
2- .STACK 100H
3- .DATA
4- IS_NEG DB ?
5- FOR_PRINT DW ?
6- CR EQU 0DH
7- LF EQU 0AH
8- NEWLINE DB CR , LF , '$'
9- i dw ?
10- j dw ?
11- k dw ?
12- l dw ?
13- m dw ?
14- n dw ?
15- o dw ?
16- p dw ?
17- .CODE
18-
19- OUTPUT PROC
20-
21- MOV CX , 0FH
22- PUSH CX ; marker
23-
24- MOV IS_NEG , 0H
25- MOV AX , FOR_PRINT
26- TEST AX , 8000H
27- JE OUTPUT_LOOP
28-
29- MOV IS_NEG , 1H
30- MOV AX , 0FFFFH
31- SUB AX , FOR_PRINT
32- ADD AX , 1H
33- MOV FOR_PRINT , AX
34- OUTPUT_LOOP:
35-
36- ;MOV AH, 1
37- ;INT 21H
38-
39- MOV AX , FOR_PRINT
40- XOR DX , DX
41- MOV BX , 10D
42- DIV BX ; QUOTIENT : AX , REMAINDER : DX
43-
44- MOV FOR_PRINT , AX
45-
46- PUSH DX
47-
48- CMP AX , 0H
49- JNE OUTPUT_LOOP
50-
51- ;LEA DX, NEWLINE ; DX : USED IN IO and MUL,DIV
52- ;MOV AH, 9 ; AH,9 used for character string output
53- ;INT 21H;
54- MOV AL , IS_NEG
55- CMP AL , 1H
56- JNE OP_STACK_PRINT
57-
58- MOV AH , 2
59- MOV DX , '-' ; stored in DL for display
60- INT 21H
61-
62-
63- OP_STACK_PRINT:
64-
65- ;MOV AH, 1
66- ;INT 21H
67-
68- POP BX
69-
70- CMP BX , 0FH
71- JE EXIT_OUTPUT
72-
73-
74- MOV AH , 2
75- MOV DX , BX ; stored in DL for display
76- ADD DX , 30H
77- INT 21H
78-
79- JMP OP_STACK_PRINT
80- EXIT_OUTPUT:
81-
82- ;POP CX
83- LEA DX , NEWLINE
84- MOV AH , 9
85- INT 21H
86-
87- RET
88-
89- OUTPUT ENDP
90-
91- main PROC
92- MOV AX , @DATA
93- MOV DS , AX
94- PUSH BP
95- MOV BP , SP
96- SUB SP , 44
97- ; i=1;
98- MOV WORD PTR [ bp - 2 ], 1
99- MOV CX ,[ bp - 2 ]
100- MOV i , CX
101- ; printf(i);
102- MOV AX , i
103- MOV FOR_PRINT , AX
104- CALL OUTPUT
105- ; j=5+8;
106- MOV WORD PTR [ bp - 4 ], 5
107- MOV AX ,[ bp - 4 ]
108- MOV WORD PTR [ bp - 8 ], AX
109- MOV WORD PTR [ bp - 6 ], 8
110- MOV AX ,[ bp - 8 ]
111- ADD AX ,[ bp - 6 ]
112- MOV WORD PTR [ bp - 10 ], AX
113- MOV CX ,[ bp - 10 ]
114- MOV j , CX
115- ; printf(j);
116- MOV AX , j
117- MOV FOR_PRINT , AX
118- CALL OUTPUT
119- ; k=i+2*j;
120- MOV AX , i
121- MOV WORD PTR [ bp - 18 ], AX
122- MOV WORD PTR [ bp - 12 ], 2
123- MOV CX ,[ bp - 12 ]
124- MOV WORD PTR [ bp - 14 ], CX
125- MOV AX , CX
126- IMUL j
127- MOV WORD PTR [ bp - 16 ], AX
128- MOV AX ,[ bp - 18 ]
129- ADD AX ,[ bp - 16 ]
1301MOV WORD PTR [ bp - 20 ], AX
131- MOV CX ,[ bp - 20 ]
132- MOV k , CX
133- ; printf(k);
134- MOV AX , k
135- MOV FOR_PRINT , AX
136- CALL OUTPUT
137- ; l=k/3;
138- MOV CX , k
139- CWD
140- MOV WORD PTR [ bp - 24 ], CX
141- MOV WORD PTR [ bp - 22 ], 3
142- MOV CX ,[ bp - 24 ]
143- MOV AX , CX
144- IDIV WORD PTR [ bp - 22 ]
145- MOV WORD PTR [ bp - 26 ], AX
146- MOV CX ,[ bp - 26 ]
147- MOV l , CX
148- ; printf(l);
149- MOV AX , l
150- MOV FOR_PRINT , AX
151- CALL OUTPUT
152- ; m=k%9;
153- MOV CX , k
154- CWD
155- MOV WORD PTR [ bp - 30 ], CX
156- MOV WORD PTR [ bp - 28 ], 9
157- MOV CX ,[ bp - 30 ]
158- MOV AX , CX
159- IDIV WORD PTR [ bp - 28 ]
160- MOV WORD PTR [ bp - 32 ], DX
161- MOV CX ,[ bp - 32 ]
162- MOV m , CX
163- ; printf(m);
164- MOV AX , m
165- MOV FOR_PRINT , AX
166- CALL OUTPUT
167- ; n=m<=l;
168- MOV AX , m
169- CMP AX , l
170- jle L0
171- MOV WORD PTR [ bp - 34 ], 0
172- JMP L1
173- L0:
174- MOV WORD PTR [ bp - 34 ], 1
175- L1:
176- MOV CX ,[ bp - 34 ]
177- MOV n , CX
178- ; printf(n);
179- MOV AX , n
180- MOV FOR_PRINT , AX
181- CALL OUTPUT
182- ; o=i!=j;
183- MOV AX , i
184- CMP AX , j
185- jne L2
186- MOV WORD PTR [ bp - 36 ], 0
187- JMP L3
188- L2:
189- MOV WORD PTR [ bp - 36 ], 1
190- L3:
191- MOV CX ,[ bp - 36 ]
192- MOV o , CX
193- ; printf(o);
194- MOV AX , o
195- MOV FOR_PRINT , AX
196- CALL OUTPUT
197- ; p=n||o;
198- CMP n , 0
199- JNE L4
200- CMP o , 0
201- JNE L4
202- MOV WORD PTR [ bp - 38 ], 0
203- JMP L5
204- L4:
205- MOV WORD PTR [ bp - 38 ], 1
206- L5:
207- MOV CX ,[ bp - 38 ]
208- MOV p , CX
209- ; printf(p);
210- MOV AX , p
211- MOV FOR_PRINT , AX
212- CALL OUTPUT
213- ; p=n&&o;
214- CMP n , 0
215- JE L6
216- CMP o , 0
217- JE L6
218- MOV WORD PTR [ bp - 40 ], 1
219- JMP L7
220- L6:
221- MOV WORD PTR [ bp - 40 ], 0
222- L7:
223- MOV CX ,[ bp - 40 ]
224- MOV p , CX
225- ; printf(p);
226- MOV AX , p
227- MOV FOR_PRINT , AX
228- CALL OUTPUT
229- ; p++;
230- MOV AX , p
231- MOV WORD PTR [ bp - 42 ], AX
232- INC p
233- ; printf(p);
234- MOV AX , p
235- MOV FOR_PRINT , AX
236- CALL OUTPUT
237- ; k=-p;
238- NEG WORD PTR [ bp -]
239- MOV CX ,- p
240- MOV k , CX
241- ; printf(k);
242- MOV AX , k
243- MOV FOR_PRINT , AX
244- CALL OUTPUT
245- ; return 0;
246- MOV WORD PTR [ bp - 44 ], 0
247- MOV AX ,[ bp - 44 ]
248- JMP L_main
249- L_main:
250- ADD SP , 44
251- POP BP
252- ;DOS EXIT
253- MOV AH , 4ch
254- INT 21h
255- main ENDP
256- END MAIN
Original file line number Diff line number Diff line change 1+ from django .test import TestCase
2+ from . models import Code
3+
4+
5+ class ModelTesting (TestCase ):
6+
7+ def setUp (self ):
8+ self .code = Code ("" ,"" )
9+ line_v = ["MOV WORD PTR [bp-20],AX" ,"MOV AX,[bp-20]" ]
10+ self .code .optimizeCode (line_v )
11+
12+ with open ('opt_new.asm' , 'r' ) as file :
13+ data = file .read ().replace ('\n ' , '\n ' )
14+ self .code .opt_code = data
15+
16+ def test_post_model (self ):
17+ d = self .code
18+ self .assertEqual (self .code .opt_code , "MOV WORD PTR [bp-20],AX\n " )
You can’t perform that action at this time.
0 commit comments