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,3DFFH3: INICIO: CALL BORRAR_PAN
4: LD IY,TBLAHEX 5: LD IX,TABLA6: AQUI70: CALL SCAN
7: CP "X"
8: JP Z,AQUI739: 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,222: CALL ENVIAR_MEN
23: POP IX24: 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,236: CALL ENVIAR_MEN
37: POP IX38: CALL TR2
39: INC E 40: LD A,E 41: CP 30 42: JP NZ,AQUI7043: AQUI73: CALL BORRAR_PAN
44: LD IX,MENU1 45: LD A,146: CALL ENVIAR_MEN
47: LD IX,MENU2 48: LD A,249: CALL ENVIAR_MEN
50: LD IX,MENU3 51: LD A,352: CALL ENVIAR_MEN
53: LD IX,MENU4 54: LD A,455: CALL ENVIAR_MEN
56: CALL SCAN
57: CP 20H 58: JP NZ,AQUI7359: 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 INGRESADOS164: ; 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,1213: CALL ENVIAR_MEN
214: LD IX,TIMP2 215: LD A,2216: CALL ENVIAR_MEN
217: LD IX,TBCD2 218: LD A,3219: CALL ENVIAR_MEN
220: LD IX,TBLASUM 221: LD A,4222: 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,MENSAJE230: LOOP: EX (SP),IX
231: LD A,4 232: PUSH IX233: CALL ENVIAR_MEN
234: POP IX 235: LD B,50236: HELFSEG: CALL SCAN1
237: CP "S"
238: JP Z,ENDING239: CP "N"
240: JP Z,INICIO 241: DJNZ HELFSEG242: 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,H251: AND 0F0H
252: RLCA 253: RLCA 254: RLCA 255: RLCA 256: CP 0AH257: CALL NC,LETRA
258: ADD 30H 259: LD H,A 260: LD A,L261: AND 0FH
262: CP 0AH263: 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 3AH276: CALL NC,LETRA2
277: SUB 30H
278: RLCA 279: RLCA 280: RLCA 281: RLCA 282: LD H,A 283: LD A,L 284: CP 3AH285: CALL NC,LETRA2
286: SUB 30H
287: OR H
288: LD (IY),A 289: INC IY 290: RET291: 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 10306: 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