Was ist der praktische Unterschied zwischen den SI- und DI-Registern?
-
18-09-2019 - |
Frage
Ich verstehe nicht, was der Unterschied ist.
Lösung
Wenn Sie Anweisungen wie movsb verwenden, wird si als berücksichtigt Source-Register, während di als das betrachtet wird DReisezielregister.Aber es sind beides normale x86-Register.
Andere Tipps
Meine Baugruppe ist etwas eingerostet, aber das eine ist der Quellindex, das andere der Zielindex.Eine Anweisung wie movsb
kopiert ein Byte von dem Speicherort, auf den gezeigt wird SI
, und verschieben Sie es an den Speicherort, auf den gezeigt wird DI
, und erhöhen Sie dann beide, wenn Sie also das unter gespeicherte Byte kopieren möchten SI+1
Zu DI+1
, es ist nur eine weitere movsb-Anweisung erforderlich.
SI
steht für Quelle-Index. Source-Index ist die Verwendung als ein Zeiger auf das aktuelle Zeichen in einer Befehlsfolge gelesen wird (LODS, MOVs oder CMPS). Source-Index ist auch als ein Offset Bx oder Bp hinzuzufügen, wenn dabei die indirekte Adressierung.
Beispiel:
MOV [Bx + SI] , Ax
Dieser Befehl kopiert den Inhalt von Ax in den Speicherplatz, dessen Adresse die Summe der Bx und SI.
DI
steht für Zielindex, als ein Zeiger auf das aktuelle Zeichen verwendet wird in einer String Anweisung geschrieben oder verglichen.
Es ist auch als ein Offset wie SI.
wie oben di gesagt steht für Zielindex und si steht für Quelle-Index, wenn wir bewegen Daten aus dem Speicher wollen wir nutzen si zB mov ax, [si]. und wenn wir Daten bewegen, um den Speicher wollen wir benutzen di. zB mov [di], ax
beide sind 16-Bit-Register und kann nicht in 8 Bit aufgeteilt werden