>> Électroniques Technologie >  >> téléphones >> Répondeurs

Écrire le code d'assemblage pour le système de contrôle des feux de circulation en utilisant 8086 ?

```assemblage

; 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é

Répondeurs