¿Escribir código ensamblador para el sistema de control de semáforo usando 8086?
```asamblea
; Definir direcciones de memoria para el control de semáforos.
TL_RED ecuación 00H
TL_YELLOW ecuación 01H
TL_GREEN ecuación 02H
TL_CONTROL ecuación 03H
; Definir puertos de E/S para el control de semáforos
OUTPUT_PORT ecuación 04H
; Definir valores de retraso
DELAY_TIME ecuación 10000
organización 100H
; El programa principal comienza aquí.
principal:
mov al, TL_RED; Inicializar semáforo a rojo
mov [TL_CONTROL], al
bucle jmp; Saltar al bucle
bucle:
mov al, [TL_CONTROL]; Leer el estado actual del semáforo
cmp al, TL_RED; Comprobar si el semáforo está en rojo
je rojo; Si es rojo, salta al estado rojo.
cmp al, TL_YELLOW; Comprobar si el semáforo está en amarillo
je amarillo; Si es amarillo, salta al estado amarillo.
cmp al, TL_GREEN; Comprobar si el semáforo está en verde
je verde; Si es verde, salta al estado verde
rojo:
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz roja
fuera al, 01H; Enciende la luz roja
retraso de llamada; Retraso de DELAY_TIME milisegundos
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz roja
fuera todo, 00H; Apaga la luz roja
mov al, TL_YELLOW; Establecer el estado del siguiente semáforo en amarillo
mov [TL_CONTROL], al
bucle jmp; Saltar al bucle
amarillo:
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz amarilla
fuera al, 01H; Enciende la luz amarilla
retraso de llamada; Retraso de DELAY_TIME milisegundos
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz amarilla
fuera todo, 00H; Apagar la luz amarilla
mov al, TL_GREEN; Establecer el estado del siguiente semáforo en verde
mov [TL_CONTROL], al
bucle jmp; Saltar al bucle
verde:
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz verde
fuera al, 01H; Enciende la luz verde
retraso de llamada; Retraso de DELAY_TIME milisegundos
móvil, OUTPUT_PORT; Seleccione el puerto de salida para luz verde
fuera todo, 00H; Apaga la luz verde
mov al, TL_RED; Establecer el estado del siguiente semáforo en rojo
mov [TL_CONTROL], al
bucle jmp; Saltar al bucle
demora:
movimiento cx, DELAY_TIME; Inicializar contador por retraso
xor dx, dx; Borrar registro dx
bucle_retardo:
bucle retardo_loop; Bucle hasta que el contador llegue a cero
retirado
- ·¿Esta pregunta agrega valor a Answers.com?
- ·¿Qué es un número de teléfono 0080?
- ·¿Qué sistema de información responde a la rutina sobre las transacciones comerciales?
- ·¿Cómo se puede encontrar el registro de llamadas de cualquier número de mobillink en Pakistán?
- ·¿Cuántos walkie talkies pueden usar la misma frecuencia?
- ·¿Qué significa que el número de teléfono al que intenta comunicarse no está disponible temporalmente revol a2-2?
- ·Cómo restablecer el contestador automático de AT & T 1855 después de un apagón
- ·¿Qué es una llamada en la hora feliz?
- Cómo eliminar mensajes con un contestador automático completo Uniden
- Cómo bloquear llamadas entrantes con un sistema telefónico FairPoint
- ¿Cuál es la antigua forma de enviar correo antes de Internet?
- ¿Qué es la señal de apretón de manos en el microprocesador 8086?
- ¿Cómo abres un mensaje de Mailer-daemon que te han enviado?
- Cómo comprobar correos de voz desde un teléfono externo
