este es el enunciado de esta evaluación
Se tienen 3 tablas de datos en memoria cada una con 32h datos de un byte cada uno, el rango de valor en las tablas es de 00h hasta FFh, se debe recorrer la tabla 1 y tabla2, al encontrar un valor par en tabla1 sumarlo con el valor positivos encontrado en la tabla2, que se encuentro al recorrer la tabla y así sucesivamente, el resultado se guardara en un tabla4.
Los valores de la tabla 3 los que sean negativos hacerle el complemento a dos los positivos negarlos y se guardaran en una tabla5.
Una vez terminada esta operación, ordenar las 5 tablas, la información debe presentarse en la pantalla del computador e ir indicando a que tabla corresponde en pantalla para esto debe usar la unidad de desarrollo para presentar la información.
1: ORG 2000H
2: LD SP,3DFFH
3: INICIO: CALL BORRAR_PAN
4:
5:
6: LD IX,TABLA1
7: LD IY,TABLA2
8: LD HL,TABLA4
9: LD B,32H
10: LD C,32H
11:
12: BPAR: LD A,(IX)
13: BIT 0,A
14:
15: JP Z,BPOS
16: INC IX
17: DJNZ BPAR
18: JP PARTE2
19:
20:
21: BPOS: LD A,(IY)
22: BIT 7,A
23: JP Z, SUMO
24: INC IY
25: DEC C
26: JP NZ,BPOS
27: LD C,32H
28: LD IY,TABLA2
29: JP BPOS
30:
31: SUMO: LD A,(IX)
32: ADD (IY)
33: CALL C,AJUSTO
34: INC HL
35: LD (HL),A
36: INC HL
37: INC IY
38: INC IX
39: DJNZ BPARPOS
40: JP PARTE2
41:
42: AJUSTO: LD (HL),1
43: RET
44:
45:
46: PARTE2:
47: ; BUSCO NEGATIVO
48:
49: LD IX,TABLA3
50: LD HL,TABLA5
51: LD B,32H
52:
53: BUSCONEG:
54: LD A,(IX)
55: BIT 7,A
56: JP Z,POSIT
57: NEG
58: JP COPIAR
59:
60: POSIT:
61: NOT
62: COPIAR:
63: INC IX
64: LD (HL),A
65: INC HL
66: DJNZ BUSCONEG
67:
68:
69:
70: ; MOSTRAR EN PANTALLA
71:
72: CALL SCAN
73: CALL BORRAR_PAN
74:
75: LD A,1
76: LD IX,LINEA1
77: CALL ENVIAR_MEN
78:
79: LD IY,TABLA1
80: CALL BURBUJA
81: LD IY,TABLA1
82: CALL HEXASC
83:
84: LD A,2
85: LD IX,TASC
86: CALL ENVIAR_MEN
87:
88: LD A,3
89: LD IX,LINEA2
90: CALL ENVIAR_MEN
91:
92: LD IY,TABLA2
93: CALL BURBUJA
94: LD IY,TABLA2
95: CALL HEXASC
96:
97: LD A,4
98: LD IX,TASC
99: CALL ENVIAR_MEN
100:
101: CALL SCAN
102: CALL BORRAR_PAN
103:
104: LD A,1
105: LD IX,LINEA3
106: CALL ENVIAR_MEN
107:
108: LD IY,TABLA3
109: CALL BURBUJA
110: LD IY,TABLA3
111: CALL HEXASC
112:
113:
114: LD A,2
115: LD IX,TASC
116: CALL ENVIAR_MEN
117:
118: LD A,3
119: LD IX,LINEA4
120: CALL ENVIAR_MEN
121:
122: LD IY,TABLA4
123: CALL BURBUJA
124: LD IY,TABLA4
125: CALL HEXASC
126:
127:
128: LD A,4
129: LD IX,TASC
130: CALL ENVIAR_MEN
131:
132: CALL SCAN
133: CALL BORRAR_PAN
134:
135: LD A,1
136: LD IX,LINEA5
137: CALL ENVIAR_MEN
138:
139: LD IY,TABLA5
140: CALL BURBUJA
141: LD IY,TABLA5
142: CALL HEXASC
143:
144:
145: LD A,2
146: LD IX,TASC
147: CALL ENVIAR_MEN
148:
149: CALL SCAN
150: CALL BORRAR_PAN
151: RST 30H
152:
153:
154:
155:
156: ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
157: ; RUTINA PARA ORDENAR EN FORMA ASCENDENTE USANDO EL METODO DE LA BURBUJA
158: ; EN IY DEBE ESTAR CARGADA LA DIRECCION DE LA TABLA A ORDENAR
159:
160: BURBUJA:
161: LD B,49
162:
163: PRO_POS: PUSH IY
164: POP IX
165: LD C,1
166:
167: BUR_2: LD A,(IX)
168: CP (IX+1)
169: CALL NC,BUR_ORD
170: INC C
171: LD A,C
172: CP B
173: JP Z,BUR_1
174: INc IX
175: JP BUR_2
176: BUR1: DJNZ PRO_POS
177: RET
178:
179: BUR_ORD: PUSH DE
180: LD D,(IX)
181: LD E,(IX+1)
182: LD (IX),E
183: LD (IX+1),D
184: POP DE
185: RET
186:
187:
188:
189: ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
190: ; CONVERTIR DE HEXA A ASCII, EN IY DEBE ESTAR LA DIRECCION DE LA TABLA A CONVERTIR
191:
192: HEXASC: LD B,50
193:
194: PUSH IY
195: POP IX
196: LD HL,TASC
197: AA: LD A,(IX)
198: LD E,A
199: AND 0F0H
200: RRC A
201: RRC A
202: RRC A
203: RRC A
204: CP 10
205: CALL NC,LETB1
206: ADD 30H
207: LD (HL),A
208: INC HL
209: LD A,E
210: AND 0FH
211: CP 10
212: CALL NC,LETB1
213: ADD 30H
214: LD (HL),A
215: INC HL
216: LD (HL),20H
217: INC HL
218: INC IX
219: DJNZ AA
220: RET
221:
222: LETB1: ADD 7
223: RET
224:
225:
226:
227:
228: ORG 2500H
229: TABLA1 DS 50
230: TABLA2 DS 50
231: TABLA3 DS 50
232: TABLA4 DS 200
233: TABLA5 DS 200
234:
235: TASC DS 200,24H
236:
237:
238: LINEA1 DB " * TABLA1$"
239: LINEA2 DB " * TABLA2$"
240: LINEA3 DB " * TABLA3$"
241: LINEA4 DB " * TABLA4$"
242: LINEA5 DB " * TABLA5$"
243: SCAN1 EQU 0508H
244: SCAN EQU 04F1H
245: ENVIAR_MEN EQU 052BH
246: BORRAR_PAN EQU 055CH
247: END
No hay comentarios:
Publicar un comentario