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