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