Sei sulla pagina 1di 81

Conjunto de instrucciones del Intel 8086

AAA - ASCII Adjust for Adition


Ajustan el registro AL a valor decimal desempaquetado, en este caso en la suma. Flags modificados: AF CF (OF PF SF ZF indefinido)

AAA Operandos aceptados:


Ninguno

AAD - Ascii Adjust for Division


Ajustan el registro AL a valor decimal desempaquetado, en este caso en la divisin. Flags modificados: SF ZF PF (AF CF OF indefinido)

AAD Operandos aceptados:


Ninguno

AAM - Ascii Adjust for Multiplication


Ajustan al registro AL a valor decimal desempaquetado, en este caso en la multiplicacin. Flags modificados: PF SF ZF (AF CF OF definido)

AAM Operandos aceptados:


Ninguno

AAS - Ascii Adjust for Subtraction


Ajustan al registro AL a valor decimal desempaquetado, en este caso en una resta. Flags modificados: AF CF (OF SF PF ZF indefinidos)

AAS Operandos aceptados:


Ninguno

ADC - Add With Carry


Suma dos operandos binarios colocando el resultado en el destino. Si CF est activada, se le aade 1 al destino. Flags modificados: AF CF OF SF PF ZF

ADC dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed accum,immed

ADD - Arithmetic Addition


Suma aritmetica, suma dest y src y reemplaza dest con el resultado de la suma Flags modificados: AF CF OF PF SF ZF

ADD dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed accum,immed

AND - Logical And


Realiza la operacin lgica AND y lo sustituye en el destino. Flags modificados: CF OF PF SF ZF (AF indefinido)

AND dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed accum,immed

CALL - Procedure Call


Transfiere el control del programa a un procedimiento, salvando previamente en la pila la direccin de la instruccin siguiente, para poder volver a ella una vez ejecutado el procedimiento.

Flags modificados: Ninguno

Call dest

CALL - Procedure Call


Operandos aceptados:
rel16 (near, IP relative) reg16 (near, register indirect) mem16 (near, memory indirect) ptr16:16 (far, full ptr supplied) ptr16:16 (far, ptr supplied, prot. mode) m16:16 (far, indirect) m16:16 (far, indirect, prot. mode) ptr16:16 (task, via TSS or task gate) m16:32 (task) ptr16:16 (gate, same privilege) m16:16 (gate, same privilege) ptr16:16 (gate, more priv, no parm) m16:16 (gate, more priv, no parm) ptr16:16 (gate, more priv, x parms) m16:16 (gate, more priv, x parms) rel32 (near, IP relative) reg32 (near, register indirect) mem32 (near, memory indirect) ptr16:32 (far, full ptr supplied) ptr16:32 (far, ptr supplied, prot. mode) m16:32 (far, indirect) m16:32 (far, indirect, prot. mode) m16:16 (task, via TSS or task gate) m16:32 (task) ptr16:32 (gate, same privilege) m16:32 (gate, same privilege) ptr16:32 (gate, more priv, no parm) m16:32 (gate, more priv, no parm) ptr16:32 (gate, more priv, x parms) m16:32 (gate, more priv, x parms)

CBW - Convert Byte to Word


Convertir byte en palabra. Flags modificados: Ninguno

CBW Operandos aceptados: Ninguno

CLC - Clear Carry


Borrar flag de acarreo Flags modificados: CF

CLC Operandos aceptados: Ninguno

CLD - Clear Direction Flag


Pone a 0 el indicador de direccin DF, por lo que los registros SI y/o DI se autoincrementan en las operaciones de cadenas, sin afectar al resto de los indicadores. Flags modificados: DF

CLD Operandos aceptados: Ninguno

CLI - Clear Interrupt Flag


Borra el indicador de activacin de interrupciones IF, lo que desactiva las interrupciones enmascarables.
Flags modificados: IF

CLI Operandos aceptados: Ninguno

CMC - Complement Carry Flag


Complementa el indicador de acarreo CF invirtiendo su estado.
Flags modificados: Ninguno

CMC Operandos aceptados: Ninguno

CMP - Compare
Resta origen de destino sin retornar ningn resultado. Los operandos quedan inalterados, paro los indicadores pueden ser consultados mediante instrucciones de bifurcacin condicional. Flags modificados: AF CF OF PF SF ZF

CMP dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed accum,immed

CMPS - Compare String


Compara dos cadenas restando al origen el destino. Ninguno de los operandos se alteran, pero los indicadores resultan afectados. La cadena origen se direcciona con registro SI sobre el segmento de datos DS y la cadena destino se direcciona con el registro DI sobre el segmento extra ES. Los registros DI y SI se autoincrementan o autodecrementan segn el valor del indicador DF (vanse CLD y STD) en una o dos unidades, dependiendo de si se trabaja con bytes o con palabras. Flags modificados: AF CF OF PF SF ZF CMPS dest,src Operandos aceptados:
dest,src

CMPXCHG - Compare and Exchange


Compara el acumulador (8 - 32 bits) con dest Flags modificados: AF CF OF PF SF ZF

CMPXCHG dest,src Operandos aceptados:


reg,reg mem,reg

CWD - Convert Word to Doubleword


Expande el signo del registro AX sobre el registro DX, copiando el bit ms significativo de AH en todo DX. Flags modificados: Ninguno

CWD Operandos aceptados: Ninguno

DIV
Divide Division sin signo. divide DX:AX / fuente y guarda cociente en AX y resto en DX Flags modificados: AF,CF,OF,PF,SF,ZF undefined

Operandos aceptados: reg8 reg16 reg32 mem8 mem16 mem32

DEC
Decremento Decrementa en uno el contenido del destino Flags modificados: AF OF PF SF ZF

Operandos aceptados: reg8 mem reg16/32

DAS
Ajuste decimal por resta Corrige resultado (en AL) de una operacion de resta anterior BCD Flags modificados: AF CF PF SF ZF (OF undefined)

Operandos aceptados: None

DAA
Ajuste decimal por suma Corrige resultado (en AL) de una operacion de suma anterior BCD Flags modificados: AF CF PF SF ZF (OF undefined)

Operandos aceptados: None

ESC
Proporciona acceso al procesador para los otros procesadores residentes Flags modificados: Ninguno

Esc immed,src Operandos aceptados: immed,red immed,mem

HLT - Halt CPU


Parar el procesador Flags modificados: Ninguno

HLT Operandos aceptados: Ninguno

IMUL-Signed Multiply
Multiplica AL o AX*fuente y guarda el resultado en DX:AX Flags modificados: CF OF (AF,PF,SF,ZF undefined) IMUL src Operandos aceptados: reg8; reg16; reg32; mem8; mem16; mem32; reg16, reg16; reg32, reg32; reg16, mem16; reg32,mem32; reg16,immed; reg32,immed; reg16,reg16,immed; reg32,reg32,immed; reg16, mem16,immed; reg32,mem32,immed.

IN-Input byte or word from port


Carga desde un puerto origen un byte o word en AL o AX Flags modificados: NONE IN accum,port Operandos aceptados: accum immed8, accum DX

INC-Increment
Incrementa a 1el contenido del destino Flags modificados: AF OF PF SF ZF INC dest Operandos aceptados: reg8 reg12 reg32 mem

INT-Interrupt
Inicia una interrupcin de software, empujando las Flags, la limpieza de Trap y Flags de interrupcin, empujando CS seguido por IP y la carga CS: IP con el valor encontrado en la tabla de vectores de interrupcin. Flags modificados: TF IF INT num Operandos aceptados: 3, immed8

INTO-Interrupt on Overflow
Si el indicador de desbordamiento de Flags se establece en esta instruccin genera una INT 4 que hace que el cdigo de abordar 0000:0010 para ser ejecutado. Flags modificados: IF TF INTO Operandos aceptados: NONE

IRET- Interrupt Return


Devuelve el control al punto de la interrupcin por estallar IP, CS y luego las Flags de la pila y contina la ejecucin en dicho punto. Flags modificados: AF CF DF IF PF SF TF ZF IRET Operandos aceptados: IRET

IDIV-Signed integer division


Division con signo. Realiza la misma operacion que DIV pero con signo Flags modificados: (AF,CF,OF,PF,SF,ZF undefined) IDIV, src Operandos aceptados: reg8 reg16 reg32 mem8 mem16 mem32

JCXZ - Jump if Register (E)CX is Zero


Causas de ejecucin a la rama de "Label" si el registro CX es cero. Usos comparacin sin signo. Flags modificados: NONE JCXZ label Operandos aceptados: Label: jump, no jump

JMP - Unconditional Jump


Incondicionalmente pasa el control a "label". Saltos de forma predeterminada estn dentro de -32768 a 32767 bytes de la siguiente instruccin el salto Flags modificados: NONE JMP traget Operandos aceptados: rel8 rel16 rel32 reg16 reg32 mem16 mem32 ptr16:16 mem16:16 ptr16:32 m16:32

LAHF - Load Register AH From Flags


Copias bits 0-7 del registro de banderas en AH. Esto incluye las banderas AF, CF, PF, SF y ZF bits otros no estn definidos. Flags modificados: NONE AH := SF ZF xx AF xx PF xx CF Operandos aceptados: NONE

LEA - Load Effective Address


Tranfiere direccion offset del "src" para el registro destino Flags modificados: NONE LEA dest,src Clocks Operands: reg, mem

LES - Load Pointer Using ES


Cargas de punteros de 32 bits desde la fuente de la memoria al destino del registro y ES. El offset se coloca en el registro de destino y el segmento en ES. Flags modificados: NONE LES dest,src Clocks operands: reg, mem

LES - Load Pointer Using ES


Cargas de punteros de 32 bits desde la fuente de la memoria al destino del registro y ES. El offset se coloca en el registro de destino y el segmento en ES. Flags modificados: NONE LES dest,src Clocks operands: reg, mem

LFS - Load Pointer Using FS


Cargas de punteros de 32 bits desde la fuente de la memoria al destino del registro y FS. El offset se coloca en el registro de destino y el segmento en FS. Flags modificados: NONE LFS dest,src Clocks operands: reg, mem

LOCK - Lock Bus


Esta instruccin es un prefijo que hace que la CPU afirme la seal de bus lock durante la ejecucin de la siguiente instruccin. Se utiliza para evitar dos procesadores de la actualizacin de la ubicacin de los mismos datos Flags modificados: NONE LOCK Clocks operands: NONE

LODS - Load String (Byte, Word or Double)


Transferencias de cadenas de elementos dirigidos por DS: SI (aunque un operando es suministrado) al acumulador. SI se incrementa basandose en el tamao del operando o en base a la instruccin utilizado. Flags modificados: NONE LODS src LODSB LODSW Clocks operands: src

LOOP - Decrement CX and Loop if CX Not Zero


Decrementa CX en 1 y transfiere el control a "label" si CX no es cero. La "label" operando debe estar dentro de -128 o 127 bytes de la instruccin despus de la instruccin del bucle. Flags modificados: NONE LOOP label Clocks operands: label: jump, no jump

LOOPE/LOOPZ - Loop While Equal / Loop While Zero


Decrementa CX en 1 (sin modificar las Flags) y transfiere el control a "label" si CX! = 0 y la Flag Cero est establecida. La "label" operando debe estar dentro de -128 o 127 bytes de la instruccin despus de la instruccin del bucle. Flags modificados: NONE LOOPE label LOOPZ label Clocks operands: label: jump, no jump

LOOPNE/LOOPNZ - Loop While Not Equal / Loop While Not Zero


Decrementa CX en 1 (sin modificar las Flags) y transfiere el control a "label" si CX! = 0 y la Flag Cero es clara. La "label" operando debe estar dentro de -128 o 127 bytes de la instruccin despus de la instruccin del bucle. Flags modificados: NONE LOOPNZ label LOOPNE label Clocks operands: label: jump, no jump

MOV - Move Byte or Word


Copia el Byte o la palabra del operando source al operando destino. Si el destino es una interrupcin SS se desactiva. Flags modificados: Ninguno

MOVS dest,src Operandos aceptados:


reg,reg mem,reg reg,mem mem,immed reg,immed mem,accum accum,mem segreg,reg16 segreg,mem16 reg16,segreg mem16,segreg reg32,CR0/CR2/CR3 CR0,reg32 CR2,reg32 CR3,reg32 reg32,DR0/DR1/DR2/DR3 reg32,DR6/DR7 DR0/DR1/DR2/DR3,reg32 DR6/DR7,reg32 reg32,TR6/TR7 TR6/TR7,reg32 reg32,TR3

MOVS - Move String


Transfiere un byte o una palabra de la cadena origen direccionada por DS:SI a la cadena destino direccionada por ES:DI, incrementando o decrementando a continuacin los registros SI y DI segn el valor de DF (vanse CLD y STD) en una o dos unidades, dependiendo de si se trabaja con bytes o con palabras. Puede ser con String (MOVS), con Byte (MOVSB), con Word (MOVSW) y con DoubleWord (MOVSD). Flags modificados: Ninguno

MOVS dest,src Operandos aceptados:


dest,src

MUL - Unsigned Multiply


Multiplica el contenido sin signo del acumulador por el operando origen. Si el operando destino es un byte el acumulador es AL guardando el resultado en AH y AL, si el contenido de AH es distinto de 0 activa los indicadores CF y OF. Flags modificados: CF OF(AF PF SF ZF indefinido)

MUL src Operandos aceptados:


reg8 reg16 reg32 mem8 mem16 mem32

NEG - Two's Complement Negation


Resta el destino de 0 y guarda el destino de complemento a 2 en destino. Flags modificados: AF CF OF PF SF ZF

NEG dest Operandos aceptados:


reg mem

NOP - No Operation
Es una instruccin que no hace nada. Sirve para parchear segmentos de cdigo. Flags modificados: Ninguno

NOP Operandos aceptados:


Ninguno

NOT - One's Compliment Negation


Invierte los bits de destino operando como complemento a 1. Flags modificados: Ninguno

NOT dest Operandos aceptados:


reg mem

OR - Inclusive Logical OR
Realiza una operacin O lgico a nivel de bits entre los dos operandos, almacenndose despus el resultado en el operando destino. Flags modificados: CF OF PF SF ZF

OUT port,accum Operandos aceptados:


reg,reg mem,reg reg,mem mem,immed mem8,immed8 mem16,immed16 acum,immed

OUT - Output Data to Port


Transfiere un byte o palabra del registro AL o AX a un puerto de salida. El puerto puede especificarse con un valor fijo entre 0 y 255 a travs del valor contenido en el registro DX (de 0 a 65535). Flags modificados: Ninguno

OUT port,accum Operandos aceptados:


Immed8,accum Dx,accum

POP - Pop Word off Stack


Transfiere el elemento palabra que se encuentra en lo alto de la pila (apuntado por SP) al operando destino que a de ser tipo palabra, e incrementa en dos el registro SP. Flags modificados: Ninguno

POP dest Operandos aceptados:


Reg16 Reg32 Segreg Mem16 Mem32

POPF/POPFD - Pop Flags off Stack


Traslada al registro de los indicadores la palabra almacenada en la cima de la pila; a continuacin el puntero de pila SP se incrementa en dos.
Flags modificados: Todas

POPF Operandos aceptados:


Ninguno

PUSH - Push Word onto Stack


Decrementa el puntero de pila (SP) en 2 y luego transfiere la palabra especificada en el operando origen a la cima de la pila.
Flags modificados: Ninguno

PUSH src Operandos aceptados:


Reg16 Reg32 Segreg Mem16 Mem32 Immed

Decrementa en dos el puntero de pila y traslada a la cima de la pila el contenido de los indicadores.
Flags modificados: Ninguno

PUSHF/PUSHFD - Push Flags onto Stack

PUSHF Operandos aceptados:


Ninguno

RCL - Rotate Through Carry Left


Rotar a la izquierda los bits del operando destino junto con el indicador de acarreo CF el nmero de bits especificado en el segundo operando. Flags modificados: CF OF

RCL dest,count Operandos aceptados:


reg,1 mem,1 reg,CL mem,CL reg,immed8 mem,immed8

RCR - Rotate Through Carry Right


Rotar a la derecha los bits del operando destino junto con el indicador de acarreo CF el nmero de bits especificado en el segundo operando. Flags modificados: CF OF

RCR dest,count Operandos aceptados:


reg,1 mem,1 reg,CL mem,CL reg,immed8 mem,immed8

REP - Repeat String Operation


Repite la ejecucin de intrucciones de cadena mientras CX != 0. Despus de cada operacin de cadena, CX es decrementado y ZF se testea. Sirve para repetir la instruccin CX veces. Flags modificados: Ninguno

REP Operandos aceptados:


Ninguno

Repite la ejecucin de intrucciones de cadena mientras CX != 0 y ZF es 1. Despus de cada operacin de cadena, CX es decrementado y ZF se comprueba. Sirve para repetir mientras sean iguales un mximo de CX veces. Flags modificados: Ninguno

REPE/REPZ - Repeat Equal / Repeat Zero

REPE REPZ Operandos aceptados:


Ninguno

REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero


Repite la ejecucin de intrucciones de cadena mientras CX != 0 y ZF es 0. Despus de cada operacin de cadena, CX es decrementado y ZF se comprueba. Sirve para repetir mientras sean diferentes un mximo de CX veces. Flags modificados: Ninguno

REPNE REPNZ Operandos aceptados:


Ninguno

RET/RETF - Return From Procedure


Retorna de un procedimiento extrayendo de la pila la direccin de la siguiente direccin. Flags modificados: Ninguno

RET nBytes RETF nBytes RETN nBytes Operandos aceptados:


retn retn immed retf (PM, same priv.) retf (PM, lesser priv.) retf immed retf immed (PM, same priv.) retf immed (PM, lesser priv.)

ROL - Rotate Left


Rota a la izquierda los bits del operando destino el nmero de bits especificado en el segundo operando, que puede ser 1 CL previamente cargado con el valor del nmero de veces. Flags modificados: CF OF

ROL dest,count Operandos aceptados:


Reg,1 Mem,1 Reg,CL Mem,CL Reg,immed8 Mem,immed8

ROR - Rotate Right


Rota a la derecha los bits del operando destino el nmero de bits especificado en el segundo operando. Si el nmero de bits es 1 se puede poner directamente, en caso contrario debe ponerse a travs de CL.

Flags modificados: CF OF ROL dest,count Operandos aceptados:


Reg,1 Mem,1 Reg,CL Mem,CL Reg,immed8 Mem,immed8

SAHF - Store AH Register into FLAGS


Transfiere los bits 0-7 de AH dentro del registro de Flags, estos incluyen AF, CF, PF, SF y ZF. Flags modificados: AF CF PF SF ZF

SAHF Operandos aceptados:


Ninguno

SBB - Substract with Borrow/Carry


Resta source de destino y resta 1 extra a Carry Flag si esta flag est establecida. El resultado se guarda en destino. Flags modificados: AF CF OF PF SF ZF

SBB dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed acuum,immed

SCAS - Scan String


Compara la cadena de destino con AL o AX. Tambin est SCASB(Byte), SCASW(Word) y SCASD(DoubleWord) Flags modificados: AF CF OF PF SF ZF

SCAS string Operandos aceptados:


string

SHL/SAL - Shift Logical Left


Desplaza a la izquierda con ceros entrando desde la derecha, el ltimo bit que queda desplazado fuera se guarda en Carry Flag. Flags modificados: CF OF PF SF ZF (AF indefinido)

SHL dest,count Operandos aceptados:


reg,1 mem,1 reg,CL mem,CL reg,immed8 mem,immed8

SHR/SAR - Shift Logical Right


Desplaza a la derecha con ceros entrando desde la izquierda, el ltimo bit que queda desplazado fuera se guarda en Carry Flag. Flags modificados: CF OF PF SF ZF (AF indefinido)

SHR dest,count Operandos aceptados:


reg,1 mem,1 reg,CL mem,CL reg,immed8 mem,immed8

STC - Set Carry


Establece Carry Flag a 1. Flags modificados: CF

STC Operandos aceptados:


Ninguno

STD - Set Direction Flag


Establece Direction Flag a 1, lo que causapermite el reconocimiento de todas las interrupciones de Hardware. Flags modificados: IF

STD Operandos aceptados:


Ninguno

STI - Set Interrupt Flag


Establece Interrupt Flag a 1, lo que permite el reconocimiento de todas las interrupciones de Hardware. Flags modificados: IF

STI Operandos aceptados:


Ninguno

STOS - Store String


Almacena en la cadena destino un byte del acumulador (STOSB) o dos bytes (STOSW). Flags modificados: Ninguno

STOS dest Operandos aceptados:


dest

SUB - Substract
La fuente se resta del destino y el resultado se guarda en el destino. Flags modificados: AF CF OF PF SF ZF

SUB dest,rsc Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed acuum,immed

TEST - Test For Bit Pattern


Realiza un AND entre los dos operandos y actualiza las flags pero sin guardar el resultado. Flags modificados: CF OF PF SF ZF (AF indefinido)

TEST dest,rsc Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed acuum,immed

WAIT - Espera de Eventos


La CPU entra en estado de espera hasta que las seales del coprocesador hayan terminado. Esta instruccin se utiliza para prevenir a la CPU de acceder a la memoria que podra estar en uso por el coprocesador. FWAIT es igual que WAIT. Flags modificados: Ninguno

WAIT Operandos aceptados:


Ninguno

XCHG - Exchange
Intercambia los contenidos de origen y destino. Flags modificados: Ninguno

XCHG dest,src Operandos aceptados:


reg,reg mem,reg reg,mem accum,reg reg,accum

XLAT/XLATB - Translate
Reemplaza el byte de AL con el byte procedente de la tabla de usuario direccionada por BX. El valor original de AL es el ndice dentro de la tabla de traduccin. Flags modificados: Ninguno

XLAT translation-table XLATB (masm 5.x) Operandos aceptados:


table offset

XOR - Exclusive OR
Realiza un OR bit a bit de los operandos y lo guarda en destino. Flags modificados: CF OF PF SF ZF (AF indefinido)

XOR dest,src Operandos aceptados:


reg,reg mem,reg reg,mem reg,immed mem,immed accum,immed

Resumen de instrucciones del 8086 disponible en: http://bit.ly/inst8086

Potrebbero piacerti anche