Anexo:Instrucciones x86

El conjunto de instrucciones x86 ha sido extendido varias veces, introduciendo registros más amplios y tipos de datos y/o nueva funcionalidad.

Instrucciones con enteros

Este es el conjunto de instrucciones completo del 8086/8088, pero la mayoría de estas instrucciones, si no todas, están disponibles en el modo de 32 bits, ellas simplemente operarían en registros y valores de 32 bits (EAX, EBX, etc) en vez de sus contrapartes de 16 bits (AX, BX, etc). Ver lenguaje ensamblador x86 para un tutorial rápido para esta familia de procesadores. El conjunto de instrucciones actualizado también está agrupado de acuerdo a la arquitectura (i386, i486, i686) y más generalmente está referido como x86_32 y x86_64 (también conocido como AMD64).

Representación de números enteros

Los números en los registros pueden representarse de dos maneras. La primera es una representación de entero positivo sin signo, cuyo rango será desde 0 hasta 2n, donde n es 8, 16, 32 o 64 bits dependiendo del tamaño del registro. La segunda es una representación de entero con signo (complemento a dos, con un rango entre -2n-1 hasta 2n-1 - 1, donde n es, al igual que en la anterior, el ancho de bits del registro, (8, 16, 32 o 64 bits).

Rango de los números de acuerdo al tamaño de los registros y su representación como entero con signo y sin signo:

Tamaño del registroEnteros sin signoEnteros con signo
(complemento a dos)
8 bits0 a 255-128 a 127
16 bits0 a 65.535-32.768 a 32.767
32 bits0 a 4.294.967.295-2.147.483.648 a 2.147.483.647
64 bits0 a 18.446.744.073.709.551.615-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Las operaciones aritméticas del procesador trabajan, generalmente, indistintamente con cualquiera de las dos representaciones. La misma instrucción, (el mismo opcode), para una suma, por ejemplo, puede sumar dos valores en representación como enteros positivos sin signo o dos valores en representación de enteros con signo. Para el procesador es lo mismo, y es el programador (o el compilador) el que trata o piensa en los números como estando en una representación u otra.

Hay, sin embargo, algunas instrucciones, como la multiplicación y la división, por ejemplo, donde son necesarios dos opcodes diferentes , uno para cuando se realizan operaciones con enteros positivos sin signo, y otro para cuando se realizan operaciones con enteros con signo, ya que se necesita un tratamiento especial para cada caso. Existen las instrucciones MUL y DIV para trabajar con enteros positivos sin signo, y las IMUL e IDIV para trabajar con enteros con signo. Lo mismo sucede con las instrucciones de SHIFT (desplazamiento), que tienen versiones para manejar números en representación entera sin signo (SHL y SHR) y con signo (SAL y SAR).

El CPU también puede trabajar con operaciones con números en representación BCD, pero como no hay instrucciones específicas para BCD, se usan las operaciones aritméticas convencionales, pero hay que hacer un ajuste adicional, usando instrucciones especializadas, para obtener el resultado correcto en representación BCD.

Instrucciones x86

Abajo una tabla con las instrucciones x86. La columna CPU indica el primer CPU que tuvo la instrucción, comenzando con el Intel 8086 y el Intel 8088, que fueron los primeros CPU de la serie x86

Mueve y copia datos
Movimiento de datos
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88MOVMoveMueveEn realidad es una copia, ya que en el destino se copia lo que está en el origen sin alterar este último
80386MOVZXMove with zero-extendMueve con extensión de cero
80386MOVSXMove with sign-extendMueve con extensión de signo
8086/88XCHGExchange dataIntercambia datos
8086/88XLAT11010111Table look-up translationTraslación de búsqueda en tabla
Operaciones de pila
Operaciones de pila
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88PUSHPush data onto stackApila dato en la pila
8086/88POP0x0FPop data from stackDesapila dato desde la pilaPOP CS (opcode 0x0F) solo trabaja en el 8086/8088. Los CPU posteriores usan 0x0F como un prefijo para nuevas instrucciones
8086/88PUSHF10011100Push flags onto stackApila bandera en la pila
8086/88POPF10011101Pop data into flags registerDesapila dato desde la pila hacia los registros de bandera
80186/188PUSHAPush all general purpose registers onto stackApila todos los registros de propósito general hacia la pilaEquivalente a
PUSH AX, CX, DX, BX, SP, BP, SI, DI
80186/188POPAPop all general purpose registers from stackDesapila todos los registros de propósito general desde la pilaEquivalente a
POP DI, SI, BP, SP, BX, DX, CX, AX
80386PUSHADPush all double-word (32-bit) registers onto stackApila todos los registros de 32 bits en la pila
80386POPADPop all double-word (32-bit) registers from stackDesapila todos los registros de 32 bits en la pilaNo desapila el registro ESP
80386PUSHFDPush EFLAGS register onto stackApila el registro EFLAGS en la pila
80386POPFDPop data into EFLAGS registerDesapila dato al registro EFLAGS desde la pila
80186/188ENTEREnter stack frameEntra un marco de pilaEquivalente a
PUSH BP     ; salva BP
MOV BP, SP  ; guarda el valor original de SP
SUB SP, n   ; abre un espacio en el stack para las variables locales de la función
            ; Ahora, con BP se pueden referenciar los parámetros de entrada
            ; de la función, que vienen en el stack al ser llamada ésta
            ; y las variables locales de la función que estarán
            ; en el espacio reservado aquí
80186/188LEAVELeave stack frameSale del marco de pilaEquivalente a
MOV SP, BP   ; Restaura SP
POP BP       ; Restaura BP
Entrada y salida por puertos
Entrada/salida de puertos
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88INInput from portEntrada desde un puerto
8086/88OUTOutput to portSalida a un puerto

Conversiones

Conversiones
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88CBW10011000Convert byte to wordConvierte byte a palabra
8086/88CWD10011001Convert word to doublewordConvierte palabra a doblepalabra
80386CDQConvert double-word to quad-wordConvierte doblepalabra a palabra cuádrupleSign-extends EAX into EDX, forming the quad-word EDX:EAX. Since (I)DIV uses EDX:EAX as its input, CDQ must be called after setting EAX if EDX is not manually initialized (as in 64/32 division) before (I)DIV
80386CWDEConvert word to double-wordConvierte palabra a doblepalabraUnlike CWD, CWDE sign-extends AX to EAX instead of AX to DX:AX
80486BSWAPByte SwapIntercambio de bytesConvierte Little endian a big endian (y viceversa). Solo trabaja en registros de 32 bits
Operaciones aritméticas
Aritméticas
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88ADDAddSuma
8086/88ADCAdd with carrySuma con acarreodestino = destino + origen + flag de acarreo
80486XADDExchange and AddIntercambia y suma
8086/88SUBSubtractionResta
8086/88SBBSubtraction with borrowResta con acarreo ("toma prestado")
8086/88INCIncrement by 1Incremento por 1
8086/88DECDecrement by 1Decrementa por 1
8086/88NEGTwo's complement negationNegación del complemento a dosCambio de signo. Útil para números en representación con signo (no con representación de enteros sin signo). Es equivalente a invertir los bits con NOT, y luego sumar 1
8086/88MULUnsigned multiplyMultiplicación sin signo
8086/88IMULSigned multiplyMultiplicación con signo
8086/88DIVUnsigned divideDivisión sin signo
8086/88IDIVSigned divideDivisión con signo
Operaciones BCD y ASCII
Operaciones BCD y ASCII
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88DAA00100111Decimal adjust AL after additionAjuste decimal de AL después de la sumaUsado en BCD
8086/88DAS00101111Decimal adjust AL after subtractionAjuste decimal después de sustracciónUsado en BCD
8086/88AAA00110111ASCII adjust AL after AdditionAjuste ASCII de AL después de la sumaUsado en BCD
8086/88AAS00111111ASCII adjust AL after subtractionAjuste ASCII de AL después de la sustracción
8086/88AAMASCII adjust AX after multiplicationAjuste ASCII de AX después de la multiplicación Solo la versión de base 10 está documentada. La hoja de datos (datasheet) del 8086/8088 solo documenta la versión de base 10 de la instrucción AAD (opcode 0xD5 0x0A), pero cualquier base trabajará (como 0xD5 0x02 para binario, por ejemplo). La documentación posterior de Intel también tiene la forma genérica. Los procesadore NEC V20 y V30 (y posiblemente otros CPU NEC serie V) siempre usan base 10, ignorando el argumento, causando un número de incompatiblidades
8086/88AADASCII adjust AX before divisionAjuste ASCII de AX antes de la división
Operaciones lógicas (bitwise)
Lógicas (bitwise)
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88ANDLogical ANDY lógica
8086/88ORLogical ORO lógico
8086/88XORExclusive ORO exclusivo (XOR)
8086/88NOTLogical NOTNO lógico
Rotación de bits
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88ROLRotate leftRota hacia la izquierda
8086/88RORRotate rightRota hacia la derecha
8086/88RCLRotate left (with carry)Rota hacia la izquierda con acarreo
8086/88RCRRotate right (with carry)Rota a la derecha con acarreo
Desplazamiento de bits
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88SHLShift left (unsigned shift left)Desplazamiento a la izquierdaLos bits se desplazan a la izquierda, el bit de la derecha se le asigna cero, el bit de la izquierda desaparece del operando pero queda guardado en el flag del acarreo
8086/88SHRShift right (unsigned shift right)Desplazamiento hacia la derechaLos bits se desplazan a la derecha, el bit de la izquierda se le asigna cero, el bit de la derecha desaparece del operando pero queda guardado en el flag del acarreo
80386SHLDShift left double-word
80386SHRDShift right double-word
Desplazamiento de bits (números con representación de signo (complemento a dos))
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88SALShift Arithmetically left (signed shift left)Desplaza aritméticamente hacia la izquierdaDesplaza los bits del operando hacia la izquierda sin tocar el bit más significativo del operando (bit del signo). Esto permite multiplicar por 2 un operando con signo
8086/88SARShift Arithmetically right (signed shift right)Desplaza aritméticamente hacia la derechaDesplaza los bits del operando hacia la derecha. El bit del signo no se desplaza y además se copia en el bit inmediatamente a la derecha. Esto permite dividir entre dos un operando con signo

Operaciones con bits

Operaciones con bits
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80386BTBit testPrueba de bit
80386BTRBit test and resetPrueba de bit y pone a cero
80386BTSBit test and setPrueba de bit y pone a 1
80386BTCBit test and complementPrueba de bit y complementa
80386BSFBit scan forwardBusca bit hacia adelante
80386BSRBit scan reverseBusca bit hacia atrás

Operaciones con los flags (banderas)

Flags
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88CMC11110101Complement carry flagComplementa el flag del acarreo
8086/88CLC11111000Clear carry flagAclara el flag del acarreo
8086/88STC11111001Set carry flagEnciende el flag del acarreo
8086/88CLI11111010Clear interrupt flagAclara el flag de las interrupciones
8086/88STI11111011Set interrupt flagEnciende el flag de las interrupciones
8086/88CLD11111100Clear direction flagAclara el flag de la dirección
8086/88STD11111101Set direction flagEnciende el flag de la dirección
8086/88LAHF10011111Load flags into AH registerCarga los flags al registro AH
8086/88SAHF10011110Store AH into flagsAlmacena AH en el registro de flagsusado para poner varios valores específicos en los flgs

Operaciones de string

Carga el registro AL, AX o EAX
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88LODSBLoad string byteCarga el siguiente byte de un string
8086/88LODSWstring wordCarga la siguiente palabra (16 bits) de un string
80386LODSDLoad stringCarga la siguiente doble palabra (32 bits) de un stringcan be prefixed with REP
Guarda en contenido del registro AL, AX o EAX
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88STOSBStore byte in stringGuarda un byte de string
8086/88STOSWStore word in stringGuarda una palabra de string
80386STOSxStore stringGuarda una doble palabra de string
Mueve bytes, words o doublewords
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88MOVSBMove byte from string to stringMueve byte de string a string
8086/88MOVSWMove word from string to stringMueve palabra de string a string
80386MOVSW, MOVSDMove data from string to stringMueve datos desde string a string
Compara bytes, words o doublewords
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88CMPSBCompare bytes in memoryCompara bytes en memoria
8086/88CMPSWCompare words in memoryCompara palabras en memoria
80386CMPSDCompare string double-wordCompara string de doblepalabraCompares ES:[(E)DI] with DS:[SI]
Busca bytes, words o doublewords
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88SCASBCompare byte stringBusca byte en string
8086/88SCASWCompare word stringBusca palabra en string
80386SCASDScan string data double-wordBusca doble palabra en string
Operaciones de string (con puertos de entrada/salida)
80186/188InstrucciónOpcodeSignificadoTraducciónNotas
80186/188INSInput from port to stringEntrada desde un puerto hacia un stringEquivalente a
IN AX, DX         ; Lee el puerto de entrada apuntado por DX
MOV ES:[DI], AX   ; Guarda el contenido del puerto en ES:[DI]
; Ajusta DI de acuerdo al tamaño del operando y el flag DF
80186/188OUTSOutput string to portSalida de string por un puertoEquivalente a
MOV AX, DS:[SI]  ; Lee un dato desde DS:[SI]
OUT DX, AX       ; Envía el dato al puerto apuntado por DX
; Ajusta SI de acuerdo al tamaño del operando y al flag DF
80386INSB, INSW, INSDInput from port to string with explicit sizeEntrada de un tamaño específico desde un puerto a un stringsame as INS
Prefijo de repetición
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88REPxxRepeat MOVS/STOS/CMPS/LODS/SCASRepite MOVS/STOS/CMPS/LODS/SCAS(REP, REPE, REPNE, REPNZ, REPZ)
Saltos incondicionales
Salto incondicional
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88JMPJumpSalto (incondicional)La ejecución del programa salta a la dirección apuntada por JMP
Comparaciones
Comparaciones
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88CMPCompare operandsCompara operandos
80486CMPXCHGCoMPare and eXCHanGeCompara e intercambia
PentiumCMPXCHG8BCoMPare and eXCHanGe 8 bytesCompara e intercambia 8 bytes
8086/88TESTLogical compare (AND)Comparación lógica (Y)Compara dos operandos y ajusta los flags. No se alteran los operandos
80386SETxSet byte to one on conditionAjusta byte de acuerdo a una condición(SETA, SETAE, SETB, SETBE, SETC, SETE, SETG, SETGE, SETL, SETLE, SETNA, SETNAE, SETNB, SETNBE, SETNC, SETNE, SETNG, SETNGE, SETNL, SETNLE, SETNO, SETNP, SETNS, SETNZ, SETO, SETP, SETPE, SETPO, SETS, SETZ)
Saltos condicionales
Saltos condicionales
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88JxxJump if conditionSalta en caso de una condición(JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ)
80386JCXZ, JECXZJump if register (E)CX is zeroSalta si el registro (E)CX es cero
Loops (bucles)
Loops (bucles)
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88LOOP/LOOPxLoop controlControl de bucles(LOOPE, LOOPNE, LOOPNZ, LOOPZ)
80386LOOPW, LOOPDLoopBucleBucle; (E)CX es el registro contador
80386LOOPEW, LOOPEDLoop while equalLoop mientras igual
80386LOOPZW, LOOPZDLoop while zeroLoop mientras cero
80386LOOPNEW, LOOPNEDLoop while not equalLoop mientras no igual
80386LOOPNZW, LOOPNZDLoop while not zeroLoop mientras no cero
Llamadas a subrutinas
Llamadas a subrutinas
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88CALLCall procedureLLamada a procedimiento
8086/88RETReturn from procedureRetorno desde un procedimiento
8086/88RETNReturn from near procedureRetorno desde un procedimiento cercano
8086/88RETFReturn from far procedureRetorno desde un procedimiento lejano
Interrupciones
Llamadas de interrupción
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88INTCall to interruptLlama una interrupciónEjecuta, mediante software, una rutina apuntada por un vector de interrupción
8086/88INTO11001110Call to interrupt if overflowLlama a interrupción en caso de overflow
Retornos de interrupción
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88IRET11001111Return from interruptRetorna de una interrupción
80386IRETxInterrupt returnRetorno de una interrupciónD suffix means 32-bit return, F suffix means do not generate epilogue code (i.e. LEAVE instruction), Use IRETD rather than IRET in 32-bit situations
Detener el procesador
Detener el procesador
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88HLT11110100Enter halt stateEntra en el estado de parada

Operaciones con registros de segmento

Operaciones con registros de segmento
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88LDSLoad DS with pointerCarga DS con un puntero
8086/88LESLoad ES with pointerCarga ES con un puntero
8086/88LEALoad Effective AddressCarga dirección efectiva a un registro

Operaciones de sincronización entre procesadores

Operaciones de sincronización entre procesadores
8086/88InstrucciónOpcodeSignificadoTraducciónNotas
8086/88ESCUsed with floating-point unitUsado con la unidad de coma flotante
8086/88LOCK11110000Assert BUS LOCK# signalEnciende la señal del bus LOCK#Para multiprocesamiento
8086/88WAIT10011011Wait until not busyEspera hasta que no se esté ocupadoEspera hasta que la señal dl pin de BUSY# se vuelva inactivo (usado con la unidad de coma flotante

Verificación de límites de arreglos

Verificación de límites de arreglos
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80186/188BOUNDCheck array index against boundsChequea el índice de un arreglo con límitesEleva una interrupción 5 de software si la prueba falla

Carga y guarda el registro de tareas

Carga y guarda el registro de tareas
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80286LTRLoad task registerCarga registro de tareas
80286STRStore task registerGuarda registro de tareas

Carga y guarda el estado de la máquina

Carga y guarda el estado de la máquina
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80286LMSWLoad machine status wordCarga la palabra de estatus de la máquina
80286SMSWStore machine status wordGuarda la palabra de estatus de la máquina

Operaciones para cargar y guardar tablas de descriptor

Tablas de descriptor
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80286LLDTLoad local descriptor tableCarga tabla de descriptores local
80286SLDTStore local descriptor tableGuarda tabla de descriptores local
80286LGDTLoad global descriptor tableCarga tabla de descriptores global
80286SGDTStore global descriptor tableGuarda tabla de descriptores global
80286LIDTLoad interrupt descriptor tableCarga tabla de descriptores de interrupción
80286SIDTStore interrupt descriptor tableGuarda tabla de descriptores de interrupción

Segmentos

Segmentos
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80286LSLLoad segment limitCarga límite del segmento
80286VERRVerify a segment for readingVerifica segmento para la lectura
80286VERWVerify a segment for writingVerifica segmento para la escritura

No clasificadas

No clasificadas
CPUInstrucciónOpcodeSignificadoTraducciónNotas
80286ARPLAdjust RPL field of selector
80286CLTSClear task-switched flag in register CR0
80286LARLoad access rights byte
80286LOADALLLoad all CPU registers, including internal ones such as GDTUndocumented, (80)286 and 386 only
80386LFS, LGSLoad far pointer
80386LSSLoad stack segment
80486INVDInvalidate Internal Caches
80486INVLPGInvalidate TLB Entry
80486WBINVDWrite Back and Invalidate Cache
PentiumCPUIDCPU IDentificationThis was also added to later 80486 processors
PentiumRDMSRReaD from Model-Specific Register
PentiumRDTSCReaD Time Stamp Counter
PentiumWRMSRWRite to Model-Specific Register
PentiumRSM Resume from System Management Mode This was introduced by the i386SL and later and is also in the i486SL and later. Resumes from System Management Mode (SMM)

Otras

Otras
CPUInstrucciónOpcodeSignificadoTraducciónNotas
8086/88NOP0x90No operationNo operaciónopcode (0x90) equivalente a XCHG AX, AX

Instrucciones de coma flotante

Instrucciones originales del 8087

Las siguientes son las instrucciones originales que vinieron con el coprocesador numérico Intel 8087, que estaba diseñado para suplir funcionalidad de coma flotante a los procesadores Intel 8086 y 8088.

Constantes
InstrucciónSignificadoTraducciónNotas
FLDZLoad 0.0 onto stackCarga 0,0 en la pila
FLD1Load 1.0 onto stackCarga 1,0 en la pila
FLDPILoad π onto stackCarga π en la pila
FLDL2ELoad log2(e) onto stackCarga log2(e) en la pilalog2(e) = 1,44269504088896340736
FLDLN2Load ln(2) onto stackCarha ln(2) en la pilaln(2) = 0,69314718055994530942
FLDL2TLoad log2(10) onto stackCarga log2(10) en la pilalog2(10) = 3,32192809488736234787
FLDLG2Load log10(2) onto stackCarga log10(2) en la pilalog10(2) = 0,30102999566398119521
Operaciones aritméticas
InstrucciónSignificadoTraducciónNotas
FABSAbsolute valueValor absoluto
FCHSChange signCambio de signo
FADDAddSuma
FSUBSubtractResta
FSUBRReverse subtractResta reversa
FMULMultiplyMultiplica
FDIVDivideDivideVer Error de división del Intel Pentium
FDIVRDivide reversedDivide reverso
FIADDInteger addSuma entera
FISUBInteger subtractResta entera
FISUBRInteger subtract reversedResta entera reversa
FIMULInteger multiplyMultiplicación entera
FIDIVInteger divideDivisión entera
FIDIVRInteger divide reversedDivisión entera reversa
FADDPAdd and popSuma y POP
FSUBPSubtract and popResta y POP
FSUBRPReverse subtract and popResta reversa y POP
FMULPMultiply and popMultiplica y POP
FDIVPDivide and popDivide y POP
FDIVRPDivide reversed and popDivide reverso y POP
FSCALEScale by factor of 2Escala por un factor de 2
Partes de número
InstrucciónSignificadoTraducciónNotas
FRNDINTRound to integerRedondea a entero
FXTRACTExtract exponent and significandExtrae el exponente y la parte significativa
FPREMPartial remainderResto parcial
Funciones trascendentales
InstrucciónSignificadoTraducciónNotas
FSQRTSquare rootRaíz cuadrada
FPTANPartial tangentTangente parcial
FPATANPartial arctangentArcotangente parcial
F2XM12x - 12x - 1Más preciso que 2x para cercano a cero
FYL2Xy * log2(x)y * log2(x)Si , entonces el logaritmo base - es computado
FYL2XP1y * log2(x+1)y * log2(x+1)Más preciso que cuando está cercano a cero
Carga y guarda registros
InstrucciónSignificadoTraducciónNotas
FXCHExchange registersIntercambia registros
FLDFloating point loadCarga coma flotante
FILDLoad integerCarga entero
FBLDLoad BCDCarga número en BCD
FSTPStore and popGuarda y POP
FSTFloating point storeGuarda coma flotante
FISTStore integerGuarda entero
FISTPStore integer and popGuarda entero y POP
FBSTPStore BCD and popGuarda BCD y POP
FINCSTPIncrement floating point stack pointerIncrementa el puntero de pila de coma flotante
FDECSTPDecrement floating point stack pointerDecrementa el puntero de pila de coma flotante
FFREEFree registerLibera registro
Comparaciones
InstrucciónSignificadoTraducciónNotas
FTSTTest for zeroPrueba por cero
FCOMCompareCompara
FCOMPCompare and popCompara y POP
FCOMPPCompare and pop twiceCompara y POP dos veces
FICOMInteger compareComparación entera
FICOMPInteger compare and popComparación entera y POP
FXAMExamine condition flagsExamina los flags de condición
Otras
InstrucciónSignificadoTraducciónNotas
FNOPNo operationNo operación
FWAITWait while FPU is executingEspera mientras el FPU está ejecutando
Inicialización
FINITInitialize floating point processorInicializa el procesador de coma flotante
FNINITInitialize floating point processor, no waitInicializa el procesador de coma flotante, no espera
Excepciones
InstrucciónSignificadoTraducciónNotas
FCLEXClear exceptionsAclara excepciones
FNCLEXClear exceptions, no waitAclara las excepciones, no espera
Interrupciones
InstrucciónSignificadoTraducciónNotas
FENIEnable interruptsEnciende las interrupcionesSolo en el 8087, de lo contrario, FNOP
FNENIEnable interrupts, no waitActiva las interrupciones, no esperaSolo en el 8087, de lo contrario, FNOP
FDISIDisable interruptsDesactiva las interrupcionesSolo en el 8087, de lo contrario, FNOP
FNDISIDisable interrupts, no waitDesactiva las interrupciones, no esperaSolo en el 8087, de lo contrario, FNOP
Control
InstrucciónSignificadoTraducciónNotas
FLDCWLoad control wordCarga la palabra de control
FSTCWStore control wordGuarda la palabra de control
FNSTCWStore control word, no waitGuarda la palabra de control, no espera
Estatus
InstrucciónSignificadoTraducciónNotas
FSTSWStore status wordGuarda la palabra de estatus
FNSTSWStore status word, no waitGuarda la palabra de estado, no espera
Estado
InstrucciónSignificadoTraducciónNotas
FSAVESave FPU stateGuarda el estado del FPU
FSAVEWSave FPU state, 16-bitGuarda el estado del FPU, 16 bits
FNSAVESave FPU state, no wait, 8-bitGuarda el estado de la unidad de punto flotante (FPU), no espera, 8 bits
FNSAVEWSave FPU state, no wait, 16-bitGuarda el estado del FPU, no espera, 16 bits
FRSTORRestore saved stateRestaura el estado salvado
FRSTORWRestore saved stateRestaura al estado salvadoQuizás no disponible realmente en el 8087
Ambiente
InstrucciónSignificadoTraducciónNotas
FLDENVLoad environment stateCarga el estado del ambiente
FSTENVStore FPU environmentGuarda el ambiente del FPU
FNSTENVStore FPU environment, no waitGuarda el ambiente del FPU, no espera
FSTENVWStore FPU environment, 16-bitGuarda el ambiente del FPU, 16 bits
FNSTENVWStore FPU environment, no wait, 16-bitGuarda el ambiente del FPU, no espera, 16 bits
FLDENVW

Véase también

Procesadores x86:

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.