Este programa emula el comportamiento de un ascensor, no tengo el enunciado pero el movimiento del mismo depende del modo seleccionado. Si mal no recuerdo era estacionamiento macanico pero no estoy 100% seguro de eso.
1: ORG 2000H 2: LD SP,3DFFH 3: LD A,00001111B 4: OUT (CA),A 5: LD A,11001111B 6: OUT (CB),A 7: LD A,00000111B 8: OUT (CB),A 9: LD IX,CONT10: PUERTO: IN A,(PB)
11: BIT 2,A 12: JP NZ,ENTRAR 13: BIT 1,A 14: JP NZ,SALIR 15: JP PUERTO 16: ENTRAR: LD HL,PUESTOS 17: LD A,01000000B 18: OUT (PA),A19: AQUI: IN A,(PB)
20: BIT 2,A 21: JP NZ,AQUI 22: LD A,0 23: OUT (PA),A 24: LD D,38H 25: AQUI1: LD A,0 26: CP (HL) 27: JP Z,VACIO 28: INC HL 29: DEC D 30: LD A,D 31: CP 0 32: JP Z,LLENO33: AND 0FH
34: CP 0 35: JP NZ,AQUI1 36: LD A,D37: SUB 08
38: LD D,A 39: JP AQUI1 40: LLENO: LD A,(PB)41: SET 3,A
42: OUT (PB),A 43: JP AQUI8 44: VACIO: LD A,D45: AND 0FH
46: LD C,A 47: LD A,D48: AND 0F0H
49: RRCA 50: RRCA 51: RRCA 52: RRCA 53: LD B,A 54: LD (HL),24H 55: DEC (IX) 56: PUSH BC 57: DEC C 58: LD A,C 59: OUT (PA),A 60: POP BC 61: PUSH BC62: AQUI2: CALL IZQUIERDA
63: DEC C 64: JP NZ,AQUI265: CALL APAGAR
66: AQUI3: IN A,(PB)
67: BIT 0,A 68: JP Z,AQUI369: AQUI4: CALL SUBIR
70: DJNZ AQUI471: CALL AVANZAR
72: CALL APAGAR
73: AQUI5: IN A,(PB)
74: BIT 0,A 75: JP NZ,AQUI576: CALL RETROCEDER
77: POP BC78: AQUI6: CALL DERECHA
79: DEC C 80: JP NZ,AQUI681: AQUI7: CALL ABAJO
82: DJNZ AQUI783: CALL APAGAR
84: LD A,(IX) 85: CP 0 86: JP NZ,PUERTO87: IN A,(PB)
88: SET 3,A
89: OUT (PB),A90: AQUI8: IN A,(PB)
91: BIT 1,A 92: JP Z,AQUI8 93: SALIR: LD HL,PUESTOS 94: LD IY,DESPLAZA 95: LD B,32 96: LD A,0 97: AQUI10: NOP 98: NOP 99: NOP 100: CP 0 101: JP Z,AQUI10 102: AQUI12: CP (IY) 103: JP Z,AQUI11 104: INC IY 105: INC IY 106: DJNZ AQUI12 107: JP SALIR 108: AQUI11: LD B,(IY+1) 109: LD A,B 110: CP 0 111: JP Z,AQUI22 112: AQUI13: INC HL 113: DJNZ AQUI13 114: AQUI22: LD A,(IY) 115: LD D,A 116: LD A,(HL) 117: CP 24H 118: JP NZ,PUERTO 119: LD A,D120: AND 0FH
121: LD C,A 122: LD A,D123: AND 0F0H
124: RLCA 125: RLCA 126: RLCA 127: RLCA 128: LD B,A 129: PUSH BC130: AQUI14: CALL SUBIR
131: DJNZ AQUI14 132: LD B,C133: AQUI15: CALL IZQUIERDA
134: DJNZ AQUI15135: CALL AVANZAR
136: CALL APAGAR
137: AQUI16: IN A,(PB)
138: BIT 0,A 139: JP Z,AQUI16 140: LD (HL),0 141: INC (IX)142: CALL RETROCEDER
143: POP BC144: AQUI17: CALL ABAJO
145: DJNZ AQUI17146: CALL APAGAR
147: AQUI18: IN A,(PB)
148: BIT 0,A 149: JP NZ,AQUI18 150: LD B,C151: AQUI19: CALL DERECHA
152: DJNZ AQUI19153: CALL APAGAR
154: AQUI20: IN A,(PB)
155: BIT 1,A 156: JP Z,AQUI20157: IN A,(PA)
158: SET 7,A
159: OUT (PA),A160: AQUI21: IN A,(PB)
161: BIT 1,A 162: JP NZ,AQUI21 163: LD A,0 164: OUT (PA),A 165: RES 3,A 166: OUT (PB),A 167: JP PUERTO 168: APAGAR: LD A,0 169: OUT (PA),A 170: RET 171: AVANZAR: LD A,00001000B 172: OUT (PA),A 173: RET 174: RETROCEDER: LD A,00010000B 175: OUT (PA),A 176: RET 177: IZQUIERDA: LD A,00011000B 178: OUT (PA),A 179: RET 180: DERECHA: LD A,00100000B 181: OUT (PA),A 182: RET 183: SUBIR: LD A,00101000B 184: OUT (PA),A 185: RET 186: ABAJO: LD A,00110000B 187: OUT (PA),A 188: RET 189: 190: ORG 1000H 191: PUESTOS DS 32 192: DESPLAZA DB 01H,31,02H,30,03H,29,04H,28,05H,27,06H,26,07H,25,08H,24 193: DB 11H,23,12H,22,13H,21,14H,20,15H,19,16H,18,17H,17,18H,16 194: DB 21H,15,22H,14,23H,13,24H,12,25H,11,26H,10,27H,09,28H,08 195: DB 31H,07,32H,06,33H,05,34H,04,35H,03,36H,02,37H,01,38H,00 196: CONT DB 32 197: PA EQU 04H 198: PB EQU 05H 199: CA EQU 06H 200: CB EQU 07H 201: END
No hay comentarios:
Publicar un comentario