Red de conocimiento informático - Conocimiento sistemático - ¿Cuáles son las instrucciones comunes en el montaje?

¿Cuáles son las instrucciones comunes en el montaje?

Conjunto de instrucciones en lenguaje ensamblador

Las instrucciones en ensamblador son algunos operadores (como mov, inc, loop) y mnemónicos utilizados en el lenguaje ensamblador, y también incluyen algunas pseudoinstrucciones (como asumir , fin). Instrucciones utilizadas para indicarle al ensamblador cómo ensamblar. No controla el funcionamiento de la máquina ni está compilada en código de máquina. Solo puede ser reconocida por el ensamblador e indicarle al ensamblador cómo proceder.

1. Instrucciones de transferencia de datos

Transfieren datos entre la memoria y los registros, registros y puertos de entrada y salida.

1. Instrucciones generales de transferencia de datos

MOV transfiere palabras o bytes

El signo MOVSX se extiende primero y luego transfiere MOVZX. Primero la extensión cero, luego transmite.

PUSH empuja la palabra a la pila

POP saca la palabra de la pila

PUSHA empuja AX, CX,. DX, BX, SP, BP, SI, DI se insertan en la pila en secuencia.

POPA saca DI, SI, BP, SP, BX, DX, CX, AX de la pila en secuencia.

PUSHAD EAX, ECX, EDX, EBX, ESP, EBP, ESI y EDI se insertan en la pila en secuencia.

POPAD muestra EDI, ESI, EBP, ESP, EBX, EDX, ECX y EAX salen de la pila en secuencia.

POPAD p>

BSWAP intercambia el orden de los bytes en un registro de 32 bits

XCHG intercambia palabras o bytes. (Al menos un operando es un registro, los registros de segmento no se pueden usar como operandos)

CMPXCHG compara e intercambia operandos (El segundo operando debe ser el acumulador AL/AX/EAX)

XADD primero intercambia y luego acumula (El resultado está en el primer operando)

p>

Conversión de la tabla de búsqueda de bytes XLAT.

── BX apunta al punto de partida. de una tabla de 256 bytes, AL es el valor del índice de la tabla (0-255, es decir, 0-FFH) Devuelve AL como resultado de la búsqueda en la tabla ( [BX AL]-gt; AL )

.

2. Instrucciones de transmisión del puerto de entrada y salida.

Entrada del puerto de E/S (Sintaxis: Acumulador IN, {número de puerto│DX}) 

E/S de salida. salida del puerto. (Sintaxis: OUT {número de puerto│DX}, acumulador)

Los puertos de entrada y salida son inmediatos. Cuando se especifica por modo, su rango es 0-255; cuando se especifica por registro DX, su rango; es 0-65535.

3. Comando de transferencia de dirección de destino.

LEA carga la dirección efectiva. Ejemplo: LEA DX, cadena almacena la dirección de desplazamiento en DX.

LDS transfiere el puntero de destino y carga el contenido del puntero en DS Ejemplo: LDS SI, cadena; almacena la dirección del segmento: dirección de desplazamiento A DS:

LES transfiere el puntero de destino y carga el. contenido del puntero en ES Ejemplo: LES DI, cadena; guarda la dirección del segmento y la dirección de desplazamiento en ES:

LFS transfiere el puntero de destino y carga el contenido del puntero en FS. cadena; guarda la dirección del segmento: dirección de desplazamiento en FS: DI.

LGS transfiere el puntero de destino y carga el contenido del puntero en GS. Ejemplo: LGS DI, cadena; GS: DI.

LSS transfiere el puntero de destino y carga el contenido del puntero en SS. Ejemplo: LSS DI, cadena guarda el segmento Dirección: la dirección de desplazamiento se almacena en SS: DI.

4. Instrucción de transferencia de bandera.

Transferencia del registro de bandera LAHF, carga la bandera en AH.

Transferencia del registro de bandera SAHF, carga el contenido de AH en el registro de bandera

p>

El indicador PUSHF se inserta en la pila.

El indicador POPF se extrae de la pila.

El indicador PUSHD de 32 bits se inserta en la pila.

La bandera POPD de 32 bits sale de la pila

2. Instrucciones de operación aritmética

AGREGAR.

Adición de ADC con acarreo.

>

INC más 1.

Ajuste de código AAA ASCII para suma.

Ajuste decimal DAA para suma.

Resta SUB.

Resta SBB con préstamo.

DEC menos 1.

Negación NEC (resta de 0).

Comparación CMP (resta de dos operandos, solo modificando el bit de bandera, no devolviendo el resultado).

Resta AAS ASCII. ajuste de código.

DAS Ajuste decimal para resta.

MUL Multiplicación sin signo.

IMUL Multiplicación de enteros.

Las dos barras anteriores, el resultado se devuelve a AH y AL (operaciones de bytes), o DX y AX (operaciones de palabras),

Ajuste del código ASCII AAM para multiplicación.

División DIV sin signo.

p>

División de enteros IDIV.

Para los dos anteriores, el resultado se devuelve:

El comerciante devuelve AL y el resto devuelve AH, ( operación de byte);

O el cociente devuelve AX, el resto devuelve DX, (operación de palabra).

Ajuste del código ASCII para la división AAD.

Convierta bytes CBW a palabras (Convierte los bytes en AL El signo se extiende a AH)

La palabra CWD se convierte en una palabra doble (El signo de la palabra en AX se extiende a DX)

La palabra CWDE se convierte en una palabra doble (Extender los símbolos de las palabras en AX a EAX)

Expansión de palabras dobles CDQ (Extender los símbolos de las palabras en EAX a EDX)

3. Instrucciones de operación lógica

Operación Y Y.

Operación O O.

Operación XOR XOR.

NO negación .

Prueba TEST (Se aplica AND a los dos operandos, solo se modifica el bit de bandera y no se devuelve el resultado).

Desplazamiento lógico a la izquierda de SHL.

Desplazamiento aritmético a la izquierda de SAL (=SHL)

Desplazamiento lógico a la derecha de SHR.

Desplazamiento aritmético a la derecha de SAR (=SHR)

Rotar desplazamiento a la izquierda. .

ROR Girar Shift hacia la derecha.

RCL gira hacia la izquierda mediante transporte.

RCR gira hacia la derecha mediante transporte.

Los ocho cambios anteriores instrucciones, su cambio El número de veces puede llegar a 255.

Al cambiar una vez, el código de operación se puede usar directamente. Por ejemplo, SHL AX, 1.

Shift gt; una vez, lo proporciona el registro CL Fuera del número de turnos.

Por ejemplo, MOV CL, 04

SHL AX, CL

4. Instrucciones de cadena

DS: Registro de segmento de cadena de origen SI: índice de cadena de origen.

ES: Registro de segmento de cadena de destino DI: índice de cadena de destino.

Contador de repeticiones CX .

Valor de escaneo AL/AX.

El indicador D 0 indica que SI y DI deben incrementarse automáticamente durante operaciones repetidas; 1 indica que deben disminuirse automáticamente.

El indicador Z se utiliza para controlar las operaciones de escaneo o comparación. Fin.

Transmisión de cadenas MOVS.

(MOVSB ​​​​transmite caracteres. MOVSW transmite palabras. MOVSD transmite doble palabras.)

Comparación de cadenas CMPS.

(CMPSB compara caracteres. CMPSW compara palabras.)

Escaneo de cadenas SCAS.

Comparar el contenido de AL o AX con la cadena de destino, y el resultado de la comparación se refleja en el bit de bandera

cadena de carga LODS.

Carga los elementos (palabras o bytes) en el. cadena de origen en AL o AX una por una.

(LODSB transfiere caracteres. LODSW transmite palabras. LODSD transmite palabras dobles.)

STOS guarda cadenas.

Es el proceso inverso al LODS.

REP

Repita cuando CX/ECXlt;gt;0.

REPE/REPZ Repita cuando ZF=1 o el resultado de la comparación sea igual y CX/ECXlt;gt;0.

REPNE/ REPNZ Se repite cuando ZF=0 o el resultado de la comparación no es igual, y CX/ECXlt;gt;0.

REPC Se repite cuando CF=1 y CX/ECXlt;gt;0.

REPNC Repetir cuando CF=0 y CX/ECXlt;gt;0.

5. Instrucciones de transferencia del programa

1gt; >Instrucción de transferencia incondicional JMP

Llamada al procedimiento CALL

Devolución del procedimiento RET/RETF.

2gt; instrucción de transferencia condicional (transferencia corta, -128 a 127 dentro del distancia)

(Si y solo si (SF XOR OF)=1, OP1lt; OP2)

Transferir cuando JA/JNBE no sea menor o diferente a.

JAE/JNB es mayor o igual a la transferencia.

JB/JNAE es menor o igual a la transferencia.

JBE/JNA es menor o igual a la transferencia .

Los cuatro elementos anteriores prueban el resultado de la aritmética de enteros sin signo (banderas C y Z).

JG/JNLE Mayor que rama.

JGE/ JNL Mayor o igual a rama.

JL/JNGE transfiere menor o igual a.

JLE/JNG transfiere menor o igual a.

Lo anterior cuatro elementos prueban los resultados de operaciones con enteros con signo (banderas S, O y Z).

JE/JZ se bifurca cuando es igual.

JNE/JNZ se bifurca cuando no es igual.

JC se bifurca cuando hay un acarreo.

JNC se bifurca cuando no hay acarreo

JNO Se bifurca cuando no hay desbordamiento.

JNP. /Rama JPO cuando la paridad es impar.

Rama JNS cuando el bit de signo es "0".

Desbordamiento de rama JO.

Rama JP/JPE cuando la paridad es par.

JS Branch cuando el bit de signo es "1".

3gt ;Instrucción de control de bucle (transferencia corta)

Bucle cuando LOOP CX no es cero.

Recorrido cuando LOOPE/LOOPZ CX no es cero y el indicador Z=1.

LOOPNE/LOOPNZ Recorrido cuando CX no es cero y el indicador Z=0.

JCXZ bifurca cuando CX es cero.

JECXZ bifurca cuando ECX es cero.

4gt; Instrucción de interrupción

Instrucción de interrupción INT

p>

INTO interrupción de desbordamiento

IRET Retorno de interrupción

5gt Instrucción de control del procesador

HLT El procesador se detiene y no continúa hasta una interrupción o un reinicio. se produce la señal.

WAIT pone la CPU en estado de espera cuando la prueba del cable del chip es alta.

ESC cambia al procesador externo.

LOCK bloquea el bus .

NOP sin operación.

STC establece el indicador de acarreo.

CLC borra el indicador de acarreo.

CMC invierte el indicador de acarreo.

STD establece el indicador de dirección.

CLD borra el indicador de dirección.

STI establece el bit de habilitación de interrupción.

CLI borra el bit de habilitación de interrupción.

6. Pseudoinstrucción

Palabra de definición DW (2 bytes).

PROC define el proceso.

El proceso ENDP finaliza.

SEGMENT define el segmento.

ASSUME establece el direccionamiento del registro del segmento.

Finaliza la sección ENDS.

Finaliza el programa END.

7. Instrucciones de control del procesador:

Instrucción de procesamiento de bandera CLC (instrucción de acarreo de posición 0)

p>

CMC (instrucción de transporte inverso)

STC (la posición de transporte es 1 instrucción)

CLD (bandera de dirección establecida en 1 instrucción)

STD (Instrucción de posición 1 del indicador de dirección)

CLI (Instrucción de establecimiento 0 del indicador de interrupción)

STI (Instrucción de establecimiento 1 del indicador de interrupción)

NOP (Sin operación)

HLT (detener)

ESPERAR (esperar)

ESC (escape)

LOCK (bloquear)