Está en la página 1de 35

MICROPOCESADOR 8086

NOTAS DE CURSO
(Versin 2.1)

Arquitectura de Computadores 2

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

NDICE
DIRECCIONAMIENTO DE MEMORIA............................................................................................................. 2
MODOS DE DIRECCIONAMIENTO................................................................................................................. 3
REGISTRO...................................................................................................................................................................................
VALOR o INMEDIATO..................................................................................................................................................................
DIRECTO......................................................................................................................................................................................
INDIRECTO..................................................................................................................................................................................

3
3
3
3

INSTRUCCIONES............................................................................................................................................ 5
CDIGO.................................................................................5
ARITMTICAS.............................................................................................................................................................................. 6
ADD....................................................................................6
ADC....................................................................................6
SUB ...................................................................................6
SBB....................................................................................6
MUL....................................................................................7
DIV....................................................................................8
NEG....................................................................................8
CBW....................................................................................9
INC....................................................................................9
DEC....................................................................................9
LGICAS.................................................................................................................................................................................... 10
AND...................................................................................10
OR....................................................................................10
XOR...................................................................................10
NOT...................................................................................11
CMP...................................................................................11
DESPLAZAMIENTO................................................................................................................................................................... 12
SAL/SHL...............................................................................12
SHR...................................................................................13
SAR...................................................................................13
ROL...................................................................................14
ROR...................................................................................15
MOVIMIENTO e I/O.................................................................................................................................................................... 16
MOV...................................................................................16
IN....................................................................................16
OUT...................................................................................17
MANEJO DE FLAGS.................................................................................................................................................................. 18
CLC...................................................................................18
STC...................................................................................18
CLI...................................................................................18
STI...................................................................................18
BIFURCACIN INCONDICIONAL.............................................................................................................................................. 20
CALL..................................................................................20
JMP...................................................................................21
RET...................................................................................21
BIFURCACIN CONDICIONAL................................................................................................................................................. 22
JA / JNBE (no considera signo)........................................................22
JB / JNAE / JC (no considera signo)...................................................23
JNB / JAE / JNC (no considera signo)..................................................23
JBE/JNA (no considera signo)..........................................................24
JE/JZ ................................................................................24
JG/JNLE (considera signo).............................................................25
JNG/JLE (considera signo).............................................................25
JNE/JNZ...............................................................................26
JNO...................................................................................26
JNS...................................................................................27
JO....................................................................................27
JS....................................................................................28
MANEJO DE STACK.................................................................................................................................................................. 29
PUSH..................................................................................29
POP...................................................................................29
PUSHF.................................................................................29
POPF..................................................................................30
INTERRUPCIONES.................................................................................................................................................................... 31
INT...................................................................................31
IRET..................................................................................31

CARTILLA REDUCIDA................................................................................................................................... 32

Arquitectura de Computadores 2

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DIRECCIONAMIENTO DE MEMORIA
Los registros del 8086 son de 16 bits, por lo tanto el nmero de direcciones posibles a
direccionar con 1 solo registro es:
216 = 6553610 = 1000016

lo cual representa un total de 64 Kbytes y los valores de direcciones se encuentran en el


rango de 0 a FFFF.
Para superar este lmite se utilizan 2 registros para direccionar memoria: Uno de
SEGMENTO y otro de DESPLAZAMIENTO (offset) dentro del segmento. La notacin
utilizada para una direccin segmentada es:
SEGMENTO:DESPLAZAMIENTO
La relacin entre la direccin de memoria real y la direccin segmentada es:
DIR = SEGMENTO * 16 + DESPLAZAMIENTO
Al multiplicar por 16 se obtienen 4 bits ms con lo que ahora se tiene:
2 20 = 104857610 = 10000016

con lo cual tenemos un total de 1024Kb = 1Mb de memoria direccionable. Los valores para
las direcciones reales se encuentran en el rango 0 a FFFFFh.
Es importante hacer notar que una misma direccin de memoria puede ser direccionada
con distintos valores de segmento y desplazamiento
Ej:
100:50 = 105:0 =0:1050, trabajando en base 16.

Arquitectura de Computadores 2

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MODOS DE DIRECCIONAMIENTO
Se entiende por modos de direccionamiento a las diferentes formas que pueden tomar los
parmetros de las instrucciones del procesador.
Diferentes autores clasifican en forma distinta los modos de direccionamiento del 8086.
Nosotros distinguiremos fundamentalmente cuatro modos diferentes:

REGISTRO
Un parmetro que direcciona a un registro est utilizando el modo de direccionamiento
REGISTRO.
Ej:

MOV Ax,Bx

En este ejemplo los dos parmetros direccionan un registro.

VALOR o INMEDIATO
El modo de direccionamiento INMEDIATO es utilizado cuando se hace referencia a un valor
constante. Este se codifica junto con la instruccin. Es decir dicho parmetro representa a su
valor y no a una direccin de memoria o un registro que lo contiene.
Ej:

MOV Ax,500

En este ejemplo el nmero 500 es un parmetro inmediato.

DIRECTO
Se utiliza el modo directo cuando se referencia a una direccin de memoria y la misma esta
codificada junto con la instruccin.
Ej:
MOV Al,[127]
En este ejemplo el desplazamiento de la direccin de memoria se codifica junto con la
instruccin y el segmento se asume a DS.
Si MEMORIA es un array de bytes que representa a la memoria la instruccin anterior se
puede poner como:
Al := MEMORIA[ DS:127 ]

INDIRECTO
Se utiliza el modo directo cuando se referencia a una direccin de memoria a travs de uno
o varios registros
Ej:

MOV Al,[Bx]

Aqu el offset de la direccin de memoria est contenido en el registro Bx y al igual que el


caso anterior como no se especifica el segmento se asume DS.
Si MEMORIA es un array de bytes que representa a la memoria la instruccin anterior se
puede poner como:
Al := MEMORIA[ DS:Bx ]
La especificacin completa de las expresiones que van dentro de los parntesis rectos es:

{ Bx | Bp } [ + { Si | Di } ] [ + desplazamiento ]
{ Si | Di }

[ + desplazamiento ]

desplazamiento
Arquitectura de Computadores 2

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

Donde la expresin entre {} es obligatoria, la expresin entre [] es opcional y el signo |


implica opcin entre dos expresiones.
Fuera del parntesis recto se puede indicar cual es el registro de segmento usado para
completar la direccin de memoria. En caso que este no se especifique siempre se asume
uno por defecto.
Ejemplos:
Mov Ax, [Bp + 3]
Add [Bx + Si ], 4
Sub Es:[Bx + Di + 5],Dx
En la Tabla 1 se indican las combinaciones posibles entre registros ndice y los segmentos
as como las asignaciones por defecto.
Tabla 1.Combinacin entre registros de segmento e indices.

IP
SP
BP
BX
SI
DI

Arquitectura de Computadores 2

CS
Si
Prefijo
Prefijo
Prefijo
Prefijo

SS

DS

ES

si
por defecto
prefijo
prefijo
prefijo

prefijo
por defecto
por defecto
por defecto

prefijo
prefijo
prefijo
por defecto
(cadenas)

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

INSTRUCCIONES
Para describir a cada una de las instrucciones usaremos el siguiente formato:
CDIGO
op1 ,

op2

Formato:

CDIGO

Tipo Args:

Se indica qu forma puede tomar cada parmetro poniendo debajo del


mismo una lista de cdigos entre parntesis que definimos as:
A

direccin absoluta inmediata ( 4 bytes )

direccin absoluta inmediata ( 2 bytes )

operando inmediato ( 1 o 2 bytes )

desplazamiento inmediato ( 1 byte )

registro de uso general ( 8 o 16 bits )

registro de uso general ( 16 bits )

palabra de memoria ( 1 o 2 bytes )

palabra de memoria ( 2 bytes )

doble palabra de memoria ( 4 bytes )

CL

el nombre de un registro en particular

Lgica:

Se indica usando pseudo cdigo cual es


la lgica de la instruccin.

Descripcin:

Descripcin de la semntica de la instruccin.

Banderas:
OF

DF

IF

TF

SF

ZF

AF

PF

CF

En la tabla de Banderas se indica cmo afecta a las flags del procesador la


ejecucin de la instruccin, usando el siguiente cdigo:

Arquitectura de Computadores 2

afecta siempre el valor de la flag colocando el valor apropiado


segn corresponda.

el valor de la flag luego de la ejecucin de la instruccin es


indeterminado

la ejecucin de la instruccin no afecta el valor de flag

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ARITMTICAS
ADD
Formato:

ADD

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 + op2

Descripcin:

Suma los dos operandos y almacena el resultado en op1 , por lo tanto


ambos deben tener el mismo tipo

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

ADC
Formato:

ADC

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 + op2 + c

Descripcin:

Idem a ADD pero adems suma el valor del carry.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

SUB
Formato:

SUB

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 op2

Descripcin:

Idem a ADD pero realiza la resta en lugar de la suma.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

SBB
Formato:

SBB

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 op2 c

Descripcin:

Idem a SUB pero adems resta el carry.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MUL
Formato:

MUL

Tipo Args:
Lgica:

op
( r,m)

si op es de tipo byte

Ax = Al *op

sino si op es de tipo palabra

Dx, Ax = Ax* op

fin si
si la mitad superior del resultado es 0
sino
fin si

CF = 0
CF = 1

OF = CF

Descripcin:

Multiplica sin considerar el signo, el acumulador ( Ax o Ax) por el


operando op segn este ltimo sea de tipo byte o palabra.
En caso que op sea de tipo byte ls resultado se almacena en Ax si es de
tipo palabra se almacena en el par de registros Ax , Dx colocando la parte
ms significativa en Dx .

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DIV
Formato:

DIV

Tipo Args:
Lgica:

op
( r,m)

si op es de tipo byte
si Ax div op > FFh
else

INT 0

Al = Ax div op
Ah = Ax mod op

fin si
fin si
sino si op es de tipo palabra
si Dx: Ax div op > FFh
else

INT 0

Ax = Dx: Ax div op
Dx = Ax mod op

fin si
Error! Objects cannot be created from editing field codes.
Descripcin:

Divide sin considerar el signo, el acumulador Ax por el operando op si


este ltimo es de tipo byte. Si op es de tipo palabra el nmero dividido por
ste es Dx: Ax .
En caso que op sea de tipo byte el cociente se almacena en Al y el resto
en Ah . Si es de tipo palabra el cociente se almacena en Dx y el resto en

Ax

Si el cociente es mayor que el nmero mximo representable ( FFh o


FFFFh segn sea el caso), el resultado queda indefinido y se genera una
interrupcin tipo 0.
Banderas
OF DF

IF

TF

SF

ZF

AF

PF

CF

PF

CF

NEG
Formato:

NEG

Tipo Args:
Lgica:

op
( r,m)

si op es de tipo byte

op = FFh op
op = op + 1
sino si op es de tipo palabra
op = FFFFh op
op = op + 1
fin si
Descripcin:

Calcula el complemento a 2 de op

Banderas:
OF DF
Arquitectura de Computadores 2

IF

TF
8

SF

ZF

AF

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

CBW
Formato:

CBW

Lgica:

si Al < 80h

sino
fin si
Descripcin:

Ah = 00h
Ah = FFh

Copia el bit 7 del registro AL en todos los bits del registro AH; es decir
expande el bit de signo de AL

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

INC
Formato:

INC

Tipo Args:

op
( r,m)

Lgica:

op = op + 1

Descripcin:

Incrementa el operando destino.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

DEC
Formato:

DEC

Tipo Args:

op
( r,m)

Lgica:

op = op 1

Descripcin:

Decrementa el operando destino.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

LGICAS
AND
Formato:

AND

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 op2


CF = OF = 0
Descripcin:

Calcula el "y" lgico bit a bit entre op1 y op2 .

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

OR
Formato:

OR

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op1 op2


CF = OF = 0
Descripcin:

Calcula el "o" lgico inclusivo bit a bit entre op1 y op2

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

XOR
Formato:

XOR

Tipo Args:
Lgica:

Descripcin:

op1 ,

op2

( r,m)

(r,m,i)

op1 op1 op2


CF = OF = 0
Calcula el "o" lgico exclusivo bit a bit entre op1 y op2 .

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

10

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

NOT
Formato:

NOT

Tipo Args:

op
( r,m)

Lgica:

op1 op1 op2

Descripcin:

Calcula el complemento a 1 de op . Es decir, cambia unos por cero y ceros


por unos.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

CMP
Formato:

CMP

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op2

Descripcin:

Resta op1 de op2 pero solo afecta las flags ignorando el resultado. Los
operandos quedan inalterados pudindose consultar las flags mediante una
operacin de bifurcacin condicional.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

11

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DESPLAZAMIENTO
SAL/SHL
Formato:

SAL

op1 ,

op2

SHL

op1 ,

op2

( r,m)

(1, CL)

Tipo Args:
Lgica:

corre op1 , op2 lugares a la izq.


Ej:

SAL Al,1

CF
Antes

Al

a b c d e f

g h

Al
Despues h
Descripcin:

b c d e f

g h 0

Desplaza a la izquierda los bits de op1 el nro. de bits especificado por op2 .
Los bits a la derecha se rellenan con ceros.
Si el nro. de bits a desplazar es 1, se puede especificar directamente. Si es
mayor que 1 debe cargarse en CL.
CF contiene luego de la ejecucin el ultimo bit de op1 en ser desplazado
"fuera" de la representacin.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

12

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

SHR
Formato:

SHR

op1 ,

Tipo Args:

( r,m)

(1, CL)

Lgica:

op2

corre op1 , op2 lugares a la der.


Ej:

SHR Al,1

Al

Descripcin:

CF

Antes

a b c d e f

g h

Despues

Al
0 a b c d e f

Desplaza a la derecha los bits de op1 el nro. de bits especificado por op2 .
Los bits a la derecha se rellenan con ceros.
Si el nro. de bits a desplazar es 1, se puede especificar directamente. Si es
mayor que 1 debe cargarse en CL.
CF contiene luego de la ejecucin el ultimo bit de op1 en ser desplazado
"fuera" de la representacin.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

SAR
Formato:

SAR

Tipo Args:
Lgica:

op1 ,

op2

( r,m)

(1, CL)

corre op1 , op2 lugares a la derecha expandiendo el signo.


Ej:

SAR Al,1

Al
Antes

CF

a b c d e f

g h

Al
Despues
Descripcin:

a a b c d e f

Desplaza a la derecha los bits de op1 el nro. de bits especificado por op2 .
Los bits a la derecha se rellenan con el signo del primero operando.
Si el nro. de bits a desplazar es 1, se puede especificar directamente. Si es
mayor que 1 debe cargarse en CL.
CF contiene luego de la ejecucin el ultimo bit de op1 en ser desplazado
"fuera" de la representacin.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

13

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ROL
Formato:

ROL

Tipo Args:

op1 ,

op2

( r,m)

(1, CL)

Lgica:

rota op1 , op2 lugares a la izquierda.

Ej:

ROL Al,1

CF
Antes

Al
a b c d e f

g h

Al
Despues

Descripcin:

b c d e f

g h a

Rota a la izquierda los bits de op1 el numero de bits especificado por op2
Si el nro. de bits a desplazar es 1, se puede especificar directamente. Si es
mayor que 1 debe cargarse en CL.
CF contiene luego de la ejecucin el ultimo bit de op1 en ser desplazado
"fuera" de la representacin.
OF contiene el xor del CF con el bit ms significativo del resultado.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

14

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ROR
Formato:

ROR

Tipo Args:

op1 ,

op2

( r,m)

(1, CL)

Lgica:

rota op1 , op2 lugares a la izquierda.

Ej:

ROR Al,1

Descripcin:

Antes

Al
a b c d e f

Despues

Al
h a b c d e f

g h

CF
?

Rota a la derecha los bits de op1 el numero de bits especificado por op2
Si el nro. de bits a desplazar es 1, se puede especificar directamente. Si es
mayor que 1 debe cargarse en CL.
CF contiene luego de la ejecucin el ultimo bit de op1 en ser desplazado
"fuera" de la representacin.
OF contiene el xor del CF con el bit menos significativo del resultado.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

15

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MOVIMIENTO e I/O
MOV
Formato:

MOV

Tipo Args:

op1 ,

op2

( r,m)

(r,m,i)

Lgica:

op1 op2

Descripcin:

Transfiere un byte o una palabra desde el operando fuente al operando


destino.
Ambos operandos deben ser del mismo tipo (byte o palabra).
El contenido especificado por el elemento fuente se copia sobre el
elemento destino, quedando inalterado el elemento fuente.

Atencin:

No se puede mover memoria a memoria.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

IN
Formato:

IN

Tipo Args:
Lgica:

op1 ,

op2

(AL, AX)

(i,DX)

si op1 = Al

Al = I/ O(op 2 )
sino si op1 = AX
Ax = I/ O(op 2 )
fin si
Descripcin:

Transfiere un byte o una palabra de una puerta de entrada del procesador


al registro Al o Ax, respectivamente.
El nro. de la puerta se puede especificar mediante:

Un valor fijo (de o a 255).

Un valor variable, el contenido en el registro Dx (de 0 a 65535),


pudindose acceder a 64K puertas de entrada.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

16

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

OUT
Formato:

OUT

Tipo Args:
Lgica:

op1 ,

op2

(i,DX)

(Al, Ax)

si op1 = Al
I/ O(op 2 ) = Al
sino si op1 = Ax
I/ O(op 2 ) = Ax
fin si

Descripcin:

Transfiere un byte o una palabra desde el registro Al o Ax a una puerta de


salida del procesador
El nro. de la puerta se puede especificar mediante:

Un valor fijo (de o a 255).

Un valor variable, el contenido en el registro Dx ( de 0 a 65535),


pudindose acceder a 64K puertas de salida.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

17

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MANEJO DE FLAGS
CLC
Formato:

CLC

Lgica:

CF := 0

Descripcin:

Borra la bandera de acarreo (CF) sin afectar a ninguna otra bandera.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

STC
Formato:

STC

Lgica:

CF := 1

Descripcin:

Pone en 1 la bandera de acarreo (CF) sin afectar a ninguna otra bandera.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

CLI
Formato:

CLI

Lgica:

IF := 0

Descripcin:

Borra la bandera de activacin de interrupciones (IF) y desactiva las


interrupciones enmascarables (las que aparecen sobre la linea INTR del
procesador).

Las interrupciones enmascarables se pueden activar o desactivar.

Las interrupciones no enmascarables (las que aparecen sobre la


linea NMI) no se pueden desactivar.

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

STI
Formato:

STI

Lgica:

IF := 1

Descripcin:

Pone en 1 la bandera de activacin de interrupciones (IF) y activa las


interrupciones enmascarables (las que aparecen sobre la linea INTR del
procesador)
Una interrupcin pendiente no ser reconocida hasta que no se haya
ejecutado la instruccin que sigue a STI.

Banderas:
OF DF

Arquitectura de Computadores 2

IF

TF

18

SF

ZF

AF

PF

CF

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

Arquitectura de Computadores 2

19

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

BIFURCACIN INCONDICIONAL
CALL
Formato:

CALL

Tipo Args:

op1
(R,M,a,A,W)

Lgica:
Si llamada FAR
PUSH CS
PUSH IP
CS := segmento op1
IP := offset op1
sino { llamada NEAR }
PUSH IP
IP := op1
fin si
Descripcin:

Modifica el flujo de control, cambiando el puntero de programa (CS:IP) a la


direccin indicada por op1 , guardando previamente en la pila la direccin
de la instruccin siguiente, para volver a esta instruccin una vez ejecutado
el procedimiento.
El procedimiento llamado puede estar:

Dentro del mismo segmento (llamada NEAR). En este caso, se


almacena en la pila el desplazamiento de la instruccin siguiente.

En otro segmento (llamada FAR). En este caso se almacena en la


pila primero el segmento y segundo el desplazamiento de la
instruccin siguiente.

La llamada puede ser a su vez:

Directa, es decir op1 es el valor a asignar a el puntero de


instruccin. Se supone siempre un salto NEAR a menos que se
indique lo contrario.

Indirecta, es decir op1 contiene la direccin de memoria donde se


encuentra el valor a asignar al puntero de instruccin. Si se utiliza
WORD PTR, el contenido es la nueva direccin o desplazamiento.
Si en cambio se utiliza DWORD PTR la primera palabra contiene el
desplazamiento y la segunda el segmento. De esta forma se
pueden hacer llamadas NEAR o FAR, respectivamente.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

20

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JMP
Formato:

JMP

Tipo Args:

op1
(R,M,a,A,W)

Lgica:
Si llamada FAR
CS := segmento op1
IP := offset op1
sino
IP := op1
fin si
Descripcin:

Igual al CALL sin guardar la direccin de retorno en el stack:

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

RET
Formato:

RET

Lgica:
POP IP
si procedimiento FAR
POP CS
fin si
Descripcin:

Retorna de un procedimiento invocado por un CALL, utilizando como


direccin de retorno el valor almacenado en el tope del stack.
El ensamblador genera un RET distinto segn el procedimiento sea NEAR
o FAR:

SI es NEAR se asume que en el tope del STACK contiene el nuevo


valor de IP.

SI es FAR se asume que en el tope del STACK contiene el nuevo


valor de IP y luego esta el nuevo valor de CS.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

21

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

BIFURCACIN CONDICIONAL
Este conjunto de instrucciones se utilizan para efectuar un salto CONDICIONAL a una
direccin de memoria ubicada en el segmento CS a una distancia menor a 128 bytes de la
instruccin actual.
Todas verifican cierta condicin que deben cumplir algunos bits del registro de flags para
realizar la transferencia de control. Si dicha condicin no se cumple entonces el salto no se
realiza.
JA / JNBE (no considera signo)
Formato:

JA

op1

(Jump Above)

JNBE

op1

(Jump Not Below or Equal)

Tipo Args:

(d)

Lgica:

Si CF = 0 y ZF = 0

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


CF=0 y ZF=0.

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JA DIR.

; saltar a DIR si a > b


; sin considerar signo

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

22

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JB / JNAE / JC (no considera signo)


Formato:

JB

op1

JNAE

op1

JC

op1

Tipo Args:

(d)

Lgica:

Si CF = 1

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


CF=1 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JC DIR.

; saltar a DIR si a < b

; sin considerar signo

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

JNB / JAE / JNC (no considera signo)


Formato:

JNB

op1

JAE

op1

Tipo Args:

(d)

Lgica:

Si CF = 0

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


CF=0 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNB DIR.

; saltar a DIR si a b
; sin considerar signo

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

23

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JBE/JNA (no considera signo)


Formato:

JBE

op1

JNA

op1

Tipo Args:

(d)

Lgica:

Si CF = 1 o ZF = 1

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


CF=1 o ZF=1.

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNA DIR.

; saltar a DIR si a b
; sin considerar signo

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

JE/JZ
Formato:

JE

op1

JZ

op1

Tipo Args:

(d)

Lgica:

Si ZF = 1

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


ZF=1 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JC DIR.

; saltar a DIR si a = b

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

24

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JG/JNLE (considera signo)


Formato:

JG

op1

JNLE

op1

Tipo Args:

(d)

Lgica:

Si ZF = 0 y SF = OF

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


ZF=0 y SF=OF .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JG DIR.

; saltar a DIR si a > b


; considerando el signo

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

JNG/JLE (considera signo)


Formato:

JNG

op1

JLE

op1

Tipo Args:

(d)

Lgica:

Si ZF = 1 o SF OF

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


ZF=1 y SF OF .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNG DIR.

; saltar a DIR si a b
; considerando el signo

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

25

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JNE/JNZ
Formato:

JNE

op1

JNZ

op1

Tipo Args:

(d)

Lgica:

Si ZF = 0

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


ZF=0 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNE DIR.

; saltar a DIR si a b

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

JNO
Formato:

JNO

Tipo Args:

op1
(d)

Lgica:

Si OF = 0

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


OF=0 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
ADD a,b

; a=a+b

JNO DIR.

; saltar a DIR si no hubo overflow

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

26

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JNS
Formato:

JNS

Tipo Args:

op1
(d)

Lgica:

Si SF = 0

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


SF=0 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNS DIR.

; saltar a DIR si a b

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

JO
Formato:

op1

JO

Tipo Args:

(d)

Lgica:

Si OF = 1

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


OF=1.

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
ADD a,b

; a=a+b

JO DIR.

; saltar a DIR si hubo overflow

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

27

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JS
Formato:

op1

JS

Tipo Args:

(d)

Lgica:

Si SF = 1

IP op1 + IP

Transfiere el control a la instruccin (IP + op1 ) si se cumple la condicin


SF=0 .

Descripcin:

El desplazamiento es un valor con signo de 8 bits, es decir esta


comprendido entre -128 y 127.
Ej:
CMP a,b

; comparar a y b

JNS DIR.

; saltar a DIR si a < b

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

28

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MANEJO DE STACK
El stack del 8086 est implementado utilizando fundamentalmente las operaciones PUSH
y POP conjuntamente con los registros SS y SP.
El tope del stack est apuntado por SS:SP y las operaciones PUSH y POP los actualizan
de forma de obtener la semntica de stack como veremos ms adelante.
PUSH
Formato:

PUSH

Tipo Args:

op1
(R,M)

Lgica:
SP=SP-2
MOV SS:[SP], op1
Descripcin:

Decrementa el puntero del stack, SP y transfiere la palabra especificada


por op1 a la direccin SS:SP

Banderas:
OF DF

IF

TF

SF

ZF

AF

PF

CF

POP
Formato:

POP

Tipo Args:

op1
(R,M)

Lgica:

MOV op1 ,SS:[SP]


SP=SP+2
Transfiere la palabra en tope del stack al operando op1 y luego incrementa
el puntero del stack, SP.

Descripcin:
Banderas:

OF DF

IF

TF

SF

ZF

AF

PF

CF

PUSHF
Formato:

PUSHF

Lgica:
SP=SP-2
MOV SS:[SP],FLAGS
Descripcin:

Coloca el registro de flags en al tope del stack.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

29

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

POPF
Formato:

POPF

Lgica:
SP=SP-2
MOV FLAGS, SS:[SP]
Descripcin:

Restaura los registros de flags desde el tope del stack.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

30

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

INTERRUPCIONES
La tabla de interrupciones del 8086 se encuentra en la direccin absoluta 0 y ocupa el
primer kilobyte de memoria.
Dicha tabla posee 256 entradas de 4 bytes cada una. La entrada i-sima de esta tabla
posee la direccin de memoria del manejador de la interrupcin i. Los primeros 2 bytes
corresponden al offset del manejador y los ltimos 2 corresponden al segmento del mismo.
INT
Formato:

op1

INT

Tipo Args:

(i)

Lgica:
PUSHF
IF=0
TF=0
CALL FAR tabla_int( op1 )
Genera una interrupcin software tipo op1 .

Descripcin:
Banderas:

OF DF

IF

TF

SF

ZF

AF

PF

CF

IRET
Formato:

IRET

Lgica:
RET
POPF
Descripcin:

Retorna de una interrupcin. Funciona en forma equivalente al RET


utilizado para retornar de una llamada CALL con la diferencia que esta
instruccin restaura las flags del stack antes de retornar.

Banderas:

Arquitectura de Computadores 2

OF DF

IF

TF

SF

ZF

AF

PF

CF

31

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

CARTILLA REDUCIDA
CARTILLA 8086/88
OP1
OP2
r,m
r,m,i
op1
r,m
r,m,i
op1
r,m
r,m,i
op1
r,m
r,m,i
op1

INSTRUCCIN
ADD op1 , op2
ADC op1 , op2
SUB op1 , op2
SBB op1 , op2
MUL op
DIV op
NEG op
CBW
INC op
DEC op

(Reducida)
Curso 1993
OPERACIN
op1 + op2
op1 + op2 + c
op1 op2
op1 op2 c
{DX:AX|AX} {AX|AL}* op
{AX|AL} {DX:AX|AL} div op
{DX|AH} {DX:AX|AX} mod op
\EMBED Equation op op * 1
AX AL (expande signo)
op op + 1
op op + 1

r
r
r,m
r,m
r,m

OISZPC
X XXXX
X XXXX
X XXXX
X XXXX
X ???X
? ????
X XXXX
X XXX
X XXX

r,m
r,m
r,m
r,m
r,m

r,m,i
r,m,i
r,m,i

op1
op1
op1
op

CMP

op1 , op2
op1 , op2
op1 , op2
op
op1 , op2

r,m,i

setea las flags

SAL
SAR
SHL
SHR
ROL
ROR

op1 , op2
op1 , op2
op1 , op2
op1 , op2
op1 , op2
op1 , op2

r,m
r,m
r,m
r,m
r,m
r,m

1,CL
1,CL
1,CL
1,CL
1,CL
1,CL

corre op1 , op 2 lugares


corre op1 , op 2 lugares
corre op1 , op 2 lugares
corre op1 , op 2 lugares
rota op1 , op 2 lugares
rota op1 , op 2 lugares

MOV

op1 , op2

r,m

r,m,i

op1 op 2 , NO MUEVE MEMORIA A MEMORIA

IN
OUT

op1 , op2
op1 , op2

AL,AX
i,DX

i,DX
AL,AX

{AL|AX} { I/O{i} | I/O(DX) } (4)


{ I/O{i} | I/O(DX) } {AL|AX} (4)

AND
OR
XOR
NOT

CLC
STC
CLI
STI

op1 and op 2
op1 or op 2
op1 xor op 2
not op

(2)
(2)
(2)
(2)
(3)

0 XXX0
0 XXX0
0 XXX0
X XXXX
a
a
a
a

la
la
la
la

izq.
der. (7)
izq.
der.

X
X
X
X
X
X

borra el carry (c)


prende el carry (c)
deshabilita interrupciones
habilita interrupciones

JMP

op

CALL

op

RET

Arquitectura de Computadores 2

a,R,M
A,W
a,R,M
A,W
a,R,M
A,W

XXXX
XXXX
XXXX
XXXX
X
X

0
1
0
1

op
IP
(5)
CS:IP op
(6)
PUSH Next IP,
IP IP + op (5)
PUSH Next IP, PUSH CS, CS:IP op (6)
POP IP
(5)
POP CS, POP IP (6)

32

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

INSTRUCCIN
JA/JNBE op
JB/JNAE/JC op
JNB/JAE op
JBE/JNA op
op
JE/JZ
JG/JNLE op
JGE/JNL op
JL/JNGE op
JNG/JLE op
op
JNC
JNE/JNZ op
op
JNO
op
JNS
op
JO
op
JS
INT

CARTILLA 8086/88
OP1
OP2
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d

si
si
si
si
si
si
si
si
si
si
si
si
si
si
si

op

0..ffh

PUSHF,PUSH CS,PUSH IP,


CS:IP E( op *4)
POP IP, POP CS, POPF

op
op

R,M
R,M

SP

IRET
PUSH
POP
PUSHF
POPF

(Reducida)
Curso 1993
OPERACIN
c=0 ^ z=0
IP op + IP
c=1
IP op + IP
c=0
IP op + IP
c=1 or z=1 IP op + IP
z=1
IP op + IP
z=0 ^ s=o
IP op + IP
s=o
IP op + IP
s<>o
IP op + IP
z=1 or s<>o IP op + IP
c<>0
IP op + IP
z<>0
IP op + IP
o<>0
IP op + IP
s<>0
IP op + IP
o=1
IP op + IP
s=1
IP op + IP

SP - 2, E(SP) op1
op1 E(SP), SP SP + 2
SP SP - 2, E(SP) flags
flags E(SP), SP SP + 2

OISZPC

X XXXX

REFERENCIAS:
flags : registro con todas las banderas de condicin (O, I, S, Z, P, C)
Ultima columna de la tabla.
1,0, espacio : set, reset incondicional, no se afecta.
X
: afectada para reflejar resultado de la operacin.
NOTAS: (1)
(2)
(3)
(4)
(5)
(6)
(7)

:
:
:
:
:
:
:

la operacin se hace en 16 u 8 bits de acuerdo al tamao de op1.


las operaciones son bit a bit.
las condiciones se setean segn el resultado de la resta .
entrada o salida en la direccin , 8 o 16 bits segn largo de
caso saltos NEAR.
caso saltos FAR.
repite el bit de signo

y no pueden ser memoria a la vez.


Direccionamiento: cuando el operando es memoria (m,M,w):
- directo: la direccin esta en la instruccin
- indirecto: - {BX | BP} [+ {SI | DI}] [+ desplazamiento]
- {SI | DI} [+ desplazamiento]
- desplazamiento

Arquitectura de Computadores 2

33

Facultad de Ingeniera

También podría gustarte