Instrucciones 8086
aleupi12 de Febrero de 2014
1.437 Palabras (6 Páginas)253 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 bytes o palabras
XLAT emplea AL para entrar a una tabla de conversión
AAA, AAD, AAM, AAS ajuste ASCII para suma, división, producto y resta ADD suma datos entre registros o la memoria y otro registro ADC suma con acarreo
CBW convierte byte a palabra
CMP compara los datos
CWD convierte palabra a doble palabra
DAA, DAS ajuste decimal en AL para una suma/resta en BCD DEC decrementa operando en 1
DIV división sin signo
IDIV división con signo
IMUL multiplicación con signo
INC incrementa operando en 1
MUL multiplicación sin signo
NEG cambia el signo
...