2016-12-13 1 views
2

Les rôles d'EDI et d'ESI peuvent-ils être modifiés? Par exemple, l'EDI peut-il contenir un pointeur sur array et nous ne l'imprimons que sur chaque valeur/caractère dans le tableau?Changement de rôle des registres EDI et ESI

+0

Habituellement, il est plus facile de changer de valeur dans les registres que de modifier le reste du code. S'il vous arrive d'être dans une situation où vous avez besoin de 'esi' /' edi' juste dans l'autre, alors 'xchg esi, edi' résoudra cela. Ce n'est pas exactement une instruction rapide, donc vous évitez généralement de planifier l'utilisation du code en avant, et écrivez le code restant pour fonctionner sans instructions supplémentaires xchg/mov, gardant les résultats intermédiaires directement dans les registres qui seront récupérés par le code suivant. .. si possible ... sinon, utilisez 'xchg' ou un autre' mov'. – Ped7g

Répondre

4

Vous ne pouvez pas changer les rôles de (R | E) SI et (R | E) DI pour les instructions de chaîne, telles que MOVSB. Les registres source et de destination sont impliqués par les instructions elles-mêmes, et essentiellement codés en dur.

Partout ailleurs, vous pouvez ajuster votre code de manière appropriée pour utiliser un registre au lieu d'un autre.