Red de conocimiento informático - Conocimiento sistemático - Instrucciones en lenguaje ensamblador

Instrucciones en lenguaje ensamblador

Manual de Instrucciones de Montaje 8086

1. Instrucciones de transferencia de datos

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

p>

1. Instrucciones generales de transferencia de datos.

MOV transfiere palabras o bytes

El signo MOVSX se extiende primero y luego transfiere. MOVZX primero 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 coloca DI, SI, BP, SP, BX, DX, CX, AX en la pila en secuencia.

PUSHAD empuja EAX, ECX,EDX,EBX,ESP,EBP,ESI,EDI se empujan a la pila en secuencia

POPAD saca EDI,ESI,EBP,ESP,EBX. ,EDX,ECX,EAX fuera de la pila en secuencia.

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. se acumula. (El resultado está en el primer operando)

> 0-FFH); Devuelve AL como resultado de la búsqueda en la tabla ( [BX+AL]->AL )

2. Instrucciones de transferencia del puerto de entrada y salida.

Puerto IN I/O Entrada (Sintaxis: IN acumulador, {número de puerto│DX})

Salida puerto I/O (. Sintaxis: OUT {número de puerto│DX}, acumulador)

Cuando los puertos de entrada y salida se especifican mediante el modo inmediato, el rango es 0-255 cuando se especifica mediante el registro DX,

El rango es 0-65535

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

LEA carga la dirección efectiva

Ejemplo: LEA DX,string ;store. la dirección de desplazamiento a DX

LDS transfiere el puntero de destino y coloca el puntero. El contenido se carga en DS

Ejemplo: LDS SI, cadena de almacenamiento: dirección de desplazamiento en. DS:SI.

LES transfiere el puntero de destino y carga el contenido del puntero en ES

Ejemplo: LES DI, cadena; almacenar dirección de segmento: dirección de desplazamiento en ES:DI. /p>

LFS transfiere el puntero de destino y carga el contenido del puntero en FS

Ejemplo: LFS DI,string.

;Guardar dirección de 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 ;Establecer dirección de segmento: La dirección de desplazamiento se almacena en GS:DI.

LSS transfiere el puntero de destino y carga el contenido del puntero en SS

Ejemplo: LSS DI,string;Cambiar dirección de segmento:dirección de desplazamiento Guardar. a SS:DI

4. Se transfiere el comando de transferencia de bandera

el registro de bandera LAHF y se carga la bandera en

el registro de bandera SAHF. transferido y la bandera se carga en AH. El contenido de AH se carga en el registro de bandera.

La bandera PUSHF se empuja a la pila.

La bandera POPF se saca de la pila.

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

El indicador POPD de 32 bits sale de la pila.

2. p>

—————————————————————— ——————————————————

ADD Suma

ADC Suma con acarreo

INC Suma 1

Ajuste AAA ASCII para suma. ajuste por suma.

SUB resta.

Resta SBB con préstamo.

DEC resta 1.

NEC lo niega (lo resta de. 0).

CMP compara. (Resta los dos operandos y solo modifica el bit de bandera. , no devuelve el resultado

Ajuste del código AAS ASCII

DAS Ajuste decimal para resta.

MUL Multiplicación sin signo

IMUL Multiplicación de enteros

Para los dos elementos anteriores, se devuelven los resultados. como AH y AL (operaciones de bytes), o DX y AX (operaciones de palabras),

Ajuste de código ASCII para multiplicación

División sin signo DIV

. División entera IDIV

Los dos anteriores, se devuelve el resultado:

El cociente devuelve AL, el resto Devuelve AH, (operación de bytes); El OR devuelve AX, el resto devuelve DX, (operación de palabra).

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

El byte CBW se convierte en palabra. en AL a AH)

CWD Convierte la palabra a palabra doble (Extiende el signo de la palabra en AX a DX)

Convierte palabras CWDE a palabras dobles (Amplía los símbolos. de palabras en AX a EAX)

CDQ Extensión de palabra doble (Extiende los símbolos de las palabras en EAX a EDX Entra.

)

3. Instrucciones de operación lógica

—————————————————————————————— ——————————

Operación AND

Operación O

Operación XOR

. NO negación.

prueba de PRUEBA (Los dos operandos se ejecutan con AND, solo se modifica el bit de bandera y el resultado no se devuelve

desplazamiento lógico a la izquierda

p>

SAL Desplazamiento aritmético hacia la izquierda (=SHL)

SHR Desplazamiento lógico hacia la derecha

SAR Desplazamiento aritmético hacia la derecha (=SHR)

ROL. Desplazamiento circular hacia la izquierda.

ROR gira hacia la derecha.

RCL gira hacia la izquierda mediante transporte.

RCR gira hacia la derecha mediante transporte. tipos de instrucciones de cambio, el número de cambios puede llegar a 255 veces

Cuando se cambia una vez, el código de operación se puede usar directamente. Por ejemplo, SHL AX,1. veces, el número de turnos viene dado por el registro CL

Por ejemplo, MOV CL,04

SHL AX,CL

4 Instrucciones de cadena. p >

————————————————————————————————————————

DS:SI Registro de segmento de cadena de origen: Índice de cadena de origen

ES:DI Registro de segmento de cadena de destino: Índice de cadena de destino

Contador de recuento de repeticiones

<. p> 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 es. se utiliza para controlar el escaneo o el final de la operación de comparación

Transferencia de cadenas MOVS

(MOVSB ​​​​transfiere caracteres. MOVSW transfiere palabras. MOVSD transfiere palabras dobles). >

Comparación de cadenas CMPS

(CMPSB compara caracteres. CMPSW compara palabras).

Escaneo de cadenas SCAS

Compara 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 la cadena de origen en AL o AX. por uno.

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

STOS guarda la cadena

Es LO.

El proceso inverso de DS

REP se repite cuando CX/ECX<>0

REPE/REPZ se repite cuando ZF=1 o el resultado de la comparación es igual y CX/ECX. <>0 Repetir

REPNE/REPNZ Repetir cuando ZF=0 o el resultado de la comparación no es igual, y CX/ECX<>0

REPC Cuando CF=1 y CX. /ECX<> Repetir cuando 0.

REPNC Repetir cuando CF=0 y CX/ECX<>0

5 Instrucciones de transferencia de programa

——. ———— ————————————————————————————————————

1>Incondicional instrucción de transferencia (transferencia larga)

instrucción de transferencia incondicional JMP

llamada al procedimiento CALL

devolución del procedimiento RET/RETF

2>Condicional. instrucción de transferencia (transferencia corta, dentro de la distancia de -128 a +127)

(OP1

Cuando JA/JNBE no es menor ni diferente de Transferencia

JAE/JNB es mayor o igual que transferencia

JB/JNAE es menor que transferencia. JBE/JNA es menor o igual a la transferencia

Los cuatro elementos anteriores prueban los resultados de operaciones enteras sin signo (banderas C y Z

JG/JNLE es mayor que la transferencia).

JGE/JNL es mayor o igual que la transferencia

Rama JL/JNGE menor que

Rama JLE/JNG menor o igual.

Los cuatro elementos anteriores prueban los resultados de operaciones con enteros con signo (banderas S, O y Z)

JE/JZ Branch cuando son iguales

JNE/. Sucursal JNZ cuando no es igual

Sucursal JC cuando hay acarreo

Sucursal JNC cuando no hay acarreo

Sucursal JNO cuando no hay desbordamiento.

Rama JNP/JPO cuando la paridad es impar

Rama JNS cuando el bit de signo es "0"

Rama de desbordamiento JO. >

Rama JP/JPE cuando la paridad es par

Rama JS cuando el bit de signo es "1"

3>Instrucción de control de bucle (transferencia corta)

p>

Bucle cuando LOOP CX no es cero

Bucle cuando LOOPE/LOOPZ CX no es cero y marca Z=1

Bucle cuando LOOPNE/LOOPNZ CX no es. cero y marca Z=0

Rama JCXZ cuando CX es cero

.

JECXZ Rama cuando ECX es cero

4>Instrucción de interrupción

Instrucción de interrupción INT

INTO interrupción de desbordamiento

Retorno de interrupción IRET

p> p>

5>Instrucciones de control del procesador

HLT El procesador se detiene hasta que se produce una señal de interrupción o reinicio

ESPERA hace que la CPU funcione cuando el cable del chip está en PRUEBA. alto Ingrese al estado de espera.

ESC transfiere al procesador externo

LOCK bloquea el bus

NOP no funciona. > STC establece la bandera de acarreo

CLC borra la bandera de acarreo

CMC invierte la bandera de acarreo

STD establece la bandera de dirección . p> 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. p>

— ————————————————————————————————————————

Palabra de definición DW (2 bytes).

PROC define el proceso.

El proceso ENDP finaliza.

SEGMENTO define el segmento.

ASSUME establece el direccionamiento del registro de segmento

Finaliza la sección ENDS

Finaliza el programa END.