Está en la página 1de 33

MICROPOCESADOR 8086

NOTAS DE CURSO
(Versin 2.2)

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

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

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

Arquitectura de Computadores

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

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 3

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

CS Si Prefijo Prefijo Prefijo Prefijo

SS si por defecto prefijo prefijo prefijo

DS

ES

prefijo por defecto por defecto por defecto

prefijo prefijo prefijo por defecto (cadenas)

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

INSTRUCCIONES
Para describir a cada una de las instrucciones usaremos el siguiente formato: CDIGO
Formato: Tipo Args: CDIGO

op1 ,

op2

Se indica qu forma puede tomar cada parmetro poniendo debajo del mismo una lista de cdigos entre parntesis que definimos as:
A a i d r R m M W CL 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 ) el nombre de un registro en particular

Lgica: Descripcin: Banderas:

Se indica usando pseudo cdigo cual es la lgica de la instruccin. Descripcin de la semntica de la instruccin. OF X DF IF TF SF ? ZF X AF X PF X CF X

En la tabla de Banderas se indica cmo afecta a las flags del procesador la ejecucin de la instruccin, usando el siguiente cdigo: X ? -

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

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ARITMTICAS
ADD
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF X ADD

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 + op2


Suma los dos operandos y almacena el resultado en ambos deben tener el mismo tipo

op1 , por lo tanto

ADC
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF X ADC

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 + op2 + c


Idem a ADD pero adems suma el valor del carry.

SUB
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF X SUB

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 op2


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

SBB
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF X SBB

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 op2 c


Idem a SUB pero adems resta el carry.

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MUL
Formato: Tipo Args: Lgica: si MUL

op
( r,m)

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 o Ax) por el

Descripcin:

Multiplica sin considerar el signo, el acumulador ( Ax 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: OF DF X IF TF SF ? ZF ? AF ? PF ? CF X

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DIV
Formato: Tipo Args: Lgica: si DIV

op
( r,m)

op es de tipo byte si Ax div op > FFh INT 0


else

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 INT 0


else

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

fin si 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 Ax y el resto en

Dx

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 ?

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

NEG
Formato: Tipo Args: Lgica: si NEG

op
( r,m)

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 Calcula el complemento a 2 de OF DF X IF TF SF X ZF X

Descripcin: Banderas:

op
AF X PF X CF X

CBW
Formato: Lgica: CBW si

Al < 80h Ah = 00h sino Ah = FFh fin si

Descripcin: Banderas:

Copia el bit 7 del registro AL en todos los bits del registro AH; es decir expande el bit de signo de AL OF DF INC IF TF SF ZF AF PF CF -

INC
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF -

op
( r,m)

op = op + 1
Incrementa el operando destino.

Arquitectura de Computadores

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DEC
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF X IF TF SF X ZF X AF X PF X CF DEC

op
( r,m)

op = op 1
Decrementa el operando destino.

Arquitectura de Computadores

10

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

LGICAS
AND
Formato: Tipo Args: Lgica: AND

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 op2 CF = OF = 0


Descripcin: Banderas: OF DF 0 IF TF SF X ZF X AF ? PF X CF 0 Calcula el "y" lgico bit a bit entre

op1 y op2 .

OR
Formato: Tipo Args: Lgica: OR

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 op2 CF = OF = 0


Descripcin: Banderas: OF DF 0 IF TF SF X ZF X AF ? PF X CF 0 Calcula el "o" lgico inclusivo bit a bit entre

op1 y op2

XOR
Formato: Tipo Args: Lgica: XOR

op1 ,
( r,m)

op2
(r,m,i)

op1 op1 op2 CF = OF = 0


Calcula el "o" lgico exclusivo bit a bit entre

Descripcin: Banderas:

op1 y op2 .
CF 0

OF DF 0 -

IF -

TF -

SF X

ZF X

AF ?

PF X

Arquitectura de Computadores

11

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

NOT
Formato: Tipo Args: Lgica: Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF NOT

op
( r,m)

op op
Calcula el complemento a 1 de por unos.

op . Es decir, cambia unos por cero y ceros

CMP
Formato: Tipo Args: Lgica: Descripcin: CMP

op1 ,
( r,m)

op2
(r,m,i)

op1 op2
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. OF DF X IF TF SF X ZF X AF X PF X CF X

Banderas:

Arquitectura de Computadores

12

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

DESPLAZAMIENTO
SAL/SHL
Formato: SAL SHL Tipo Args: Lgica: corre Ej:

op1 , op1 ,
( r,m)

op2 op2
(1, CL)

op1 , op2 lugares a la izq.


SAL Al,1

Antes

CF ?

Al a b c d e f Al

g h

Despues h
Descripcin:

b c d e f

g h 0 op2 .

Desplaza a la izquierda los bits de op1 el nro. de bits especificado por 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 "fuera" de la representacin. Banderas: OF DF X IF TF SF X ZF X AF ? PF X CF X

op1 en ser desplazado

Arquitectura de Computadores

13

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

SHR
Formato: Tipo Args: Lgica: corre Ej: SHR ( r,m)

op1 ,
(1, CL)

op2

op1 , op2 lugares a la der.


SHR Al,1

Antes

Al a b c d e f

g h

CF ?

Despues
Descripcin:

Al 0 a b c d e f

h op2 .

Desplaza a la derecha los bits de op1 el nro. de bits especificado por 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 "fuera" de la representacin. Banderas: OF DF X IF TF SF X ZF X AF ? PF X CF X

op1 en ser desplazado

SAR
Formato: Tipo Args: Lgica: corre Ej: SAR

op1 ,
( r,m)

op2
(1, CL)

op1 , op2 lugares a la derecha expandiendo el signo.


SAR Al,1

Antes

Al a b c d e f

g h

CF ?

Despues
Descripcin:

Al a a b c d e f

h op2 .

Desplaza a la derecha los bits de op1 el nro. de bits especificado por 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 "fuera" de la representacin. Banderas: OF DF X IF TF SF X ZF X AF ? PF X CF X

op1 en ser desplazado

Arquitectura de Computadores

14

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ROL
Formato: Tipo Args: Lgica: Ej: rota ROL

op1 ,
( r,m)

op2
(1, CL)

op1 , op2 lugares a la izquierda. CF Al a b c d e f Al

ROL Al,1

Antes

g h

Despues

b c d e f

g h a

Descripcin:

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 "fuera" de la representacin. Banderas: OF DF X IF TF SF ZF AF PF CF X

op1 en ser desplazado

OF contiene el xor del CF con el bit ms significativo del resultado.

Arquitectura de Computadores

15

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

ROR
Formato: Tipo Args: Lgica: Ej: rota ROR

op1 ,
( r,m)

op2
(1, CL)

op1 , op2 lugares a la izquierda. Al a b c d e f CF ?

ROR Al,1

Antes

g h

Despues

Al h a b c d e f

Descripcin:

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 "fuera" de la representacin. Banderas: OF DF X IF TF SF ZF AF PF CF X

op1 en ser desplazado

OF contiene el xor del CF con el bit menos significativo del resultado.

Arquitectura de Computadores

16

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MOVIMIENTO e I/O
MOV
Formato: Tipo Args: Lgica: Descripcin: MOV

op1 ,
( r,m)

op2
(r,m,i)

op1 op2
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. No se puede mover memoria a memoria. OF DF IF TF SF ZF AF PF CF -

Atencin: Banderas:

IN
Formato: Tipo Args: Lgica: si IN

op1 ,
(AL, AX)

op2
(i,DX)

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


fin si 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. IF TF SF ZF AF PF CF -

Descripcin:

Banderas: OF DF -

Arquitectura de Computadores

17

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

OUT
Formato: Tipo Args: Lgica: OUT

op1 ,
(i,DX)

op2
(Al, Ax)

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


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. IF TF SF ZF AF PF CF -

Descripcin:

Banderas: OF DF -

Arquitectura de Computadores

18

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

MANEJO DE FLAGS
CLC
Formato: Lgica: Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF 0 CLC CF := 0 Borra la bandera de acarreo (CF) sin afectar a ninguna otra bandera.

STC
Formato: Lgica: Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF 1 STC CF := 1 Pone en 1 la bandera de acarreo (CF) sin afectar a ninguna otra bandera.

CLI
Formato: Lgica: Descripcin: CLI IF := 0 Borra la bandera de activacin de interrupciones (IF) y desactiva las interrupciones enmascarables (las que aparecen sobre la linea INTR del procesador). Banderas: OF DF IF 0 TF SF ZF AF PF CF Las interrupciones enmascarables se pueden activar o desactivar. Las interrupciones no enmascarables (las que aparecen sobre la linea NMI) no se pueden desactivar.

Arquitectura de Computadores

19

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

STI
Formato: Lgica: Descripcin: STI IF := 1 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 IF 1 TF SF ZF AF PF CF -

Arquitectura de Computadores

20

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

BIFURCACIN INCONDICIONAL
CALL
Formato: Tipo Args: Lgica: Si llamada FAR PUSH CS PUSH IP CS := segmento IP := offset op1 sino { llamada NEAR } PUSH IP IP := op1 fin si Descripcin: CALL

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

op1

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. 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. IF TF SF ZF AF PF CF -

La llamada puede ser a su vez:

Banderas: OF DF -

Arquitectura de Computadores

21

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JMP
Formato: Tipo Args: Lgica: Si llamada FAR CS := segmento IP := offset op1 sino IP := op1 fin si Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF JMP

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

op1

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

RET
Formato: 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: Banderas: OF DF IF TF SF ZF AF PF CF 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. RET

Arquitectura de Computadores

22

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 JNBE Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

(Jump Above) (Jump Not Below or Equal)

CF = 0 y ZF = 0 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + CF=0 y ZF=0.

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JA DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a > b ; sin considerar signo

Arquitectura de Computadores

23

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JB / JNAE / JC (no considera signo)


Formato: JB JNAE JC Tipo Args: Lgica: Si Descripcin:

op1 op1 op1


(d)

CF = 1 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + CF=1 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JC DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a < b ; sin considerar signo

JNB / JAE / JNC (no considera signo)


Formato: JNB JAE Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

CF = 0 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + CF=0 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNB DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a

; sin considerar signo

Arquitectura de Computadores

24

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JBE/JNA (no considera signo)


Formato: JBE JNA Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

CF = 1 o ZF = 1 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + CF=1 o ZF=1.

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNA DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a

; sin considerar signo

JE/JZ
Formato: JE JZ Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

ZF = 1 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + ZF=1 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JC DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a = b

Arquitectura de Computadores

25

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JG/JNLE (considera signo)


Formato: JG JNLE Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

ZF = 0 y SF = OF IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + ZF=0 y SF=OF .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JG DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a > b ; considerando el signo

JNG/JLE (considera signo)


Formato: JNG JLE Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

ZF = 1 o SF OF IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + ZF=1 y SF OF .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNG DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a

; considerando el signo

Arquitectura de Computadores

26

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JNE/JNZ
Formato: JNE JNZ Tipo Args: Lgica: Si Descripcin:

op1 op1
(d)

ZF = 0 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + ZF=0 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNE DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a

JNO
Formato: Tipo Args: Lgica: Si Descripcin: JNO

op1
(d)

OF = 0 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + OF=0 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: ADD a,b JNO DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; a=a+b ; saltar a DIR si no hubo overflow

Arquitectura de Computadores

27

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JNS
Formato: Tipo Args: Lgica: Si SF = JNS

op1
(d)

0 IP op1 + IP op1 ) si se cumple la condicin

Descripcin:

Transfiere el control a la instruccin (IP + SF=0 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNS DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a

JO
Formato: Tipo Args: Lgica: Si Descripcin: JO

op1
(d)

OF = 1 IP op1 + IP op1 ) si se cumple la condicin

Transfiere el control a la instruccin (IP + OF=1.

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: ADD a,b JO DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; a=a+b ; saltar a DIR si hubo overflow

Arquitectura de Computadores

28

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

JS
Formato: Tipo Args: Lgica: JS

op1
(d)

Si SF = 1

IP op1 + IP op1 ) si se cumple la condicin

Descripcin:

Transfiere el control a la instruccin (IP + SF=0 .

El desplazamiento es un valor con signo de 8 bits, es decir esta comprendido entre -128 y 127. Ej: CMP a,b JNS DIR. Banderas: OF DF IF TF SF ZF AF PF CF ; comparar a y b ; saltar a DIR si a < b

Arquitectura de Computadores

29

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: Tipo Args: Lgica: SP=SP-2 MOV SS:[SP], op1 Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF Decrementa el puntero del stack, SP y transfiere la palabra especificada por op1 a la direccin SS:SP PUSH

op1
(R,M)

POP
Formato: Tipo Args: Lgica: POP

op1
(R,M)

MOV op1 ,SS:[SP] SP=SP+2 Transfiere la palabra en tope del stack al operando el puntero del stack, SP. OF DF IF TF SF ZF AF PF CF -

Descripcin: Banderas:

op1 y luego incrementa

PUSHF
Formato: Lgica: SP=SP-2 MOV SS:[SP],FLAGS Descripcin: Banderas: OF DF IF TF SF ZF AF PF CF Coloca el registro de flags en al tope del stack. PUSHF

Arquitectura de Computadores

30

Facultad de Ingeniera

Microprocesador 8086

Notas del Curso

POPF
Formato: Lgica: SP=SP-2 MOV FLAGS, SS:[SP] Descripcin: Banderas: OF DF X X IF X TF X SF X ZF X AF X PF X CF X Restaura los registros de flags desde el tope del stack. POPF

Arquitectura de Computadores

31

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: Tipo Args: Lgica: PUSHF IF=0 TF=0 CALL FAR tabla_int( Descripcin: Banderas: OF DF IF x TF x SF ZF AF PF CF INT

op1
(i)

op1 ) op1 .

Genera una interrupcin software tipo

IRET
Formato: 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. OF DF X x IF x TF x SF x ZF x AF x PF x CF x IRET

Banderas:

Arquitectura de Computadores

32

Facultad de Ingeniera

También podría gustarte