« Programmation Assembleur Z80/Jeu d instructions » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎comparaison 16 bits : or A plutôt que xor
→‎EI : détail à propos de l'instruction
Ligne 680 :
Cette instruction désactive toutes les interruptions masquables.
==== EI ====
Cette instruction active le déclenchement des interruptions après l'instruction suivante. La précision à propos de l'instruction suivante est importante. En effet, lorsqu'une routine appelée par interruption se termine, il faut autoriser à nouveau les interruptions (sinon elles ne se déclencheront plus).
Cette instruction active le déclenchement des interruptions.
Mais il est tout à fait possible que pendant le déroulement de la fonction sous interruption, une autre interruption soit survenue. L'interruption est donc en attente et se déclenchera dès lors que les interruptions seront à nouveau autorisées.
Nous avons vu que le déclenchement d'une interruption saute à une adresse définie par le mode d'interruption ET que l'adresse interrompue est enregistrée dans la pile. Si l'autorisation des interruptions est immédiatement consécutive à l'instruction EI, il ne serait pas possible de revenir au programme interrompu avant qu'une interruption en attente se déclenche. La conséquence serait un empilement d'adresses de retour dans la pile et un écrasement progressif de la mémoire, jusqu'à ce que la pile déborde sur la routine sous interruption.
C'est pour cette raison qu'après un EI, le Z80 exécute UNE instruction supplémentaire avant d'autoriser à nouveau les interruptions.
L'usage classique en retour d'interruption est le suivant:
EI
RET
 
==== IM ====
Cette instruction permet de choisir le mode d'interruption du Z80 parmi 3 modes. Par défaut, le Z80 démarre en mode 1.