viernes, 21 de mayo de 2010

Digitales II – Prof. Ochoa – Cajero Automático

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,3DFFH


   3:  AQUI:        CALL BORRAR_PAN


   4:   


   5:          LD IX,LINEA1


   6:          LD A,1


   7:          CALL ENVIAR_MEN


   8:   


   9:          LD IX,LINEA2


  10:          LD A,2


  11:          CALL ENVIAR_MEN


  12:   


  13:          LD IX,LINEA3


  14:          LD A,3


  15:          CALL ENVIAR_MEN


  16:   


  17:          LD IX,LINEA4


  18:          LD A,4


  19:          CALL ENVIAR_MEN


  20:   


  21:  ESPERAR:        CALL SCAN


  22:          CP "1"


  23:          JR Z,LISTA


  24:          CP "2"


  25:          JP Z,DEP


  26:          CP "3"


  27:          JP Z,RETIR


  28:          CP "4"


  29:          JR Z,SALIR


  30:          JP ESPERAR


  31:  SALIR:        CALL BORRAR_PAN


  32:          RST 30H


  33:  LISTA:        CALL BORRAR_PAN


  34:          LD IX,REG1


  35:          LD A,1


  36:          CALL ENVIAR_MEN


  37:   


  38:          LD IX,REG2


  39:          LD A,2


  40:          CALL ENVIAR_MEN


  41:   


  42:          LD IX,REG3


  43:          LD A,3


  44:          CALL ENVIAR_MEN


  45:   


  46:          LD IX,REG4


  47:          LD A,4


  48:          CALL ENVIAR_MEN


  49:          CALL SCAN


  50:          CALL BORRAR_PAN


  51:   


  52:          LD IX,REG5


  53:          LD A,1


  54:          CALL ENVIAR_MEN


  55:   


  56:          LD IX,REG6


  57:          LD A,2


  58:          CALL ENVIAR_MEN


  59:   


  60:          LD IX,REG7


  61:          LD A,3


  62:          CALL ENVIAR_MEN


  63:   


  64:          LD IX,REG8


  65:          LD A,4


  66:          CALL ENVIAR_MEN


  67:          CALL SCAN


  68:          CALL BORRAR_PAN


  69:   


  70:          LD IX,REG9


  71:          LD A,1


  72:          CALL ENVIAR_MEN


  73:   


  74:          LD IX,REG10


  75:          LD A,2


  76:          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,1


  85:          CALL ENVIAR_MEN


  86:   


  87:          LD IY,CEDULA


  88:          LD B,8


  89:  DEP1:        CALL NUMERO


  90:          


  91:          LD IX,CEDULA


  92:          LD A,3


  93:          CALL ENVIAR_MEN        


  94:          DJNZ DEP1


  95:   


  96:          LD IX,REG0


  97:          LD IY,CEDULA


  98:          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,SALDO


 109:          CALL BCD


 110:          POP DE


 111:   


 112:          CALL BORRAR_PAN


 113:          LD IX,LINEA6


 114:          LD A,1


 115:          CALL ENVIAR_MEN


 116:      


 117:          LD IY,MONTO


 118:          LD B,8


 119:  DEP2:        CALL NUMERO


 120:   


 121:          LD IX,MONTO


 122:          LD A,3


 123:          CALL ENVIAR_MEN


 124:          DJNZ  DEP2


 125:   


 126:          LD B,8


 127:          LD IX,MONTO


 128:          LD IY,MONTO


 129:          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,8


 141:          CALL ASCII


 142:   


 143:          CALL BORRAR_PAN


 144:          LD IX,LINEA7


 145:          LD A,3


 146:          CALL ENVIAR_MEN


 147:          CALL SCAN


 148:          JP AQUI


 149:          


 150:   


 151:  RETIR:


 152:          CALL BORRAR_PAN


 153:          LD IX,LINEA5


 154:          LD A,1


 155:          CALL ENVIAR_MEN


 156:   


 157:          LD IY,CEDULA


 158:          LD B,8


 159:  RETIR1:        CALL NUMERO


 160:          


 161:          LD IX,CEDULA


 162:          LD A,3


 163:          CALL ENVIAR_MEN        


 164:          DJNZ RETIR1


 165:   


 166:          LD IX,REG0


 167:          LD IY,CEDULA


 168:          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,SALDO


 179:          CALL BCD


 180:          POP DE


 181:   


 182:          CALL BORRAR_PAN


 183:          LD IX,LINEA6


 184:          LD A,1


 185:          CALL ENVIAR_MEN


 186:      


 187:          LD IY,MONTO


 188:          LD B,8


 189:  RETIR2:        CALL NUMERO


 190:   


 191:          LD IX,MONTO


 192:          LD A,3


 193:          CALL ENVIAR_MEN


 194:          DJNZ  RETIR2


 195:   


 196:          LD B,8


 197:          LD IX,MONTO


 198:          LD IY,MONTO


 199:          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,8


 211:          CALL ASCII


 212:   


 213:          CALL BORRAR_PAN


 214:          LD IX,LINEA7


 215:          LD A,3


 216:          CALL ENVIAR_MEN


 217:          CALL SCAN


 218:          JP AQUI


 219:   


 220:   


 221:  NUMERO:        ; REQUIERE DE IY


 222:          CALL SCAN     


 223:          CP 30H


 224:          JP C,NUMERO


 225:          CP 3AH


 226:          JP NC,NUMERO


 227:          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 OTROR2


 304:          LD IX,ERROR


 305:          LD A,2


 306:          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),8


 315:  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 0


 328:          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 10


 347:          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 2500H


 360:  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 24H


 369:  LINEA6        DB "        ****** INTRODUCE MONTO ****** $"


 370:          DB "                                                       "


 371:  MONTO        DS 8


 372:          DB 24H


 373:  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