Modo de direccionamiento de las notas del lenguaje ensamblador 04_80x86 (resumen de las notas de las tortugas pequeñas)

Dirección física

  • La memoria almacena información en bytes.
  • Cada unidad de bytes tiene una dirección de memoria única, denominada dirección física .
  • Una palabra se almacena en la memoria para ocupar dos bytes consecutivos, cuando se almacena, el byte bajo se almacena en la dirección baja y el byte alto se almacena en la dirección alta.
  • La dirección de la unidad de palabra está representada por su dirección inferior.
  • Cuando se extrae memoria, el lado inferior es la dirección alta y el lado superior es la dirección alta. La parte inferior de la pila es la dirección alta.
  • Cada unidad de almacenamiento tiene una dirección física única, pero puede estar compuesta por diferentes direcciones de segmento y diferentes direcciones de desplazamiento.

Dirección lógica = dirección de segmento: dirección de desplazamiento dirección lógica = dirección de segmento: dirección de desplazamiento Serie lógica para abordar=Sección de la web : la parcial desplazamiento a domicilio

Dirección física = dirección de segmento desplazada a la izquierda cuatro bits + dirección de desplazamiento dirección física = dirección de segmento desplazada a la izquierda cuatro bits + dirección de desplazamiento Fue motivo para abordar=Sección de la web dejó de cambio de Si Wei+Cambio parcial para abordar

Modo de direccionamiento relacionado con datos

Direccionamiento inmediato

Los operandos se almacenan directamente en la instrucción y dichos operandos se denominan inmediatos .
Operando = inmediato operando = inmediatoOperación para varios=Li ese número

  • mov ax,3

Nota :

  • El modo de direccionamiento inmediato solo se puede utilizar en el campo del operando de origen.
  • La longitud del operando de origen debe ser la misma que la longitud del operando de destino.

Registrar modo de direccionamiento

El operando se almacena en el registro y la instrucción especifica el número de registro .

  • mov ax,bx

Operando = contenido en el registro especificado Operando = contenido en el registro especificado Operación para varios=Se refiere a un dispositivo de memoria de registro especificado en el contenedor interno.


Los dos modos de direccionamiento anteriores no involucran memoria.


Los operandos de los siguientes modos de direccionamiento se almacenan en el área de almacenamiento.

En 80x86, el operando de la dirección de desplazamiento se llama la dirección efectiva , EA(Effective Address).

Los siguientes modos de direccionamiento obtienen la dirección efectiva del operando a través de diferentes formas y luego obtienen el operando.
Dirección efectiva = dirección base + índice × factor de escala + desplazamiento dirección efectiva = dirección base + índice \ veces factor de escala + desplazamientoHay eficientes para abordar=Dirección base+Cambiar direccion×Que los pacientes debido a sub+La
dirección efectiva de la cantidad de desplazamiento de bits puede tener los siguientes cuatro componentes:

  • Desplazamiento

    (Desplazamiento) es el número almacenado en la instrucción , pero no es un número inmediato, sino una dirección.

  • Dirección base

    (Base) es el contenido almacenado en el registro base (BP, BX) , que generalmente se usa para apuntar a la primera dirección de la matriz o cadena en el segmento de datos.

  • Índice

    (Índice) es el contenido almacenado en el registro de índice (SI, DI) , generalmente utilizado para acceder a un elemento en una matriz o un carácter en una cadena.

  • Factor de escala

    (Factor de escala), su valor puede ser 1, 2, 4, 8. (El factor de escala solo está disponible para 386 y modelos posteriores)

    Tabla 1 La composición de los tres componentes de la dirección efectiva en el direccionamiento de 16 bits
ingrediente Direccionamiento de 16 bits
Desplazamiento 0,8,16º
Registro base BX, BP
Registro de índice SI DE
Tabla 2 Reglas de selección de segmento predeterminadas
Tipo de búsqueda Segmentos y registros de segmento utilizados Regla predeterminada
instrucción Fragmento de código CS Se usa para buscar instrucciones
Apilar Segmento de pila SS Dentro y fuera de la pila, ESP, BP o ESP como registro de dirección base
Datos locales Segmento de datos DS Excepto por la cadena de destino de la pila y las instrucciones de cadena
Cadena de propósito Segmento de datos adicional ES Cadena de destino

Tres situaciones en las que se prohíbe el uso de prefijos que abarcan segmentos :

  • La cadena de destino de la instrucción de procesamiento de cadena debe utilizar el segmento ES
  • La fuente de las instrucciones PUSH y POP debe utilizar el segmento SS
  • La instrucción debe almacenarse en la sección CS

Direccionamiento directo

Dirección efectiva = desplazamiento dirección efectiva = desplazamiento Hay eficientes para abordar=Cantidad de cambio de bit

  • mov ax,[0]

El desplazamiento se puede representar mediante una dirección simbólica (variable).

  • mov ax,table
  • mov ax,[table]

El registro de segmento predeterminado es DS .

Este modo de direccionamiento es adecuado para manejar variables individuales.

Registrar el modo de direccionamiento indirecto

Dirección efectiva = contenido del registro de direcciones base o registro de índice Dirección efectiva = contenido del registro de direcciones base o registro de índice Hay eficientes para abordar=Dispositivo de memoria de registro de dirección base o dispositivo de memoria de registro de dirección variable del contenido

  • mov ax,[bp]
  • mov ax,[bx]

La dirección efectiva está en un registro ** (BX, BP, SI, DI) **. (AX, CX, DX no están permitidos)

El registro de segmento predeterminado de BP es SS y el segmento predeterminado de los otros tres registros es DS.

Registrar el modo de direccionamiento relativo

También conocido como modo de direccionamiento indexado directo.
Dirección efectiva = contenido de un registro de direcciones base o registro de índice + desplazamiento dirección efectiva = contenido de un registro de direcciones base o registro de índice + desplazamientoHay eficientes para abordar=Un ª base de dirección de registro de la memoria del dispositivo o la variable de dirección de registro de la memoria del dispositivo de la contenidos+Cantidad de cambio de bit del
caso predeterminado donde el mismo segmento registra el modo de direccionamiento indirecto.

  • mov ax,count[si]
  • mov ax,[count+si]

Modo de direccionamiento indexado de dirección base

Dirección efectiva = el contenido de un registro base + el contenido de un registro de índice Dirección efectiva = el contenido de un registro base + el contenido de un registro de índice Hay eficientes para abordar=Un ª base de dirección de registro de la memoria del dispositivo de la contenidos+Un º variable de dirección de registro de la memoria del dispositivo de la contenidos

Consulte la Tabla 1 y la Tabla 2 para conocer la situación del segmento predeterminado.

  • mov ax,[bx][di]
  • mov ax,[bp][si]
  • mov ax,[bx+di]

Modo de direccionamiento indexado de dirección base relativa

Dirección efectiva = el contenido de un registro base + el contenido de un registro índice + la dirección efectiva de desplazamiento = el contenido de un registro base + el contenido de un registro índice + el desplazamiento Hay eficientes para abordar=Un ª base de dirección de registro de la memoria del dispositivo de la contenidos+Un º variable de dirección de registro de la memoria del dispositivo de la contenidos+Cantidad de cambio de bit

  • mov ax,mask[bx][si]

Modo de direccionamiento relacionado con la dirección de la sucursal

Este modo de direccionamiento se utiliza para determinar la instrucción de bifurcación y CALLla dirección de redireccionamiento de la instrucción.

Direccionamiento directo dentro del segmento

Dirección efectiva = (IP) + desplazamiento

Los más utilizados, jmp nextetc., son todos estos métodos de direccionamiento.

Cerca de transferencia :

El tamaño de desplazamiento es de 16 bits, como jmp near ptr next.

Transferencia corta :

El desplazamiento es de 8 bits. Por ejemplo jmp short next, si observa otros métodos de direccionamiento relacionados con la dirección de transferencia, encontrará que solo hay shortninguno ptr.

Direccionamiento indirecto

Dirección efectiva = registro o contenido de la unidad de almacenamiento .

El contenido puede utilizar todos los modos de direccionamiento relacionados con los datos, excepto el modo de direccionamiento inmediato.

  • jmp bx

  • jmp word ptr[bp+table]

    word ptrLa descripción es una palabra , por lo que se transfiere dentro de un segmento .

Direccionamiento directo entre segmentos

La dirección del segmento de dirección y la dirección de desplazamiento se proporcionan directamente en la instrucción .

  • jmp far ptr next

Direccionamiento indirecto entre segmentos

Tomar dos palabras consecutivas en la memoria para reemplazar el contenido original en IP y CS para lograr el propósito de transferir entre segmentos.

La dirección de la unidad de almacenamiento puede ser excepto el modo de datos inmediato y el modo de registro.

  • jmp dowrd ptr[table+bx]

    dwordLa descripción es una palabra doble, por lo que es una transferencia entre segmentos .

Supongo que te gusta

Origin blog.csdn.net/david2000999/article/details/115231973
Recomendado
Clasificación