Написать ассемблерный код системы управления светофором, используя 8086?
; Определить адреса памяти для управления светофором
TL_RED эквивалент 00H
TL_YELLOW экв 01H
TL_GREEN экв 02H
TL_CONTROL equ 03H
; Определите порты ввода-вывода для управления светофором
OUTPUT_PORT экв 04H
; Определите значения задержки
DELAY_TIME экв. 10 000
орг 100H
; Основная программа начинается здесь
основной:
mov al, TL_RED; Инициализировать светофор на красный
mov [TL_CONTROL], аль
цикл JMP; Перейти в цикл
петля:
mov al, [TL_CONTROL]; Чтение текущего статуса светофора
cmp al, TL_RED; Проверьте, горит ли светофор красным
я красный; Если красный, перейдите в красное состояние.
cmp al, TL_YELLOW; Проверьте, горит ли светофор желтым
я желтый; Если желтый, перейдите в желтое состояние.
cmp al, TL_GREEN; Проверьте, горит ли светофор зеленым
я зеленый; Если зеленый, перейдите в зеленое состояние.
красный:
mov al, OUTPUT_PORT; Выберите выходной порт для красного света
выходной, 01H; Включи красный свет
задержка звонка; Задержка на DELAY_TIME миллисекунд.
mov al, OUTPUT_PORT; Выберите выходной порт для красного света
выходной, 00H; Выключи красный свет
mov al, TL_YELLOW; Установите статус следующего светофора на желтый
mov [TL_CONTROL], аль
цикл JMP; Перейти в цикл
желтый:
mov al, OUTPUT_PORT; Выберите выходной порт для желтого света
выходной, 01H; Включи желтый свет
задержка звонка; Задержка на DELAY_TIME миллисекунд.
mov al, OUTPUT_PORT; Выберите выходной порт для желтого света
выходной, 00H; Выключи желтый свет
mov al, TL_GREEN; Установить статус следующего светофора на зеленый
mov [TL_CONTROL], аль
цикл JMP; Перейти в цикл
зеленый:
mov al, OUTPUT_PORT; Выберите выходной порт для зеленого света
выходной, 01H; Включи зеленый свет
задержка звонка; Задержка на DELAY_TIME миллисекунд.
mov al, OUTPUT_PORT; Выберите выходной порт для зеленого света
выходной, 00H; Выключите зеленый свет
mov al, TL_RED; Установить следующий статус светофора на красный
mov [TL_CONTROL], аль
цикл JMP; Перейти в цикл
задерживать:
mov cx, DELAY_TIME; Инициализировать счетчик задержки
xили dx, dx; Очистить регистр dx
задержка_петля:
цикл задержки_петли; Цикл, пока счетчик не достигнет нуля
в отставку