Este programa consistia en introducir 30 digitos hexadecimales, luego se seleccionaban los pares, se ordenaba de mayor a menor y los transformaba a BCD.
1: ORG 2000H 2: LD SP,3DFFH 3: START: LD B,30 4: LD IY,T1 5: LD IX,T2 6: LD (IX),24H 7: LD IX,T3 8: LD (IX),24H9: CALL BORRAR
10: LD IX,L1 11: LD A,112: CALL MENSAJE
13: E1: CALL SCAN
14: JP VNI1 15: RE1: LD IX,T1 16: LD A,317: CALL MENSAJE
18: E2: CALL SCAN
19: JP VNI2 20: RE2: LD IX,T1 21: LD A,322: CALL MENSAJE
23: INC IY 24: LD (IY),20H 25: INC IY 26: LD (IY),24H 27: DJNZ E128: CALL BORRAR
29: JP INICIO 30: VNI1: LD (IY),A 31: CP 2FH 32: JP C,E1 33: LD A,(IY) 34: CP 47H 35: JP NC,E1 36: INC IY 37: LD (IY),24H 38: JP RE1 39: VNI2: LD (IY),A 40: CP 2FH 41: JP C,E2 42: LD A,(IY) 43: CP 47H 44: JP NC,E2 45: INC IY 46: LD (IY),24H 47: JP RE2 48: 49: ; *** RUTINA PARA ORDENAR LOS NUMEROS DE MENOR A MAYOR 50: INICIO: LD B,30 51: LD IX,T1 52: LD HL,TP 53: LD E,30H 54: LD D,30H 55: SALTO: LD A,(HL) 56: CP D 57: JP Z,OTBY 58: INC HL 59: INC HL 60: DJNZ SALTO 61: AQUI: INC E 62: LD A,E 63: CP 47H 64: JP Z,INCD 65: LD B,30 66: LD HL,TP 67: JP SALTO 68: OTBY: INC HL 69: LD A,(HL) 70: CP E71: CALL Z,MUEVO
72: INC HL 73: DJNZ SALTO 74: JP AQUI 75: INCD: LD E,30H 76: INC D 77: LD A,D 78: CP 47H 79: JP Z,FINR 80: LD HL,TP 81: LD B,30 82: JP SALTO 83: MUEVO: LD A,D 84: LD (IX),A 85: INC IX 86: LD A,E 87: LD (IX),A 88: INC IX 89: LD (IX),20H 90: INC IX 91: LD (IX),24H 92: RET 93: ; *** RUTINA PARA BUSCAR NUMEROS POSITIVOS Y PARES 94: 95: FINR: LD IX,T1 96: LD A,197: CALL MENSAJE
98: LD HL,TP 99: LD IX,T2 100: LD B,30 101: SALTO2: LD A,(HL) 102: LD D,A103: AND 0FH
104: RLC A 105: RLC A 106: RLC A 107: RLC A 108: BIT 7,A 109: JP Z,BN 110: INC HL 111: INC HL 112: DJNZ SALTO2 113: JP R3 114: BN: INC HL 115: LD A,(HL) 116: LD E,A 117: BIT 0,A118: CALL Z,MUEVO2
119: INC HL 120: DJNZ SALTO2 121: JP R3 122: MUEVO2: LD A,D 123: LD (IX),A 124: INC IX 125: LD A,E 126: LD (IX),A 127: INC IX 128: LD (IX),20H 129: INC IX 130: LD (IX),24H 131: RET 132: ; RUTINA PARA UNIR EL CONTENIDO DE DOS LOCALIDADES DE MEMORIA 133: 134: R3: LD IX,T2 135: LD A,2136: CALL MENSAJE
137: LD HL,TP 138: LD IX,TJ 139: LD B,30 140: SALTO3: LD A,(HL) 141: PUSH AF142: SUB 3AH
143: JP NC,TRANS1 144: POP AF145: AND 0FH
146: AQUI1: RLC A 147: RLC A 148: RLC A 149: RLC A 150: LD D,A 151: INC HL 152: LD A,(HL) 153: PUSH AF154: SUB 3AH
155: JP NC,TRANS2 156: POP AF157: AQUI2: AND 0FH
158: OR D
159: LD (IX),A 160: INC IX 161: LD (IX),20H 162: INC IX 163: LD (IX),24H 164: INC HL 165: DJNZ SALTO3 166: JP R4 167: TRANS1: POP AF168: SUB 37H
169: JP AQUI1 170: TRANS2: POP AF171: SUB 37H
172: JP AQUI2 173: R4: LD HL,TJ 174: LD IX,T3 175: LD B,30 176: SALTO4: LD A,(HL)177: SUB 64H
178: JP C,TBCD 179: INC HL 180: INC HL 181: DJNZ SALTO4 182: JP R5 183: ; RUTINA PARA TRANSFORMAR A BCD 184: TBCD: LD C,(HL) 185: LD E,30H 186: LD D,30H 187: AQUI4: INC E 188: DEC C 189: LD A,E 190: CP 3AH191: CALL Z,AJU1
192: LD A,C 193: CP 0 194: JP NZ,AQUI4 195: INC HL 196: INC HL 197: LD (IX),D 198: INC IX 199: LD (IX),E 200: INC IX 201: LD (IX),20H 202: INC IX 203: LD (IX),24H 204: DJNZ SALTO4 205: JP R5 206: AJU1: LD E,30H 207: INC D 208: RET 209: R5: LD IX,T3 210: LD A,3211: CALL MENSAJE
212: CALL SCAN
213: CP 1BH 214: JP NZ,START 215: RST 30H 216: 217: ORG 3000H 218: TP DS 90 219: DB 24H 220: T1 DS 90 221: DB 24H 222: T2 DS 90 223: DB 24H 224: TJ DS 90 225: DB 24H 226: T3 DS 90 227: DB 24H228: L1 DB "INTRODUCE 30 DIGITOS HEXADECIMAL",24H
229: 230: SCAN EQU 04F1H 231: MENSAJE EQU 052BH 232: BORRAR EQU 055CH233: END
No hay comentarios:
Publicar un comentario