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 CLEAN213: CALL CLS
14: LD IX,MEN 15: LD A,116: CALL SMS
17: LD B,12 18: LD IY,TABLA119: ERROR: CALL SCAN
20: CALL VERIFI
21: LD (IY),A 22: INC IY 23: LD (IY),24H24: 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),24H32: CALL MOSTRAR
33: DJNZ ERROR
34: CALL SCAN
35: M1: CALL CLS
36: LD IX,MENU1 37: LD A,138: CALL SMS
39: LD IX,OPC1 40: LD A,241: CALL SMS
42: LD IX,OPC2 43: LD A,344: CALL SMS
45: LD IX,OPC3 46: LD A,447: 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,260: CALL SMS
61: RET 62: VERIFI: LD H,A63: SUB A,2FH
64: JP C,ERROR
65: LD A,H66: SUB A,3AH
67: JP NC,ERROR
68: LD A,H 69: RET70: MEOPC1: CALL CLS
71: LD IX,MENU2 72: LD A,0173: CALL SMS
74: LD IX,OPC11 75: LD A,0276: CALL SMS
77: LD IX,OPC12 78: LD A,0379: CALL SMS
80: LD IX,OPC13 81: LD A,0482: 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,395: 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,SALTO116: 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,3139: 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 TIMP145: MEOPC2: CALL CLS
146: LD IY,TABLA1 147: LD HL,TIMP 148: LD B,12 149: PAVE: LD A,(IY+1) 150: BIT 0,A151: CALL NZ,IMPAR
152: INC IY 153: INC IY 154: INC IY 155: DJNZ PAVE 156: LD IX,TIMP 157: LD A,1158: CALL SMS
159: CALL C2
160: LD IX,TNASC 161: LD A,3162: 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,A190: 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 AQUI2203: 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,A230: AND 0F0H
231: RRC A 232: RRC A 233: RRC A 234: RRC A 235: LD D,A236: SUB 10
237: JP NC,LETB1 238: LD A,D239: OR 30H
240: BACK1: LD (HL),A 241: INC HL 242: LD A,E243: AND 0FH
244: LD D,A245: SUB 10
246: JP NC,LETB2 247: LD A,D248: 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 24H280: 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