Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NOTAS DE CURSO
(Versin 2.2)
Arquitectura de Computadores
Facultad de Ingeniera
Microprocesador 8086
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
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
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:
Facultad de Ingeniera
Microprocesador 8086
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
DS
ES
Arquitectura de Computadores
Facultad de Ingeniera
Microprocesador 8086
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
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
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)
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)
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)
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)
Arquitectura de Computadores
Facultad de Ingeniera
Microprocesador 8086
MUL
Formato: Tipo Args: Lgica: si MUL
op
( r,m)
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
DIV
Formato: Tipo Args: Lgica: si DIV
op
( r,m)
Al = Ax div op Ah = 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
NEG
Formato: Tipo Args: Lgica: si NEG
op
( r,m)
Descripcin: Banderas:
op
AF X PF X CF X
CBW
Formato: Lgica: CBW 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
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
LGICAS
AND
Formato: Tipo Args: Lgica: AND
op1 ,
( r,m)
op2
(r,m,i)
op1 y op2 .
OR
Formato: Tipo Args: Lgica: OR
op1 ,
( r,m)
op2
(r,m,i)
op1 y op2
XOR
Formato: Tipo Args: Lgica: XOR
op1 ,
( r,m)
op2
(r,m,i)
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
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.
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
DESPLAZAMIENTO
SAL/SHL
Formato: SAL SHL Tipo Args: Lgica: corre Ej:
op1 , op1 ,
( r,m)
op2 op2
(1, CL)
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
Arquitectura de Computadores
13
Facultad de Ingeniera
Microprocesador 8086
SHR
Formato: Tipo Args: Lgica: corre Ej: SHR ( r,m)
op1 ,
(1, CL)
op2
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
SAR
Formato: Tipo Args: Lgica: corre Ej: SAR
op1 ,
( r,m)
op2
(1, CL)
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
Arquitectura de Computadores
14
Facultad de Ingeniera
Microprocesador 8086
ROL
Formato: Tipo Args: Lgica: Ej: rota ROL
op1 ,
( r,m)
op2
(1, CL)
ROL Al,1
Antes
g h
Despues
b c d e f
g h a
Descripcin:
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
Arquitectura de Computadores
15
Facultad de Ingeniera
Microprocesador 8086
ROR
Formato: Tipo Args: Lgica: Ej: rota ROR
op1 ,
( r,m)
op2
(1, CL)
ROR Al,1
Antes
g h
Despues
Al h a b c d e f
Descripcin:
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
Arquitectura de Computadores
16
Facultad de Ingeniera
Microprocesador 8086
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)
Descripcin:
Banderas: OF DF -
Arquitectura de Computadores
17
Facultad de Ingeniera
Microprocesador 8086
OUT
Formato: Tipo Args: Lgica: OUT
op1 ,
(i,DX)
op2
(Al, Ax)
Descripcin:
Banderas: OF DF -
Arquitectura de Computadores
18
Facultad de Ingeniera
Microprocesador 8086
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
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
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 -
Banderas: OF DF -
Arquitectura de Computadores
21
Facultad de Ingeniera
Microprocesador 8086
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
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
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)
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
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
op1 op1
(d)
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
Arquitectura de Computadores
24
Facultad de Ingeniera
Microprocesador 8086
op1 op1
(d)
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
JE/JZ
Formato: JE JZ Tipo Args: Lgica: Si Descripcin:
op1 op1
(d)
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
op1 op1
(d)
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
op1 op1
(d)
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
JNE/JNZ
Formato: JNE JNZ Tipo Args: Lgica: Si Descripcin:
op1 op1
(d)
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)
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
JNS
Formato: Tipo Args: Lgica: Si SF = JNS
op1
(d)
Descripcin:
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)
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
JS
Formato: Tipo Args: Lgica: JS
op1
(d)
Si SF = 1
Descripcin:
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
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:
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
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
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 .
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