El enunciado de este programa constaba en recibir 12 datos, mostrarlo (des)?ordenados, mostrar el complemento a 2 de los numeros impares, etc…
1: ORG 2000H
2: LD SP,3DFFH
3: INICIO: LD IX,TIMP
4: LD B,12
5: CLEAN1: LD (IX),0
6: INC IX
7: DJNZ CLEAN1
8: LD IX,TNASC
9: LD B,12
10: CLEAN2: LD (IX),0
11: INC IX
12: DJNZ CLEAN2
13: CALL CLS
14: LD IX,MEN
15: LD A,1
16: CALL SMS
17: LD B,12
18: LD IY,TABLA1
19: ERROR: CALL SCAN
20: CALL VERIFI
21: LD (IY),A
22: INC IY
23: LD (IY),24H
24: CALL MOSTRAR
25: CALL SCAN
26: CALL VERIFI
27: LD (IY),A
28: INC IY
29: LD (IY),20H
30: INC IY
31: LD (IY),24H
32: CALL MOSTRAR
33: DJNZ ERROR
34: CALL SCAN
35: M1: CALL CLS
36: LD IX,MENU1
37: LD A,1
38: CALL SMS
39: LD IX,OPC1
40: LD A,2
41: CALL SMS
42: LD IX,OPC2
43: LD A,3
44: CALL SMS
45: LD IX,OPC3
46: LD A,4
47: CALL SMS
48: ESPERA: CALL SCAN
49: CP 31H
50: JP Z,MEOPC1
51: CP 32H
52: JP Z,MEOPC2
53: CP 33H
54: JP Z,INICIO
55: CP 46H
56: JP Z,THEEND
57: JP ESPERA
58: MOSTRAR: LD IX,TABLA1
59: LD A,2
60: CALL SMS
61: RET
62: VERIFI: LD H,A
63: SUB A,2FH
64: JP C,ERROR
65: LD A,H
66: SUB A,3AH
67: JP NC,ERROR
68: LD A,H
69: RET
70: MEOPC1: CALL CLS
71: LD IX,MENU2
72: LD A,01
73: CALL SMS
74: LD IX,OPC11
75: LD A,02
76: CALL SMS
77: LD IX,OPC12
78: LD A,03
79: CALL SMS
80: LD IX,OPC13
81: LD A,04
82: CALL SMS
83: ESPE: CALL SCAN
84: CP 31H
85: JP Z,DESOR
86: CP 32H
87: JP Z,ORDENAR
88: CP 33H
89: JP Z,M1
90: JP ESPE
91: ;**** RUTINA PARA MOSTRAR TABLA DESORDENADA ****
92: DESOR: CALL CLS
93: LD IX,TABLA1
94: LD A,3
95: CALL SMS
96: CALL SCAN
97: JP M1
98: ;***** RUTINA PARA MOSTRAR TABLA ORDENADA ******
99: ORDENAR: CALL CLS
100: LD D,30H
101: LD E,30H
102: LD HL,DATOS
103: SALTO: LD IY,TABLA1
104: LD B,12
105: AQUI: LD A,D
106: CP (IY)
107: CALL Z,SEGBYT
108: INC IY
109: INC IY
110: INC IY
111: DJNZ AQUI
112: INC E
113: LD A,E
114: CP 3AH
115: JP NZ,SALTO
116: CALL AJUSTO
117: INC D
118: LD A,D
119: CP 3AH
120: JP Z,FINORD
121: JP SALTO
122: SEGBYT: LD A,E
123: CP (IY+1)
124: CALL Z,COPIO
125: RET
126: COPIO: LD A,(IY)
127: LD (HL),A
128: INC HL
129: LD A,(IY+1)
130: LD (HL),A
131: INC HL
132: LD (HL),20H
133: INC HL
134: RET
135: AJUSTO: LD E,30H
136: RET
137: FINORD: LD IX,DATOS
138: LD A,3
139: CALL SMS
140: CALL SCAN
141: JP M1
142: ; ****** RUTINA PARA MOSTRAR LOS NUMEROS EN COMPLEMENTO A 2
143: ; * PRIMERO BUSCO LOS NUMEROS IMPARES (BIT 0 ES 1)
144: ; * SE GUARDAN EN LA TABLA TIMP
145: MEOPC2: CALL CLS
146: LD IY,TABLA1
147: LD HL,TIMP
148: LD B,12
149: PAVE: LD A,(IY+1)
150: BIT 0,A
151: CALL NZ,IMPAR
152: INC IY
153: INC IY
154: INC IY
155: DJNZ PAVE
156: LD IX,TIMP
157: LD A,1
158: CALL SMS
159: CALL C2
160: LD IX,TNASC
161: LD A,3
162: CALL SMS
163: CALL SCAN
164: JP M1
165: IMPAR: LD A,(IY)
166: LD (HL),A
167: INC HL
168: LD A,(IY+1)
169: LD (HL),A
170: INC HL
171: LD (HL),20H
172: INC HL
173: LD (HL),24H
174: RET
175: ;***** RUTINA PARA HALLAR EL COMPLEMENTO A 2
176: ; **** PARA ELLOS HALLO EL VALOR EN HEXA DEL NUMERO DECIMAL
177: ; **** INTRODUCIDO. LUEGO SE HALLA EL COMPLEMENTO
178: ; **** A 2 DEL DATO
179: C2: LD IY,TIMP
180: LD IX,TNCOM
181: LD HL,TNHEX
182: LD B,12
183: AQUI2: LD C,0
184: LD A,(IY)
185: AND 0FH
186: LD D,A
187: LD A,(IY+1)
188: AND 0FH
189: LD E,A
190: CALL ARR
191: INC IY
192: INC IY
193: INC IY
194: LD (HL),C
195: INC HL
196: INC HL
197: LD A,C
198: NEG
199: LD (IX),A
200: INC IX
201: INC IX
202: DJNZ AQUI2
203: CALL III
204: RET
205: ARR: LD A,E
206: CP 0
207: JP Z,II
208: INC C
209: DEC E
210: LD A,E
211: CP 0
212: JP NZ,ARR
213: II: DEC D
214: LD A,D
215: CP 0FFH
216: JP Z,RETOR
217: LD E,09
218: INC C
219: JP ARR
220: RETOR: RET
221: ; ***** RUTINA PARA DESCOMPONER EL COMPLEMENTO A 2
222: ; ***** DE LOS DATOS EN DOS BYTES PARA LUEGO LLEVARLO
223: ; ***** A CODIGO ASCII PARA SER MOSTRADO POR PANTALLA
224:
225: III: LD IY,TNCOM
226: LD HL,TNASC
227: LD B,12
228: AA: LD A,(IY)
229: LD E,A
230: AND 0F0H
231: RRC A
232: RRC A
233: RRC A
234: RRC A
235: LD D,A
236: SUB 10
237: JP NC,LETB1
238: LD A,D
239: OR 30H
240: BACK1: LD (HL),A
241: INC HL
242: LD A,E
243: AND 0FH
244: LD D,A
245: SUB 10
246: JP NC,LETB2
247: LD A,D
248: OR 30H
249: BACK2: LD (HL),A
250: INC HL
251: LD (HL),20H
252: INC HL
253: LD (HL),24H
254: INC IY
255: INC IY
256: INC IY
257: DJNZ AA
258: RET
259: LETB2: LD A,D
260: ADD 37H
261: JP BACK2
262: LETB1: LD A,D
263: DAA
264: ADD 37H
265: JP BACK1
266:
267: ORG 3200H
268: TABLA1 DS 36
269: DB 24H
270: DATOS DS 36
271: DB 24H
272: TIMP DS 36
273: DB 24H
274: TNASC DS 36
275: DB 24H
276: TNHEX DS 36
277: DB 24H
278: TNCOM DS 36
279: DB 24H
280: MEN DB "!!!!! INTRODUCE LOS 12 DATOS DE DOS DIGITOS !!!!!",24H
281: MENU1 DB " ********** MENU PRINCIPAL **********",24H
282: OPC1 DB " 1. MOSTRAR TABLA",24H
283: OPC2 DB " 2. COMPLEMENTO A 2 DE NUMEROS IMPARES",24H
284: OPC3 DB " 3. INGRESAR NUEVOS DATOS",24H
285: MENU2 DB " ********** OPCION 1 **********",24H
286: OPC11 DB " 1. DATOS DESORDENADOS",24H
287: OPC12 DB " 2. DATOS ORDENADOS",24H
288: OPC13 DB " 3. VOLVER AL MENU PRINCIPAL",24H
289: SCAN: EQU 04F1H
290: CLS EQU 055CH
291: SMS EQU 052BH
292: THEEND: RST 30H
293: END
No hay comentarios:
Publicar un comentario