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,10011: SALTO: LD DE,"AZ"
12: INC E 13: LD A,(IY) 14: CP D 15: JP C,JMP2 16: CP E17: JP C,NEXT
18: NEXT1: LD DE,"az"
19: INC E 20: CP D 21: JP C,JMP2 22: CP E23: JP C,NEXT
24: LD D,164 25: LD E,165 26: CP D 27: JP C,JMP2 28: CP E29: 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 80H45: 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: RET54: ; 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 ordenados91: 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 20H100: CALL COPIAR
101: RET 102: 103: ; se comprueba el estado de los bits, uno por uno, si el bit104: ; 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,A112: CALL NZ,AJUSTONA
113: BIT 6,A 114: CALL NZ,AJUSTONB
115: INC HL 116: BIT 5,A117: CALL NZ,AJUSTONA
118: BIT 4,A119: CALL NZ,AJUSTONB
120: INC HL 121: BIT 3,A 122: CALL NZ,AJUSTONA
123: BIT 2,A124: CALL NZ,AJUSTONB
125: INC HL 126: BIT 1,A127: CALL NZ,AJUSTONA
128: BIT 0,A129: CALL NZ,AJUSTONB
130: INC HL 131: INC IY 132: DJNZ SALTO6 133: HALT134: AJUSTONA: SET 4,(HL)
135: RET136: 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 32154: VOCALM DB "BCDFGHJKLMNPQRSTVWXYZ$"
155: END
No hay comentarios:
Publicar un comentario