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) 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 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.