Lo más probable es que esta instrucción se implemente mediante el cambio de nombre del registro. Con el cambio de nombre del registro, los contenidos del registro se asignan a los nombres de los registros con etiquetas. Esto hace que el intercambio de registros sea muy fácil, simplemente intercambie las etiquetas. No es necesario realizar múltiples escrituras de registro en el mismo ciclo.
Así es como el Z80 implementó la instrucción EX. Consulte: enlace
Intercambiar registros a través del cambio de nombre del registro
El Z80 tiene varias instrucciones para intercambiar registros o conjuntos de registros. La instrucción EX DE, HL intercambia los registros DE y HL. La instrucción EX AF, AF 'intercambia los registros AF y AF'. La instrucción EXX intercambia los registros BC, DE y HL con los registros BC ', DE' y HL '. Estas instrucciones se completan muy rápidamente, lo que plantea la pregunta de cómo varios valores de registro de 16 bits pueden moverse alrededor del chip a la vez.
Resulta que estas instrucciones no mueven nada. Solo alternan un bit que cambia el nombre de los registros apropiados. Por ejemplo, considere intercambiar los registros DE y HL. Si se establece el bit DE / HL, una instrucción que actúa sobre DE usa el primer registro y una instrucción que actúa sobre HL usa el segundo registro. Si se borra el bit, una instrucción DE usa el segundo registro y una instrucción HL usa el primer registro. Por lo tanto, desde la perspectiva del programador, parece que los valores en los registros se han intercambiado, pero en realidad solo se han intercambiado los significados / nombres / etiquetas de los registros. Del mismo modo, un bit selecciona entre AF y AF ', y un bit selecciona entre BC, DE, HL y las alternativas. En total, hay cuatro registros que pueden utilizarse para DE o HL; físicamente no hay registros separados de DE y HL.
El hardware para implementar el cambio de nombre del registro es interesante, ya que utiliza cuatro flip flops de alternancia. [7] Estos flip flops se alternan según las instrucciones EX y EXX apropiadas. Un flip flop maneja AF / AF '. El segundo flip flop maneja BC / DE / HL vs BC '/ DE' / HL '. Los dos últimos flip flops manejan DE vs HL y DE 'vs HL'. Tenga en cuenta que se requieren dos flip flops ya que DE y HL pueden intercambiarse independientemente en cualquier banco de registros.