Skip to content

Commit d2432c5

Browse files
committed
Programa de asm insertadox2
1 parent 2f57cc5 commit d2432c5

File tree

2 files changed

+304
-0
lines changed

2 files changed

+304
-0
lines changed

DATAPATH/Subneteo.asm

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
SW $zero, $zero, 5#Inicializando broad
2+
SW $zero, $zero, 6
3+
SW $zero, $zero, 7
4+
SW $zero, $zero, 8
5+
SW $zero, $zero, 9#min
6+
SW $zero, $zero, 10
7+
SW $zero, $zero, 11
8+
SW $zero, $zero, 12
9+
ADDI $s0, $zero, 255#Incializo 25para utilizarlo en seguida
10+
ADDI $t0, $zero, 0#inicializo i en t0
11+
SW $zero, $zero, 13#max
12+
SW $zero, $zero, 14
13+
SW $zero, $zero, 15
14+
SW $zero, $zero, 16
15+
SW $s0, $zero, 17#Mask255
16+
SW $s0, $zero, 18
17+
SW $s0, $zero, 19
18+
SW $s0, $zero, 20
19+
LW $t1, $zero, 1#Traigo el arreglo OCT a registros
20+
LW $t2, $zero, 2
21+
LW $t3, $zero, 3
22+
LW $t4, $zero, 4
23+
NOP
24+
NOP
25+
NOP
26+
NOP
27+
SLTI $t8, $t1, 255#si 255 > $t1 sera igual a 1
28+
NOP
29+
NOP
30+
NOP
31+
BEQ $t8, $at, 4
32+
NOP
33+
NOP
34+
NOP
35+
ADDI $t1, $zero, 254
36+
SLTI $t8, $t1, 1#si 1 > $t1 sera igual a 1
37+
NOP
38+
NOP
39+
NOP
40+
BNE $t8, $at, 4
41+
NOP
42+
NOP
43+
NOP
44+
ADDI $t1, $zero, 1
45+
NOP
46+
SLTI $t8, $t2, 255#si 255 > $t2 sera igual a 1
47+
NOP
48+
NOP
49+
NOP
50+
BEQ $t8, $at, 4
51+
NOP
52+
NOP
53+
NOP
54+
ADDI $t2, $zero, 254
55+
SLTI $t8, $t2, 1#si 1 > $t2 sera igual a 1
56+
NOP
57+
NOP
58+
NOP
59+
BNE $t8, $at, 4
60+
NOP
61+
NOP
62+
NOP
63+
ADDI $t2, $zero, 1
64+
NOP
65+
SLTI $t8, $t3, 255#si 255 > $t3 sera igual a 1
66+
NOP
67+
NOP
68+
NOP
69+
BEQ $t8, $at, 4
70+
NOP
71+
NOP
72+
NOP
73+
ADDI $t3, $zero, 254
74+
SLTI $t8, $t3, 1#si 1 > $t3 sera igual a 1
75+
NOP
76+
NOP
77+
NOP
78+
BNE $t8, $at, 4
79+
NOP
80+
NOP
81+
NOP
82+
ADDI $t3, $zero, 1
83+
NOP
84+
SLTI $t8, $t4, 255#si 255 > $t4 sera igual a 1
85+
NOP
86+
NOP
87+
NOP
88+
BEQ $t8, $at, 4
89+
NOP
90+
NOP
91+
NOP
92+
ADDI $t4, $zero, 254
93+
SLTI $t8, $t4, 1#si 1 > $t4 sera igual a 1
94+
NOP
95+
NOP
96+
NOP
97+
BNE $t8, $at, 4
98+
NOP
99+
NOP
100+
NOP
101+
ADDI $t4, $zero, 1
102+
NOP
103+
SUB $t9, $t9, $t9#Hago el registro t9=0
104+
LW $gp, $zero, 0#Obtengo la mascara de red de la MD
105+
NOP
106+
NOP
107+
NOP
108+
ADDI $t9, $zero, 1#Inicializo Res
109+
SLTI $t8, $gp, 30 #si 30 > mascara
110+
ADDI $s7, $s7, 1#Crear el 24 para comparar en el futuro
111+
NOP
112+
NOP
113+
NOP
114+
BEQ $t8, $at, 4
115+
NOP
116+
NOP
117+
NOP
118+
J 0x302#termina el programa
119+
NOP
120+
NOP
121+
NOP
122+
SLT $t8, $s7, $gp #si mascara> 24
123+
NOP
124+
NOP
125+
NOP
126+
BEQ $t8, $at, 4
127+
NOP
128+
NOP
129+
NOP
130+
J 0x302#termina el programa
131+
NOP
132+
NOP
133+
NOP
134+
ADDI $s1, $zero, 32#declaro un 32
135+
NOP
136+
NOP
137+
NOP
138+
SUB $s0, $s1, $gp#aux=32-mask
139+
ADDI $t0, $zero, 1#inicializamos i en 1
140+
ADDI $s3, $zero, 2#inicializamos num en 2
141+
ADDI $s0, $s0, 1#aux+=1
142+
ADDI $s2, $zero, 1#inicializamos res en 1
143+
NOP
144+
NOP
145+
NOP
146+
NOP
147+
NOP
148+
SLT $t8, $t0, $s0#si i < aux devuelve 1
149+
NOP
150+
NOP
151+
NOP
152+
BNE $t8, $at, 9#si la condicion es falsa
153+
NOP
154+
NOP
155+
NOP
156+
MUL $s2, $s2, $s3#res = res*num
157+
ADDI $t0, $t0, 1#incrementa i en 1
158+
NOP
159+
NOP
160+
NOP
161+
J 0x147#regresa a la condicion
162+
NOP
163+
NOP
164+
NOP
165+
LW $s3, $zero, 20#cargamos mask[3]
166+
NOP
167+
NOP
168+
NOP
169+
ADDI $s3, $s3, 1#sumamos 1 a mask[3]
170+
NOP
171+
NOP
172+
NOP
173+
SUB $s3, $s3, $s2#mask[3]=mask[3]-res
174+
LW $t0, $zero, 4#i=oct[3]
175+
NOP
176+
NOP
177+
NOP
178+
NOP
179+
BEQ $t0, $zero, 25#branch siguiente for<----------
180+
NOP
181+
NOP
182+
NOP
183+
MOD $s7, $s2, $t0#i%res
184+
NOP
185+
NOP
186+
NOP
187+
BNE $s7, $zero, 11#if(i%res==0)
188+
NOP
189+
NOP
190+
NOP
191+
SUB $t4, $t4, $t4#igualamos oct[3]=0
192+
NOP
193+
NOP
194+
NOP
195+
ADD $t4, $t4, $t0#oct[3]=i
196+
NOP
197+
NOP
198+
NOP
199+
SUB $t0, $t0, $at#i--
200+
NOP
201+
NOP
202+
NOP
203+
J 0x178
204+
NOP
205+
NOP
206+
NOP
207+
SUB $t4, $t4, $at#-1 porque la ultima vez no entro y dejo 1
208+
NOP
209+
NOP
210+
SUB $t0, $t0, $t0#establece i en 0
211+
NOP
212+
NOP
213+
NOP
214+
SLTI $t8, $t0, 4#si i<4 devuelve 1
215+
NOP
216+
NOP
217+
NOP
218+
BNE $t8, $at, 71# cuando ya no es 1 salta a res=res-2,se invirtieron los if y else del codigo
219+
NOP
220+
NOP
221+
NOP
222+
SLTI $s4, $t0, 3 #si i < 3 devuelve 1
223+
NOP
224+
NOP
225+
NOP
226+
BNE $s4, $at, 29#si no es igual salta al else
227+
NOP
228+
NOP
229+
NOP
230+
SUB $t5, $t5, $t5#inicializamos broad/min/max[0]=0
231+
SUB $t6, $t6, $t6#inicializamos broad/min/max[1]=0
232+
SUB $t7, $t7, $t7#inicializamos broad/min/max[2]=0
233+
NOP
234+
NOP
235+
NOP
236+
ADD $t5, $t5, $t1#asignamos broad/min/max[0]=oct[0]
237+
ADD $t6, $t5, $t2#asignamos broad/min/max[1]=oct[1]
238+
ADD $t7, $t5, $t3#asignamos broad/min/max[2]=oct[2]
239+
NOP
240+
NOP
241+
NOP
242+
SW $t5, $zero, 5#guardamos broad[0]en datamemory[5]
243+
SW $t6, $zero, 6#guardamos broad[1]en datamemory[6]
244+
SW $t7, $zero, 7#guardamos broad[2]en datamemory[7]
245+
SW $t5, $zero, 9#guardamos min[0]en datamemory[9]
246+
SW $t6, $zero, 10#guardamos min[1]en datamemory[10]
247+
SW $t7, $zero, 11#guardamos min[2]en datamemory[11]
248+
SW $t5, $zero, 13#guardamos max[0]en datamemory[13]
249+
SW $t6, $zero, 14#guardamos max[1]en datamemory[14]
250+
SW $t7, $zero, 15#guardamos max[2]en datamemory[15]
251+
ADDI $t0, $t0, 3#le sumamos 3 a i
252+
J 0x213
253+
NOP
254+
NOP
255+
NOP
256+
SUB $t9, $t9, $t9#inicializamos broad[3]=0
257+
NOP
258+
NOP
259+
NOP
260+
ADD $t9, $t4, $s2#suma broad[3]=oct[3]+res
261+
NOP
262+
NOP
263+
NOP
264+
SUB $t9, $t9, $at#le resta 1 a broad[3]
265+
NOP
266+
NOP
267+
NOP
268+
NOP
269+
SW $9, $zero, 8#guardamos broad[3]en datamemory[8]
270+
SUB $t9, $t9, $at#le vuelve a resta 1 a broad[3]
271+
NOP
272+
NOP
273+
NOP
274+
SW $9, $zero, 16#guardamos max[3]en datamemory[16]
275+
SUB $t9, $t9, $t9#establecemos min[3]=0
276+
NOP
277+
NOP
278+
NOP
279+
ADDI $t9, $t4, 1#sumamos min[3]+1
280+
NOP
281+
NOP
282+
NOP
283+
SW $9, $zero, 12#guardamos min[3]en datamemory[12]
284+
ADDI $t0, $t0, 1#aumentamos en 1 a i
285+
NOP
286+
NOP
287+
NOP
288+
J 0x213
289+
SUB $s7, $s7, $s7#inicializamos s7=0
290+
NOP
291+
NOP
292+
NOP
293+
SUB $s2, $s2, $v0#restamos res-2
294+
NOP
295+
NOP
296+
NOP
297+
SW $s2, $zero, 21#guardamos el resultado de res en datamemory[21]
298+
SW $t1, $zero, 1#guardamos oct[0] en datamemory[1]
299+
SW $t2, $zero, 2#guardamos oct[1] en datamemory[2]
300+
SW $t3, $zero, 3#guardamos oct[2] en datamemory[3]
301+
SW $t4, $zero, 4#guardamos oct[3] en datamemory[4]
302+
SW $s3, $zero, 20#guardamos mask255[3] en datamemory[20]
303+
NOP
304+
NOP

DATAPATH/simulation/modelsim/vsim.wlf

48 KB
Binary file not shown.

0 commit comments

Comments
 (0)