Qual è la differenza pratica tra i registri SI e DI?
-
18-09-2019 - |
Domanda
Non capisco qual è la differenza.
Soluzione
Quando si utilizza istruzioni come movsb, si è considerato come il s ource registrarsi, mentre di è considerato come D il registro ESTINAZIONE. Ma sono entrambi normali registri x86.
Altri suggerimenti
Il mio montaggio è un po 'arrugginito, ma uno è l'indice di origine, l'altro indice della destinazione. Un'istruzione come movsb
copierà un byte dalla locazione di memoria puntato dal SI
, e spostarlo nella posizione di memoria puntato da DI
, e quindi incrementare entrambi, quindi se si desidera copiare il byte conservato a SI+1
a DI+1
, solo prende un ulteriore istruzione movsb.
SI
sta per indice di origine. indice di origine è l'uso come un puntatore al carattere corrente viene letto in un'istruzione stringa (LODS, MOV, o CMPS). Indice sorgente è disponibile anche come un offset per aggiungere Bx o Bp quando si fa indirizzamento indiretto.
Esempio:
MOV [Bx + SI] , Ax
Questa istruzione copia il contenuto di Ax nella locazione di memoria il cui indirizzo è la somma del Bx e SI.
DI
sta per indice di destinazione, usato come un puntatore al carattere corrente o in scrittura rispetto a un'istruzione di stringa.
E 'disponibile anche come un offset, proprio come SI.
come detto sopra di acronimo di indice di destinazione e si sta per indice di origine, quando vogliamo spostare i dati dalla memoria usiamo SI esempio, mov ax, [si]. e quando vogliamo spostare i dati nella memoria che usiamo di. ad esempio, mov [di], ax
sono entrambi a 16 bit di registro e non può essere diviso in 8 bit