2017-06-30 4 views
4

Dans le registre des indicateurs des processeurs Z80, 8080, 8085 et 8086, quel est le but des bits 1, 3, 5, documentés comme "réservés" ou "non définis"?Quel est le but du bit réservé/non défini dans le registre de drapeau?

+2

Le bit 1 sur le Z-80 est défini comme l'indicateur N qui indique si la dernière instruction était un ajout ou une soustraction et est utilisée par l'instruction DAA. –

Répondre

8

Ces bits sont inutilisés; c'est-à-dire qu'aucune instruction ne les définit explicitement. Les concepteurs ont décidé que les drapeaux 5/6 suffisaient, et ils ont laissé les bits restants du registre des drapeaux inutilisés.

Ils sont documentés comme étant "indéfinis" car il n'est pas possible de savoir à l'avance quelle valeur ils auront après l'exécution des instructions - la conception du processeur est plus simple, plutôt que de les paramétrer explicitement sur 0 Or, à proprement parler, et pour le Z80 au moins, ces indicateurs obtiennent effectivement une valeur prévisible - après tout, un processeur produira toujours la même sortie et passera à l'état interne étant donné la même combinaison d'entrée et état interne précédent. Par exemple, this document about undocumented Z80 instructions dit le texte suivant à propos de l'IPC:

Flag 3 et 5 sont définis comme ceci: Take A, soustraire la dernière (HL) et diminuent ensuite avec 1 si le drapeau H a été fixé (/ après/le CP). Bit 1 de cette valeur est pavillon 5, bit 3 est pavillon 3.

Le point, cependant, est que ce comportement est involontaire -Comme un côté effet et non garanti d'être présent dans des itérations futures des processeurs. C'est pourquoi ils sont documentés comme n'étant "pas définis", comme dans "ils ne vous sont pas utiles, alors ignorez-les".

+2

"POP AF" sur le Z-80 définit tous les bits du registre de drapeau alors qu'il n'y a pas d'instructions qui définissent des bits indéfinis du registre de drapeau via des effets secondaires il y en a un qui fixera tous les bits. Les programmes peuvent et supposent en toute sécurité que "POP AF, PUSH AF" laissera le haut de la pile inchangé. –

+0

@GeorgePhillips: ... si les interruptions sont désactivées de sorte que la mémoire qui est temporairement en dessous du pointeur de la pile en cours ne peut pas être claquée de manière asynchrone par un gestionnaire d'interruption. –

+0

Eh bien, oui, mais un peu à côté du point. Disons ceci, alors. PUSH HL, POP AF, PUSH AF, POP HL ne changera pas le contenu de HL. –