Instrucciones 8086
Enviado por aleupi • 12 de Febrero de 2014 • 1.437 Palabras (6 Páginas) • 225 Visitas
• Procesador de 16 bits
• Bus de direcciones de 20 bits : 1 Mbyte
• Bus de datos interno de 16 bits
• Bus de datos externo de
• 16 bits en el 8086
• 8 bits en el 8088
• Original del IBM PC/XT
• 89 instrucciones
• No tiene coprocesador
• ASCII
• BCD
•Entero sin signo
• 8 bits 0..255
• 16 bits 0..65535
• Entero con signo
• 8 bits -128..127
• 16 bits -32768..32767
• Cadenas secuencia de bytes o palabras
Descriptor de segmento : desplazamiento
00000 FFFFF
Segmento
64 Kb
1 mega byte
C000 : 0130
1200 : 0100
1000 : 2100
0500 : D100
FFFF:FFFF
Segmento
C000
Dir Física = Seg * 10h + desplazamiento
0000:0000
14 registros de 16 bits
• 4 generales: AX, BX, CX, DX
• 2 índices: SI, DI
• 2 punteros: SP, BP
• 4 segmentos: DS, CS, ES, SS
• 1 estado: Flag
• 1 contador de programa: IP
AH A X AL C S
generales
índices
punteros
BH B X BL CH C X CL DH D X DL S I
D I S P B P
D S S S E S
I P
flags
segmentos
control
O D I T S Z A P C
C : acarreo en la suma y arrastre en la resta
P : paridad del dato (0, impar y 1, par)
A : acarreo auxiliar. Indica el acarreo o arrastre entre los bits 3 y 4
Z : indicación de resultado igual a cero
S : indicador de signo del resultado. 0, positivo y 1, negativo
T : trampa. Habilita la característica de depuración del procesador
I : habilitación de interrupciones de hardware
D : selección de incremento o decremento en los índices
O : sobreflujo.
7 modos de direccionamiento básicos
./ Modo registro: el operando es un registro.
./ Modo inmediato: el operando es una constante.
./ Modo directo: el operando es una dirección efectiva (explícita).
./ Modo registro indirecto: similar al anterior pero la dirección efectiva está contenida en un registro (BX, BP, SI , DI).
./ Modo relativo a base: la dirección efectiva se encuentra sumando un desplazamiento a BX o BP.
./ Modo indexado directo: igual al anterior usando SI o DI.
./ Modo indexado a base: combinación de los dos anteriores. La dirección efectiva se calcula como la suma de un registro base,
un registro índice y, opcionalmente, un decalage o desplazamiento.
Ejemplo de uso
./ Modo registro: add ax, bx
./ Modo inmediato: add ax, 5
./ Modo directo: add ax, [100]
./ Modo registro indirecto: add ax, [bx]
./ Modo relativo a base: add ax, [bp + 100]
./ Modo indexado directo: operaciones de cadena : movsb
./ Modo indexado a base: add ax, [bx + si + 100]
En general:
BASE
+
INDICE
+
DESPLAZAM
Ninguno
Ninguno
Ninguno
BX o BP
+
SI o DI
+
8 bits
BX o BP
+
SI o DI
+
16 bits
• Cero operandos: trabajan sobre algún operando explícito, puede ser un registro o un flag
CLC pone carry en 0
• Un operando: el único operando es fuente y destino de la operación
INC AX AX := AX + 1
• Dos operandos: el primer operando es destino de la operación entre los dos operandos
ADD AX, BX AX := AX + BX
Grupos de instrucciones
• Transferencia de datos (14): movimiento de datos entre registros y/o memoria
• Aritméticas (20):operaciones aritméticas de enteros
• Manipulación de bits (10): operaciones lógicas
• Cadenas (5): movimiento, búsqueda y comparación de cadenas de datos
• Transferencia de programa (29): saltos, llamadas...
• Control del procesador (11): detención, depuración, IRQs,...
IN carga el acumulador desde un dispositivo de I/O LAHF carga los flags en AH
LEA carga una dirección efectiva
LDS carga DS y un registro de 16 bits con datos de memoria de 32 bits LES carga ES y un registro de 16 bits con datos de memoria de 32 bits MOV carga byte o palabra o doble palabra
OUT saca datos del acumulador a un puerto de I/O POP recupera una palabra de la pila
POPF recupera los flags de la pila PUSH almacena una pálabra en la pila PUSHF almacena los flags en la pila SAHF carga AH en los flags
XCHG intercambia
...