Este fue el enunciado de esta evaluacion
- Todas las rutinas de este programa deben usar CALL
- Ubicar todas las letras que no son del alfabeto (español, ver tabla ASCII) que se encuentren en la tabla principal, guardarlas en una tabla nueva.
- Ubicar todas las consonantes mayúsculas (ver tabla ASCII) de la tabla principal y convertirlas en minúsculas y ordenarlas antes de guardarlas en otra tabla.
- Ubicar todos los números que tengan el bit 3 y el bit 5 en 1, de la tabla principal, pasarlos a una nueva Tabla, intercambiando la parte alta en la baja y la baja en la alta del número guardarlo en la Tabla creada.
- Todos los números negativos de la tabla principal hacerle complemento a dos y guardarlos en una nueva tabla.
- los primeros 8 números de la Tabla principal deberán se guardados en binario una nueva tabla en solo 32 espacios de memoria, para todos los 8 bits de cada numero hexadecimal tomado de la tabla principal.
1: ORG 2000H
2: LD SP,3DFFH
3: ; se hace la comprobacion con el rango de las letras para ello
4: ; se usa el par de registro DE para delimitar la comparacion
5: ; si es menor que D se copia, y si es menor que E se comprueba
6: ; el proximo intervalo
7:
8: PARTEB: LD IY,TBLAP
9: LD HL,LTRSM
10: LD B,100
11: SALTO: LD DE,"AZ"
12: INC E
13: LD A,(IY)
14: CP D
15: JP C,JMP2
16: CP E
17: JP C,NEXT
18: NEXT1: LD DE,"az"
19: INC E
20: CP D
21: JP C,JMP2
22: CP E
23: JP C,NEXT
24: LD D,164
25: LD E,165
26: CP D
27: JP C,JMP2
28: CP E
29: JP C,NEXT
30: JMP2: CALL COPIAR
31: NEXT: INC IY
32: DJNZ SALTO
33: JP PC
34: COPIAR: LD (HL),A
35: INC HL
36: RET
37:
38: ; se comprueba que el numero sea mayor que 80h, si es mayor el
39: ; numero es negativo y se procede a hacerle complemento a 2
40: PE1: LD IY,TBLAP
41: LD B,100
42: LD HL,TBLCPL
43: SALTO2: LD A,(IY)
44: CP 80H
45: CALL NC,COMPLE
46: INC IY
47: DJNZ SALTO2
48: JP PF
49: COMPLE: LD A,(IY)
50: NEG
51: LD (HL),A
52: INC HL
53: RET
54: ; se comprueba que el bit 5 y el bit 3 esten en "1" logico
55: ; de ser asi se procede a rotar cuatro veces y moverlo a la
56: ; otra tabla
57: PD: LD IY,TBLAP
58: LD HL,TBLROT
59: LD B,100
60: SALTO3: LD A,(IY)
61: CALL b3b6
62: INC IY
63: DJNZ SALTO3
64: JP PE1
65: b3b6: BIT 3,A
66: JP Z,VOLVER
67: BIT 5,A
68: JP Z,VOLVER
69: RLCA
70: RLCA
71: RLCA
72: RLCA
73: LD (HL),A
74: INC HL
75: VOLVER: RET
76:
77: ; se comprueba que el datos este en el rango de las letras
78: ; mayusculas y luego se compara con la consonante apuntada por
79: ; IX, si es igual, obteniendo de esta forma la tabla ordenada
80: ; directamente
81: PC: LD IX,VOCALM
82: LD HL,VOCLMN
83: SALTO5: LD B,100
84: LD IY,TBLAP
85: SALTO4: LD A,(IY)
86: CP 42H
87: JP C,JMP1
88: CP 5BH
89: JP NC,JMP1
90: CP (IX) ; tabla, obteniendolos asi yo ordenados
91: CALL Z,CONV
92: JMP1: INC IY
93: DJNZ SALTO4
94: INC IX
95: LD A,(IX)
96: CP 24H
97: JP Z,PD
98: JP SALTO5
99: CONV: ADD 20H
100: CALL COPIAR
101: RET
102:
103: ; se comprueba el estado de los bits, uno por uno, si el bit
104: ; esta en "1" se hace el ajuste, si el bit es revisado es impar
105: ; se hace un ajuste en el nibble alto, si el bit es par
106: ; se hace ajuste en el nibble bajo
107: PF: LD IY,TBLAP ; en la memoria un
108: LD HL,BINART
109: LD B,8
110: SALTO6: LD A,(IY)
111: BIT 7,A
112: CALL NZ,AJUSTONA
113: BIT 6,A
114: CALL NZ,AJUSTONB
115: INC HL
116: BIT 5,A
117: CALL NZ,AJUSTONA
118: BIT 4,A
119: CALL NZ,AJUSTONB
120: INC HL
121: BIT 3,A
122: CALL NZ,AJUSTONA
123: BIT 2,A
124: CALL NZ,AJUSTONB
125: INC HL
126: BIT 1,A
127: CALL NZ,AJUSTONA
128: BIT 0,A
129: CALL NZ,AJUSTONB
130: INC HL
131: INC IY
132: DJNZ SALTO6
133: HALT
134: AJUSTONA: SET 4,(HL)
135: RET
136: AJUSTONB: SET 0,(HL)
137: RET
138:
139: ORG 2500H
140: TBLAP: DB 41H,42H,43H,4FH,45H,46H,47H,48H,48H,49H,4AH,4BH
141: DB 4DH,4CH,4EH,44H,50H,61H,52H,53H,54H,55H,56H,57H
142: DB 58H,59H,5AH,51H,62H,63H,64H,65H,66H,68H,67H,70H
143: DB 01H,02H,03H,04H,05H,06H,08H,07H,1AH,1CH,2AH,3DH
144: DB 61H,65H,63H,68H,6CH,6AH,2BH,2CH,3FH,4AH,5BH,5CH
145: DB 6EH,75H,7AH,62H,6BH,66H,09H,78H,64H,20H,23H,67H
146: DB 69H,72H,79H,6DH,70H,73H,77H,74H,76H,100,71H,6FH
147: DB 00H,10H,13H,18H,29H,24H,30H,35H,16H,17H,85H,39H
148: DB 98H,84H,22H,7FH
149: LTRSM DS 100
150: VOCLMN DS 100
151: TBLROT DS 100
152: TBLCPL DS 100
153: BINART DS 32
154: VOCALM DB "BCDFGHJKLMNPQRSTVWXYZ$"
155: END
No hay comentarios:
Publicar un comentario