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),24H
9: CALL BORRAR
10: LD IX,L1
11: LD A,1
12: CALL MENSAJE
13: E1: CALL SCAN
14: JP VNI1
15: RE1: LD IX,T1
16: LD A,3
17: CALL MENSAJE
18: E2: CALL SCAN
19: JP VNI2
20: RE2: LD IX,T1
21: LD A,3
22: CALL MENSAJE
23: INC IY
24: LD (IY),20H
25: INC IY
26: LD (IY),24H
27: DJNZ E1
28: 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 E
71: 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,1
97: CALL MENSAJE
98: LD HL,TP
99: LD IX,T2
100: LD B,30
101: SALTO2: LD A,(HL)
102: LD D,A
103: 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,A
118: 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,2
136: CALL MENSAJE
137: LD HL,TP
138: LD IX,TJ
139: LD B,30
140: SALTO3: LD A,(HL)
141: PUSH AF
142: SUB 3AH
143: JP NC,TRANS1
144: POP AF
145: 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 AF
154: SUB 3AH
155: JP NC,TRANS2
156: POP AF
157: 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 AF
168: SUB 37H
169: JP AQUI1
170: TRANS2: POP AF
171: 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 3AH
191: 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,3
211: 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 24H
228: L1 DB "INTRODUCE 30 DIGITOS HEXADECIMAL",24H
229:
230: SCAN EQU 04F1H
231: MENSAJE EQU 052BH
232: BORRAR EQU 055CH
233: END
No hay comentarios:
Publicar un comentario