2009-09-27 31 views

Respuesta

22

Cuando se está usando instrucciones como movsb, si se considera como el s ource registro, mientras que di es considerado como el d detino registro. Pero ambos son registros x86 normales.

10

Mi ensamblaje está un poco oxidado, pero uno es el índice de origen, el otro es el índice de destino. Una instrucción como movsb copiará un byte de la ubicación de memoria apuntada por SI, y lo moverá a la ubicación de memoria apuntada por DI, y luego incrementará ambos, así que si desea copiar el byte almacenado en SI+1 en DI+1, solo toma una nueva instrucción movsb.

0

como se dijo anteriormente di significa índice de destino y si significa índice de fuente, cuando queremos mover datos de la memoria usamos si eg, mov ax, [si]. y cuando queremos mover datos a la memoria usamos di. por ejemplo, mov [di], hacha

ambos son 16 de registros de bits y no puede ser dividida en 8 bits

+2

puede usar tanto mov [si], ax y mov ax, [di], si está utilizando instrucciones MOV simples son básicamente lo mismo, al igual que puede usar mov [bx], ax. Cuando está utilizando instrucciones como MOVSB, la CPU asume que el SI es la fuente y el DI es el destino, pero cuando lo hace manualmente, puede usar cualquiera de ellos para hacer ambas cosas. – Bob

5

SI gradas para el índice de fuente. El índice de origen se usa como un puntero al carácter actual que se lee en una instrucción de cadena (LODS, MOVS o CMPS). El índice de origen también está disponible como un desplazamiento para agregar Bx o Bp al hacer 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 significa índice de destino, se utiliza como un puntero al carácter actual que se está escribiendo o comparando en una instrucción de cadena.

También está disponible como una compensación al igual que SI.

Cuestiones relacionadas