Question

Je ne comprends pas quelle est la différence.

Était-ce utile?

La solution

Lorsque vous utilisez des instructions comme movsb, si est considéré comme le s Ource registre, alors que di est considéré comme le d registre ESTINATION. Mais ils sont tous les deux registres x86 normaux.

Autres conseils

Mon ensemble est un peu rouillé, mais l'indice est source, l'autre de l'indice de destination. Une instruction comme movsb copiera un octet de l'emplacement de la mémoire pointée par SI, et le déplacer vers l'emplacement de la mémoire pointée par DI, puis incrémenter les deux, donc si vous voulez copier l'octet stocké à SI+1 à DI+1, il ne prend une nouvelle instruction de movsb.

SI signifie indice source. Indice de source est utilisé comme pointeur sur le caractère courant en cours de lecture dans une instruction de chaîne (LODS, MOVS ou CMPS). Indice de source est également disponible sous forme d'un décalage pour ajouter Bx ou Bp lorsque vous faites l'adressage indirect.
exemple:

MOV [Bx + SI] , Ax  

Cette instruction copie le contenu du hache dans l'emplacement de mémoire dont l'adresse est la somme de la Bx et SI.

DI signifie indice de destination, utilisé comme pointeur sur le caractère actuel ou en cours d'écriture par rapport à une instruction de chaîne.

Il est également disponible en tant que décalage comme SI.

comme ci-dessus dit di est synonyme de l'indice de destination et si l'indice est synonyme de source, lorsque l'on veut déplacer les données de la mémoire si nous utilisons par exemple, mov ax, [si]. et quand nous voulons déplacer les données vers la mémoire que nous utilisons di. par exemple, mov [di], ax

les deux sont 16 registre de bit et ne peut pas être divisé en 8 bits

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top