¿Cuál es la diferencia práctica entre los registros SI y DI?
-
18-09-2019 - |
Pregunta
No entiendo cuál es la diferencia.
Solución
Cuando se está usando instrucciones como movsb, si se considera que el s ource registro, mientras que di es considerado como el d registro detino. Pero son ambos registros normales x86.
Otros consejos
Mi montaje es un poco oxidado, pero uno es el Índice de Fuente, el otro índice del destino. Una instrucción como movsb
copiará un byte desde la posición de memoria apuntado por SI
, y moverlo a la posición de memoria apuntada por DI
, y luego incrementar tanto, por lo que si desea copiar el byte almacenado en SI+1
a DI+1
, sólo toma una instrucción más movsb.
SI
significa índice de fuente. Índice de origen es su uso como un puntero al carácter actual que se lee en una instrucción de cadena (LODS, MOVS o CMPS). Índice fuente también está disponible como una compensación para agregar Bx o BP cuando se realiza el direccionamiento indirecto.
ejemplo:
MOV [Bx + SI] , Ax
Esta instrucción copia el contenido del hacha en la posición de memoria cuya dirección es la suma de la Bx y SI.
DI
es sinónimo de índice de destino, que se utiliza como un puntero al carácter actual o escritura de comparación en una instrucción de cadena.
También está disponible como una compensación igual que SI.
como se dijo anteriormente di sinónimo de índice de destino y si es sinónimo de índice de fuente, cuando queremos mover datos desde la memoria Si utilizamos por ejemplo, mov ax, [si]. y cuando queremos mover los datos a la memoria que utilizamos di. por ejemplo, mov [di], hacha
ambos son de 16 bits del registro y no se puede dividir en 8 bits