El enunciado de esta evaluacion es casi igual a la del semestre pasado pero aqui no hay limites para la cantidad de numeros que se introducen por teclado, pero es lo mismo ordenar, separar pares, etc…
1: ORG 2000H
2: LD SP,3DFFH
3: INICIO: CALL BORRAR_PAN
4: LD IY,TBLAHEX
5: LD IX,TABLA
6: AQUI70: CALL SCAN
7: CP "X"
8: JP Z,AQUI73
9: CP "x"
10: JP Z,AQUI73
11: CP 30H
12: JR C,AQUI70
13: CP 47H
14: JP NC,AQUI70
15: LD (IX),A
16: INC IX
17: LD (IX),24H
18: LD H,A
19: PUSH IX
20: LD IX,TABLA
21: LD A,2
22: CALL ENVIAR_MEN
23: POP IX
24: AQUI71: CALL SCAN
25: CP 30H
26: JR C,AQUI71
27: CP 47H
28: JP NC,AQUI71
29: LD (IX),A
30: INC IX
31: LD (IX),24H
32: LD L,A
33: PUSH IX
34: LD IX,TABLA
35: LD A,2
36: CALL ENVIAR_MEN
37: POP IX
38: CALL TR2
39: INC E
40: LD A,E
41: CP 30
42: JP NZ,AQUI70
43: AQUI73: CALL BORRAR_PAN
44: LD IX,MENU1
45: LD A,1
46: CALL ENVIAR_MEN
47: LD IX,MENU2
48: LD A,2
49: CALL ENVIAR_MEN
50: LD IX,MENU3
51: LD A,3
52: CALL ENVIAR_MEN
53: LD IX,MENU4
54: LD A,4
55: CALL ENVIAR_MEN
56: CALL SCAN
57: CP 20H
58: JP NZ,AQUI73
59: CALL BORRAR_PAN
60: LD B,E
61: LD IX,TBLAHEX
62: LD IY,AUX
63: AQUI20: LD A,(IX)
64: LD (IY),A
65: INC IX
66: INC IY
67: DJNZ AQUI20
68:
69: ; ORDENACION
70: ; PRIMERO SE ORDENA LA TABLA CON EL METODO DE LA BURBUJA Y LUEGO SE INSPECCIONA LA TABLA
71: ; ORDENADA BUSCANDO LOS NUMEROS PARES E IMPARES
72:
73: LD B,E
74: AQUI02: LD C,1
75: LD IX,AUX
76: AQUI01: LD A,(IX)
77: CP (IX+1)
78: CALL NC,MUEVO
79: INC IX
80: INC C
81: LD A,C
82: CP E
83: JP NZ,AQUI01
84: DJNZ AQUI02
85:
86: ; *****************
87: LD C,E
88: LD HL,AUX
89: LD IX,TPAR
90: LD IY,TIMP
91: LD DE,0
92: LD B,C
93: AQUI03: LD A,(HL)
94: AND 1
95: CP 0
96: JP NZ,NOPAR
97: LD A,(HL)
98: LD (IX),A
99: DEC IX
100: INC D
101: JP PROXIMO
102: NOPAR: LD A,(HL)
103: LD (IY),A
104: INC IY
105: INC E
106: PROXIMO: INC HL
107: DJNZ AQUI03
108: LD B,D
109: INC IX
110: LD IY,TPAR2
111: AQUI50: LD H,(IX)
112: LD L,(IX)
113: CALL TR
114: INC IX
115: DJNZ AQUI50
116: LD IX,TIMP
117: LD IY,TIMP2
118: LD B,E
119: AQUI40: LD H,(IX)
120: LD L,(IX)
121: CALL TR
122: INC IX
123: DJNZ AQUI40
124: LD B,E
125: LD C,E
126: LD E,0
127: LD IY,TIMP3
128: LD IX,TIMP
129: LD HL,TBCD
130: LD (HL),0
131: AQUI13: LD A,(IX)
132: CP 64H
133: JP NC,NOBCD
134: LD (IY),A
135: INC IY
136: AQUI12: INC (HL)
137: LD A,(HL)
138: AND 0FH
139: CP 0AH
140: JP C,AQUI11
141: LD A,(HL)
142: ADD 6
143: LD (HL),A
144: AQUI11: DEC (IX)
145: LD A,(IX)
146: CP 0
147: JP NZ,AQUI12
148: INC HL
149: LD (HL),0
150: INC E
151: NOBCD: INC IX
152: DJNZ AQUI13
153:
154: LD IX,TBCD
155: LD IY,TBCD2
156: LD B,E
157: AQUI55: LD H,(IX)
158: LD L,(IX)
159: CALL TR
160: INC IX
161: DJNZ AQUI55
162:
163: ; SUMA DE TODOS LOS NUMEROS IMPARES INGRESADOS
164: ; SE USA HL Y EL PAR DE REGISTRO "DE" PARA REALIZAR LA SUMA DE 16 BITS
165: LD HL,0
166: LD IY,TIMP3
167: LD B,C
168: LD D,0
169: AQUI30: LD A,(IY)
170: CP 64H
171: JP NC,AQUI35
172: LD E,(IY)
173: ADD HL,DE
174: AQUI35: INC IY
175: DJNZ AQUI30
176: LD IX,TBLASUM
177: LD (IX),0
178: LD (IX+1),0
179: LD (IX+2),0
180: LD (IX+3),0
181: AQUI31: INC (IX+3)
182: LD A,(IX+3)
183: CP 10
184: JR C,AQUI32
185: LD (IX+3),0
186: INC (IX+2)
187: LD A,(IX+2)
188: CP 10
189: JR C,AQUI32
190: LD (IX+2),0
191: INC (IX+1)
192: LD A,(IX+1)
193: CP 10
194: JR C,AQUI32
195: LD (IX+1),0
196: INC (IX)
197: AQUI32: DEC HL
198: LD A,L
199: CP 0
200: JR NZ,AQUI31
201: LD A,H
202: CP 0
203: JP NZ,AQUI31
204: LD B,4
205: AQUI33: LD A,(IX)
206: OR 30H
207: LD (IX),A
208: INC IX
209: DJNZ AQUI33
210: LD (IX),24H
211: LD IX,TPAR2
212: LD A,1
213: CALL ENVIAR_MEN
214: LD IX,TIMP2
215: LD A,2
216: CALL ENVIAR_MEN
217: LD IX,TBCD2
218: LD A,3
219: CALL ENVIAR_MEN
220: LD IX,TBLASUM
221: LD A,4
222: CALL ENVIAR_MEN
223: AQUI60: CALL SCAN
224: CP 1BH
225: JR Z,INTER
226: JR AQUI60
227: INTER: LD HL,BLANK
228: PUSH HL
229: LD IX,MENSAJE
230: LOOP: EX (SP),IX
231: LD A,4
232: PUSH IX
233: CALL ENVIAR_MEN
234: POP IX
235: LD B,50
236: HELFSEG: CALL SCAN1
237: CP "S"
238: JP Z,ENDING
239: CP "N"
240: JP Z,INICIO
241: DJNZ HELFSEG
242: JR LOOP
243: ENDING: RST 30H
244:
245: MUEVO: LD D,A
246: LD A,(IX+1)
247: LD (IX),A
248: LD (IX+1),D
249: RET
250: TR: LD A,H
251: AND 0F0H
252: RLCA
253: RLCA
254: RLCA
255: RLCA
256: CP 0AH
257: CALL NC,LETRA
258: ADD 30H
259: LD H,A
260: LD A,L
261: AND 0FH
262: CP 0AH
263: CALL NC,LETRA
264: ADD 30H
265: LD L,A
266: LD (IY),H
267: LD (IY+1),L
268: INC IY
269: INC IY
270: LD (IY),24H
271: RET
272: LETRA: ADD 7
273: RET
274: TR2: LD A,H
275: CP 3AH
276: CALL NC,LETRA2
277: SUB 30H
278: RLCA
279: RLCA
280: RLCA
281: RLCA
282: LD H,A
283: LD A,L
284: CP 3AH
285: CALL NC,LETRA2
286: SUB 30H
287: OR H
288: LD (IY),A
289: INC IY
290: RET
291: LETRA2: SUB 7
292: RET
293:
294: ORG 3000H
295: TABLA DS 70
296: AUX DS 40
297: TBLAHEX DS 40
298: TBCD DS 40
299: TBCD2 DS 80
300: TPAR DS 40
301: TPAR2 DS 80
302: TIMP DS 40
303: TIMP2 DS 80
304: TIMP3 DS 40
305: TBLASUM DS 10
306: MENSAJE DB " DESEA TERMINAR? SI O NO? (S/N) $"
307: BLANK DB " $"
308: MENU1 DB " ***** ORDENACION DE NUMEROS PARES E IMPARES *****$"
309: MENU2 DB " ***** TRANSFORMACION DE HEXADECIMAL A BCD *****$"
310: MENU3 DB " ***** SUMA DE TODOS LOS DATOS INTRODUCIDOS *****$"
311: MENU4 DB " PRESIONE ENTER PARA CONTINUAR $"
312: SCAN1 EQU 0508H
313: SCAN EQU 04F1H
314: ENVIAR_MEN EQU 052BH
315: BORRAR_PAN EQU 055CH
316: END
No hay comentarios:
Publicar un comentario