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,3DFFH3: INICIO: CALL LIMPIAR
4: CALL LIMP4
5: CALL BORRAR
6: LD IX,LINFIJ1 7: LD A,18: CALL ENVIAR_MEN
9: LD IX,LINFIJ2 10: LD A,211: CALL ENVIAR_MEN
12: 13: ; SE PIDEN EL PRECIO POR KILO 14: 15: LD HL,PREASC 16: LD B,517: 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,128: CALL ENVIAR_MEN
29: DJNZ NUM 30: 31: ; SE PIDE LA CANTIDAD DE KG 32: 33: LD B,5 34: LD HL,KGASC35: 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,246: 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,PREHEX55: CALL BUSQDEC
56: ; DESPUES LLEVO LOS DATOS A CONDICIONES "CONTROLADAS"
57: DEC IY 58: LD IX,PREHEX1 59: LD B,560: CALL MOVER
61: 62: LD IX,TOTDEC 63: LD HL,KGASC 64: LD IY,KGHEX65: CALL BUSQDEC
66: DEC IY 67: LD IX,KGHEX1 68: LD B,569: 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,LINEA189: 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 IX102: 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 IX116: 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 IX131: 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),A209: 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,LAZOD232: LD (IX+8),","
233: DEC IX 234: LAZOD: DJNZ LAZOC 235: LD IX,LINFIJ2 236: LD A,2237: CALL ENVIAR_MEN
238: 239: ; SE PREGUNTA SI SE DESEA SALIR 240: 241: LD IX,LINFIN 242: LD A,4243: CALL ENVIAR_MEN
244: CALL SCAN
245: CP 1BH 246: JP NZ,INICIO 247: RST 30H 248: 249: ARRB1: POP AF250: AND 0FH
251: SCF 252: JP RR1 253: ARRB2: POP AF254: AND 0FH
255: SCF 256: JP RR2 257: ARRB3: POP AF258: AND 0FH
259: SCF 260: JP RR3 261: ARRB4: POP AF262: AND 0FH
263: SCF 264: JP RR4 265: ARRB10: POP AF266: AND 0FH
267: SCF 268: JP RR10 269: 270: ARRB11: POP AF271: AND 0FH
272: SCF 273: JP RR11 274: 275: ARRB12: POP AF276: AND 0FH
277: SCF 278: JP RR12 279: 280: ARRB13: POP AF281: AND 0FH
282: SCF 283: JP RR13 284: 285: ARRB14: POP AF286: AND 0FH
287: SCF 288: JP RR14 289: 290: ARRB15: POP AF291: AND 0FH
292: SCF 293: JP RR15 294: 295: ARRB16: POP AF296: AND 0FH
297: SCF 298: JP RR16 299: 300: ARRB17: POP AF301: 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: RET341: DECIMAL: INC HL
342: LD A,(HL) 343: CP 20H 344: JP Z,FDEC345: 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),A396: 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