Este programa emula el comportamiento de un cajero automatico, utiliza el sistema de desarrollo que esta(ba)? en el laboratorio de la universidad.
1: ORG 2000H 2: LD SP,3DFFH3: AQUI: CALL BORRAR_PAN
4: 5: LD IX,LINEA1 6: LD A,17: CALL ENVIAR_MEN
8: 9: LD IX,LINEA2 10: LD A,211: CALL ENVIAR_MEN
12: 13: LD IX,LINEA3 14: LD A,315: CALL ENVIAR_MEN
16: 17: LD IX,LINEA4 18: LD A,419: CALL ENVIAR_MEN
20: 21: ESPERAR: CALL SCAN
22: CP "1"
23: JR Z,LISTA24: CP "2"
25: JP Z,DEP26: CP "3"
27: JP Z,RETIR28: CP "4"
29: JR Z,SALIR 30: JP ESPERAR31: SALIR: CALL BORRAR_PAN
32: RST 30H33: LISTA: CALL BORRAR_PAN
34: LD IX,REG1 35: LD A,136: CALL ENVIAR_MEN
37: 38: LD IX,REG2 39: LD A,240: CALL ENVIAR_MEN
41: 42: LD IX,REG3 43: LD A,344: CALL ENVIAR_MEN
45: 46: LD IX,REG4 47: LD A,448: CALL ENVIAR_MEN
49: CALL SCAN
50: CALL BORRAR_PAN
51: 52: LD IX,REG5 53: LD A,154: CALL ENVIAR_MEN
55: 56: LD IX,REG6 57: LD A,258: CALL ENVIAR_MEN
59: 60: LD IX,REG7 61: LD A,362: CALL ENVIAR_MEN
63: 64: LD IX,REG8 65: LD A,466: CALL ENVIAR_MEN
67: CALL SCAN
68: CALL BORRAR_PAN
69: 70: LD IX,REG9 71: LD A,172: CALL ENVIAR_MEN
73: 74: LD IX,REG10 75: LD A,276: CALL ENVIAR_MEN
77: CALL SCAN
78: CALL BORRAR_PAN
79: JP AQUI 80: 81: DEP: 82: CALL BORRAR_PAN
83: LD IX,LINEA5 84: LD A,185: CALL ENVIAR_MEN
86: 87: LD IY,CEDULA 88: LD B,889: DEP1: CALL NUMERO
90: 91: LD IX,CEDULA 92: LD A,393: CALL ENVIAR_MEN
94: DJNZ DEP1 95: 96: LD IX,REG0 97: LD IY,CEDULA98: CALL COMPARA
99: LD A,B 100: CP 0 101: JP Z,AQUI 102: 103: PUSH IX 104: 105: LD DE,48 106: ADD IX,DE 107: LD ,B,8 108: LD IY,SALDO109: CALL BCD
110: POP DE 111: 112: CALL BORRAR_PAN
113: LD IX,LINEA6 114: LD A,1115: CALL ENVIAR_MEN
116: 117: LD IY,MONTO 118: LD B,8119: DEP2: CALL NUMERO
120: 121: LD IX,MONTO 122: LD A,3123: CALL ENVIAR_MEN
124: DJNZ DEP2 125: 126: LD B,8 127: LD IX,MONTO 128: LD IY,MONTO129: CALL BCD
130: 131: CALL SUMA
132: 133: ;PUSH DE 134: 135: PUSH DE 136: POP IY 137: LD DE,48 138: ADD IY,DE 139: LD IX,MONTO 140: LD B,8141: CALL ASCII
142: 143: CALL BORRAR_PAN
144: LD IX,LINEA7 145: LD A,3146: CALL ENVIAR_MEN
147: CALL SCAN
148: JP AQUI 149: 150: 151: RETIR:152: CALL BORRAR_PAN
153: LD IX,LINEA5 154: LD A,1155: CALL ENVIAR_MEN
156: 157: LD IY,CEDULA 158: LD B,8159: RETIR1: CALL NUMERO
160: 161: LD IX,CEDULA 162: LD A,3163: CALL ENVIAR_MEN
164: DJNZ RETIR1 165: 166: LD IX,REG0 167: LD IY,CEDULA168: CALL COMPARA
169: LD A,B 170: CP 0 171: JP Z,AQUI 172: 173: PUSH IX 174: 175: LD DE,48 176: ADD IX,DE 177: LD ,B,8 178: LD IY,SALDO179: CALL BCD
180: POP DE 181: 182: CALL BORRAR_PAN
183: LD IX,LINEA6 184: LD A,1185: CALL ENVIAR_MEN
186: 187: LD IY,MONTO 188: LD B,8189: RETIR2: CALL NUMERO
190: 191: LD IX,MONTO 192: LD A,3193: CALL ENVIAR_MEN
194: DJNZ RETIR2 195: 196: LD B,8 197: LD IX,MONTO 198: LD IY,MONTO199: CALL BCD
200: 201: CALL RESTA
202: 203: ;PUSH DE 204: 205: PUSH DE 206: POP IY 207: LD DE,48 208: ADD IY,DE 209: LD IX,MONTO 210: LD B,8211: CALL ASCII
212: 213: CALL BORRAR_PAN
214: LD IX,LINEA7 215: LD A,3216: CALL ENVIAR_MEN
217: CALL SCAN
218: JP AQUI 219: 220: 221: NUMERO: ; REQUIERE DE IY222: CALL SCAN
223: CP 30H 224: JP C,NUMERO 225: CP 3AH 226: JP NC,NUMERO227: CALL ROTAR
228: RET 229: 230: ROTAR: 231: LD C,(IY) 232: LD (IY-1),C 233: LD C,(IY+1) 234: LD (IY+0),C 235: LD C,(IY+2) 236: LD (IY+1),C 237: LD C,(IY+3) 238: LD (IY+2),C 239: LD C,(IY+4) 240: LD (IY+3),C 241: LD C,(IY+5) 242: LD (IY+4),C 243: LD C,(IY+6) 244: LD (IY+5),C 245: LD C,(IY+7) 246: LD (IY+6),C 247: LD (IY+7),A 248: RET 249: 250: BCD: LD A,(IX)251: AND 0FH
252: LD (IY),A 253: INC IY 254: INC IX 255: DJNZ BCD 256: RET 257: 258: ASCII: LD A,(IX) 259: ADD 30H 260: LD (IY),A 261: INC IY 262: INC IX 263: DJNZ ASCII 264: RET 265: 266: 267: COMPARA: LD B,10 268: LD DE,57 269: OTROR2: LD A,(IY) 270: CP (IX) 271: JP NZ,OTROR 272: 273: LD A,(IY+1) 274: CP (IX+1) 275: JP NZ,OTROR 276: 277: LD A,(IY+2) 278: CP (IX+2) 279: JP NZ,OTROR 280: 281: LD A,(IY+3) 282: CP (IX+3) 283: JP NZ,OTROR 284: 285: LD A,(IY+4) 286: CP (IX+4) 287: JP NZ,OTROR 288: 289: LD A,(IY+5) 290: CP (IX+5) 291: JP NZ,OTROR 292: 293: LD A,(IY+6) 294: CP (IX+6) 295: JP NZ,OTROR 296: 297: LD A,(IY+7) 298: CP (IX+7) 299: JP NZ,OTROR 300: 301: RET 302: OTROR: ADD IX,DE 303: DJNZ OTROR2304: LD IX,ERROR
305: LD A,2306: CALL ENVIAR_MEN
307: CALL SCAN
308: RET 309: 310: SUMA: 311: LD IY,MONTO 312: LD IX,SALDO 313: LD HL,CONTADOR 314: LD (HL),8315: LOOP: LD A,(IY+7)
316: ADD (IX+7) 317: DAA 318: CP 0AH 319: JP C,COPIO 320: INC (IX+6)321: AND 0FH
322: COPIO: LD (IX+7),A 323: DEC IX 324: DEC IY 325: DEC (HL) 326: LD A,(HL) 327: CP 0328: JP NZ,LOOP
329: 330: RET 331: 332: RESTA: 333: LD IY,MONTO 334: LD IX,SALDO 335: LD HL,CONTADOR 336: LD (HL),8 337: LOOP2: LD A,(IY+7)338: SUB (IX+7)
339: JP NC,COPIO2 340: DEC (IY+6) 341: LD A,(IY+6) 342: CP 0 343: JP NC, NADA 344: LD (IY+6),9 345: NADA: LD A,(IY+7) 346: ADD 10347: SUB (IX+7)
348: COPIO2: LD (IX+7),A 349: DEC IX 350: DEC IY 351: DEC (HL) 352: LD A,(HL) 353: CP 0 354: JP NZ,LOOP2 355: 356: RET 357: 358: 359: ORG 2500H360: LINEA1 DB " 1. MOSTRAR LISTADO$"
361: LINEA2 DB " 2. DEPOSITO$"
362: LINEA3 DB " 3. RETIRO$"
363: LINEA4 DB " 4. SALIR$"
364: ERROR DB " LA CEDULA INGRESADA NO ESTA REGISTRADA$"
365: LINEA5 DB " ******INTRODUCE NUMERO DE CEDULA ******$"
366: DB " "
367: CEDULA DS 8 368: DB 24H369: LINEA6 DB " ****** INTRODUCE MONTO ****** $"
370: DB " "
371: MONTO DS 8 372: DB 24H373: LINEA7 DB " ****** TRANSACCION REALIZADA ****** $"
374: 375: REG1 DS 56 376: DB 24H 377: REG2 DS 56 378: DB 24H 379: REG3 DS 56 380: DB 24H 381: REG4 DS 56 382: DB 24H 383: REG5 DS 56 384: DB 24H 385: REG6 DS 56 386: DB 24H 387: REG7 DS 56 388: DB 24H 389: REG8 DS 56 390: DB 24H 391: REG9 DS 56 392: DB 24H 393: REG10 DS 56 394: DB 24H 395: 396: SALDO DS 8 397: CONTADOR DB 0 398: DB 0 399: 400: 401: SCAN RET ; EQU 04F1H 402: ENVIAR_MEN RET ; EQU 052BH 403: BORRAR_PAN RET ; EQU 055CH 404: 405: END
No hay comentarios:
Publicar un comentario