viernes, 21 de mayo de 2010

Digitales II – Naranjo – Balanza Digital

Este programa corre en el sistema de desarrollo Z80 que esta en el laboratorio, en aquel entonces estaba operativo no se como estara eso ahorita.

El programa captura los kilos medidos y el precio por kilo y hace el calculo para mostrar el precio a pagar.

   1:          ORG 2000H


   2:          LD SP,3DFFH


   3:  INICIO:        CALL LIMPIAR


   4:          CALL LIMP4


   5:          CALL BORRAR


   6:          LD IX,LINFIJ1


   7:          LD A,1


   8:          CALL ENVIAR_MEN


   9:          LD IX,LINFIJ2


  10:          LD A,2


  11:          CALL ENVIAR_MEN


  12:   


  13:  ; SE PIDEN EL PRECIO POR KILO


  14:          


  15:          LD HL,PREASC


  16:          LD B,5


  17:  NUM:        CALL SCAN


  18:          CP ","


  19:          JP Z,VALI


  20:          CP 30H


  21:          JP C,NUM


  22:          CP 3AH


  23:          JP NC,NUM


  24:  VALI:        LD (HL),A


  25:          INC HL


  26:          LD IX,LINFIJ1


  27:          LD A,1


  28:          CALL ENVIAR_MEN


  29:          DJNZ NUM


  30:   


  31:  ; SE PIDE LA CANTIDAD DE KG


  32:   


  33:          LD B,5


  34:          LD HL,KGASC


  35:  NUM2:        CALL SCAN


  36:          CP ","


  37:          JP Z,VALI2


  38:          CP 30H


  39:          JP C,NUM2


  40:          CP 3AH


  41:          JP NC,NUM2


  42:  VALI2:        LD (HL),A


  43:          INC HL


  44:          LD IX,LINFIJ2


  45:          LD A,2


  46:          CALL ENVIAR_MEN


  47:          DJNZ NUM2


  48:   


  49:  ; CONVIERTO DE ASCII A HEX, ADEMAS SE CUENTAN LA CANTIDAD DE DECIMALES


  50:   


  51:          LD IX,TOTDEC


  52:  ; HL E IY REQUISISTOS DE LA FUNCION BUSQDEC


  53:          LD HL,PREASC


  54:          LD IY,PREHEX


  55:          CALL BUSQDEC


  56:  ; DESPUES LLEVO LOS DATOS A CONDICIONES "CONTROLADAS"


  57:          DEC IY


  58:          LD IX,PREHEX1


  59:          LD B,5


  60:          CALL MOVER


  61:   


  62:          LD IX,TOTDEC


  63:          LD HL,KGASC


  64:          LD IY,KGHEX


  65:          CALL BUSQDEC


  66:          DEC IY


  67:          LD IX,KGHEX1


  68:          LD B,5


  69:          CALL MOVER


  70:   


  71:  ; COMIENZA EL PROCESO DE LA MULTIPLICACION


  72:           


  73:          LD HL,KGHEX1


  74:          INC HL


  75:          INC HL


  76:          INC HL


  77:          LD IX,TOTHEX


  78:          LD IY,PREHEX1


  79:          LD A,(HL)


  80:          CP 0


  81:          JP Z,NOMUL1


  82:          LD B,(HL)


  83:          CALL MULTI


  84:  NOMUL1:        DEC HL


  85:  ; UBICAR PARA REALIZA LA SUMA FINAL


  86:   


  87:          LD IY,TOTHEX


  88:          LD IX,LINEA1


  89:          CALL MOVER1


  90:          CALL LIMP3


  91:          LD IX,TOTHEX


  92:          LD IY,PREHEX1


  93:          LD A,(HL)


  94:          CP 0


  95:          JP Z,NOMUL2


  96:          LD B,(HL)


  97:          CALL MULTI


  98:  NOMUL2:        DEC HL


  99:          LD IY,TOTHEX


 100:          LD IX,LINEA2


 101:          DEC IX


 102:          CALL MOVER1


 103:          CALL LIMP3


 104:          LD IX,TOTHEX


 105:          LD IY,PREHEX1


 106:          LD A,(HL)


 107:          CP 0


 108:          JP Z,NOMUL3


 109:          LD B,(HL)


 110:          CALL MULTI


 111:  NOMUL3:        DEC HL


 112:          LD IY,TOTHEX


 113:          LD IX,LINEA3


 114:          DEC IX


 115:          DEC IX


 116:          CALL MOVER1


 117:          CALL LIMP3


 118:          LD IX,TOTHEX


 119:          LD IY,PREHEX1


 120:          LD A,(HL)


 121:          CP 0


 122:          JP Z,NOMUL4


 123:          LD B,(HL)


 124:          CALL MULTI


 125:  NOMUL4:        DEC HL


 126:          LD IY,TOTHEX


 127:          LD IX,LINEA4


 128:          DEC IX


 129:          DEC IX


 130:          DEC IX


 131:          CALL MOVER1


 132:  ; SE REALIZA LA SUMA TOTAL


 133:   


 134:          LD B,4


 135:          LD IX, LINEAT


 136:          LD IY,LINEA1


 137:   


 138:  RR18:        LD A,(IX+8)


 139:          ADD (IY+7)


 140:          DAA


 141:          PUSH AF


 142:          CP 0AH


 143:          JP NC,ARRB10


 144:          POP AF


 145:  RR10:        LD (IX+8),A


 146:   


 147:          LD A,(IX+7)


 148:          ADC (IY+6)


 149:          DAA


 150:          PUSH AF


 151:          CP 0AH


 152:          JP NC,ARRB11


 153:          POP AF


 154:  RR11:        LD (IX+7),A


 155:   


 156:          LD A,(IX+6)


 157:          ADC (IY+5)


 158:          DAA


 159:          PUSH AF


 160:          CP 0AH


 161:          JP NC,ARRB12


 162:          POP AF


 163:  RR12:        LD (IX+6),A


 164:   


 165:          LD A,(IX+5)


 166:          ADC (IY+4)


 167:          DAA


 168:          PUSH AF


 169:          CP 0AH


 170:          JP NC,ARRB13


 171:          POP AF


 172:  RR13:        LD (IX+5),A


 173:   


 174:          LD A,(IX+4)


 175:          ADC (IY+3)


 176:          DAA


 177:          PUSH AF


 178:          CP 0AH


 179:          JP NC,ARRB14


 180:          POP AF


 181:  RR14:        LD (IX+4),A


 182:   


 183:          LD A,(IX+3)


 184:          ADC (IY+2)


 185:          DAA


 186:          PUSH AF


 187:          CP 0AH


 188:          JP NC,ARRB15


 189:          POP AF


 190:  RR15:        LD (IX+3),A


 191:   


 192:          LD A,(IX+2)


 193:          ADC (IY+1)


 194:          DAA


 195:          PUSH AF


 196:          CP 0AH


 197:          JP NC,ARRB16


 198:          POP AF


 199:  RR16:        LD (IX+2),A


 200:   


 201:          LD A,(IX+1)


 202:          ADC (IY+0)


 203:          DAA


 204:          PUSH AF


 205:          CP 0AH


 206:          JP NC,ARRB17


 207:          POP AF


 208:  RR17:        LD (IX+1),A


 209:          CALL C,CUENTA


 210:          LD DE,8


 211:          ADD IY,DE


 212:          DJNZ RR18A


 213:          JP TRHEAS


 214:  RR18A:        JP RR18


 215:   


 216:   


 217:  ; LLEVAR DE HEX A ASCII


 218:   


 219:  TRHEAS:        LD IY,LINEAT


 220:          LD IX,TOTASC


 221:          LD HL,TOTDEC


 222:          LD B,9


 223:  LAZOC:        LD A,(IY+8)


 224:          ADD 30H


 225:          LD (IX+8),A


 226:          DEC IX


 227:          DEC IY


 228:          DEC (HL)


 229:          LD A,(HL)


 230:          CP 0


 231:          JP NZ,LAZOD


 232:          LD (IX+8),","


 233:          DEC IX


 234:  LAZOD:        DJNZ LAZOC


 235:          LD IX,LINFIJ2


 236:          LD A,2


 237:          CALL ENVIAR_MEN


 238:   


 239:  ; SE PREGUNTA SI SE DESEA SALIR


 240:   


 241:          LD IX,LINFIN


 242:          LD A,4


 243:          CALL ENVIAR_MEN


 244:          CALL SCAN


 245:          CP 1BH


 246:          JP NZ,INICIO


 247:          RST 30H


 248:   


 249:  ARRB1:        POP AF


 250:          AND 0FH


 251:          SCF


 252:          JP RR1


 253:  ARRB2:        POP AF


 254:          AND 0FH


 255:          SCF


 256:          JP RR2


 257:  ARRB3:        POP AF


 258:          AND 0FH


 259:          SCF


 260:          JP RR3


 261:  ARRB4:        POP AF


 262:          AND 0FH


 263:          SCF


 264:          JP RR4


 265:  ARRB10:        POP AF


 266:          AND 0FH


 267:          SCF


 268:          JP RR10


 269:   


 270:  ARRB11:        POP AF


 271:          AND 0FH


 272:          SCF


 273:          JP RR11


 274:   


 275:  ARRB12:        POP AF


 276:          AND 0FH


 277:          SCF


 278:          JP RR12


 279:   


 280:  ARRB13:        POP AF


 281:          AND 0FH


 282:          SCF


 283:          JP RR13


 284:   


 285:  ARRB14:        POP AF


 286:          AND 0FH


 287:          SCF


 288:          JP RR14


 289:   


 290:  ARRB15:        POP AF


 291:          AND 0FH


 292:          SCF


 293:          JP RR15


 294:   


 295:  ARRB16:        POP AF


 296:          AND 0FH


 297:          SCF


 298:          JP RR16


 299:   


 300:  ARRB17:        POP AF


 301:          AND 0FH


 302:          SCF


 303:          JP RR17


 304:   


 305:  CUENTA:        INC (IX)


 306:          RET


 307:   


 308:  LIMP4:        LD IX,3000H


 309:          LD B,150


 310:  LIMP41:        LD (IX),0


 311:          INC IX


 312:          DJNZ LIMP41


 313:          RET


 314:  LIMPIAR:    LD B,5


 315:          LD HL,PREASC


 316:          LD IY,KGASC 


 317:          LD IX,TOTASC


 318:  LIMP1:        LD (HL),20H


 319:          LD (IY),20H


 320:          LD (IX),20H


 321:          INC HL


 322:          INC IX


 323:          INC IY


 324:          DJNZ LIMP1


 325:          LD B,4


 326:  LIMP2:        LD (IX),20H


 327:          INC IX


 328:          DJNZ LIMP2


 329:          RET


 330:  BUSQDEC:    LD A,(HL)


 331:          CP ","


 332:          JP Z,DECIMAL


 333:          AND 0FH


 334:          LD (IY),A


 335:          INC IY


 336:          INC HL


 337:          LD A,(HL)


 338:          CP 20H


 339:          JP NZ,BUSQDEC


 340:          RET


 341:  DECIMAL:    INC HL


 342:          LD A,(HL)


 343:          CP 20H


 344:          JP Z,FDEC


 345:          AND 0FH


 346:          LD (IY),A


 347:          INC IY


 348:          INC (IX)


 349:          JP DECIMAL


 350:  FDEC:        RET


 351:  MOVER:        LD A,(IY)


 352:          LD (IX+3),A


 353:          DEC IY


 354:          DEC IX


 355:          DJNZ MOVER


 356:          RET


 357:  LIMP3:        LD IX,TOTHEX


 358:          LD B,5


 359:  LIMP31:        LD (IX),0


 360:          INC IX


 361:          DJNZ LIMP31


 362:          RET    


 363:  MULTI:        NOP


 364:  LAZOS:        LD A,(IX+4)


 365:          ADD (IY+3)


 366:          DAA


 367:          PUSH AF


 368:          CP 0AH


 369:          JP NC,ARRB1


 370:          POP AF


 371:  RR1:        LD (IX+4),A


 372:          LD A,(IX+3)


 373:          ADC (IY+2)


 374:          DAA


 375:          PUSH AF


 376:          CP 0AH


 377:          JP NC,ARRB2


 378:          POP AF


 379:  RR2:        LD (IX+3),A


 380:          LD A,(IX+2)


 381:          ADC (IY+1)


 382:          DAA


 383:          PUSH AF


 384:          CP 0AH


 385:          JP NC,ARRB3


 386:          POP AF


 387:  RR3:        LD (IX+2),A


 388:          LD A,(IX+1)


 389:          ADC (IY)


 390:          DAA


 391:          PUSH AF


 392:          CP 0AH


 393:          JP NC,ARRB4


 394:          POP AF


 395:  RR4:        LD (IX+1),A


 396:          CALL C,CUENTA


 397:          DJNZ LAZOS


 398:          RET


 399:  MOVER1:        LD B,5


 400:  MOVER11:    LD A,(IY+4)


 401:          LD (IX+7),A


 402:          DEC IX


 403:          DEC IY


 404:          DJNZ MOVER11


 405:          RET


 406:   


 407:  LINFIJ1        DB " PRODUCTO   "


 408:          DB "                            "


 409:  LINPRE        DB "COSTO/ KILO     "


 410:  PREASC        DB "       Bs.$"


 411:   


 412:  LINFIJ2        DB " CANTIDAD EN KILOS   "


 413:  KGASC        DB "        "


 414:          DB "        COSTO   "


 415:  TOTASC         DB "                    Bs.$"


 416:   


 417:  LINFIN        DB " !!!!! PRESIONE ESC PARA SALIR !!!!!$"


 418:  SCAN        RET ;EQU 04F1H


 419:  ENVIAR_MEN    RET ;EQU 052BH


 420:  BORRAR        RET ;EQU 055CH    


 421:   


 422:          ORG 3000H


 423:          DB 0,0,0,0


 424:  KGHEX        DB 0,0,0,0


 425:          DB 0,0,0,0


 426:  PREHEX        DB 0,0,0,0


 427:          DB 0,0,0


 428:  KGHEX1        DB 0,0,0,0


 429:  PREHEX1        DB 0,0,0,0


 430:  TOTHEX        DB 0,0,0,0,0


 431:  LINEA1        DB 0,0,0,0,0,0,0,0


 432:  LINEA2        DB 0,0,0,0,0,0,0,0


 433:  LINEA3        DB 0,0,0,0,0,0,0,0


 434:  LINEA4        DB 0,0,0,0,0,0,0,0


 435:  LINEAT        DB 0,0,0,0,0,0,0,0,0


 436:  TOTDEC        DB 0


 437:          END


No hay comentarios:

Publicar un comentario