Écrire le code d'assemblage pour le système de contrôle des feux de circulation en utilisant 8086 ?
; Définir des adresses mémoire pour le contrôle des feux de circulation
TL_RED équ 00H
TL_YELLOW équivalence 01H
TL_GREEN équ 02H
TL_CONTROL équ 03H
; Définir les ports d'E/S pour le contrôle des feux de circulation
OUTPUT_PORT équ 04H
; Définir les valeurs de retard
DELAY_TIME équivaut à 10 000
org 100H
; Le programme principal commence ici
principal:
déplacement, TL_RED; Initialiser le feu de signalisation au rouge
mov [TL_CONTROL], al
boucle jmp; Passer à la boucle
boucle:
déplacement, [TL_CONTROL]; Lire l'état actuel des feux de circulation
cmp al, TL_RED; Vérifiez si le feu de circulation est rouge
je suis rouge; Si rouge, passez à l'état rouge
cmp al, TL_YELLOW; Vérifiez si le feu de circulation est jaune
je suis jaune; Si jaune, passez à l'état jaune
cmp al, TL_GREEN; Vérifiez si le feu de circulation est vert
je suis vert; Si vert, passez à l'état vert
rouge:
mobile, OUTPUT_PORT; Sélectionnez le port de sortie pour la lumière rouge
sortie al, 01H; Allumez la lumière rouge
retard d'appel; Délai de DELAY_TIME millisecondes
mobile, OUTPUT_PORT; Sélectionnez le port de sortie pour la lumière rouge
sortie al, 00H; Éteignez la lumière rouge
déplacement, TL_YELLOW; Définir l'état du prochain feu de circulation sur jaune
mov [TL_CONTROL], al
boucle jmp; Passer à la boucle
jaune:
mobile, OUTPUT_PORT; Sélectionnez le port de sortie pour la lumière jaune
sortie al, 01H; Allumez la lumière jaune
retard d'appel; Délai de DELAY_TIME millisecondes
mobile, OUTPUT_PORT; Sélectionnez le port de sortie pour la lumière jaune
sortie al, 00H; Éteignez la lumière jaune
déplacement, TL_GREEN; Définir l'état du prochain feu de circulation sur vert
mov [TL_CONTROL], al
boucle jmp; Passer à la boucle
vert:
mobile, OUTPUT_PORT; Sélectionnez le port de sortie pour le feu vert
sortie al, 01H; Allumez le feu vert
retard d'appel; Délai de DELAY_TIME millisecondes
mobile, OUTPUT_PORT ; Sélectionnez le port de sortie pour le feu vert
sortie al, 00H; Éteignez le feu vert
déplacement, TL_RED; Définir l'état du prochain feu de circulation sur rouge
mov [TL_CONTROL], al
boucle jmp; Passer à la boucle
retard:
déplacement cx, DELAY_TIME ; Initialiser le compteur pour le retard
xor dx, dx; Effacer le registre dx
delay_loop :
boucle delay_loop; Boucle jusqu'à ce que le compteur atteigne zéro
retraité