instrucciones - Arquitectura y Tecnología de Computadores

Transcripción

instrucciones - Arquitectura y Tecnología de Computadores
INSTRUCCIONES
LA ENERGIA DE LA MAQUINA
Fundamentos de Computadores
Capítulo segundo
Departamento de Automática. Area de Arquitectura y Tecnología de Computadores.
INTRODUCCION
•
Computador: se limita a ejecutar las órdenes que
recibe.
•
Ordenes = INSTRUCCIONES
– Se expresan mediante un conjunto de 1 y 0.
•
Repertorio de Instrucciones: conjunto de órdenes
que puede interpretar y ejecutar un computador.
– Suelen ser sencillas operaciones de tipo aritmético o
lógico, realizadas sobre uno o dos operandos para
obtener un resultado.
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
2
Características de la
instrucciones
•
Una instrucción debe contener la siguiente
información para ejecutarse:
– Tipo de operación a realizar
– El valor o la posición donde se hallan los operandos
– El lugar donde se tiene que depositar el resultado
•
Formato de una instrucción:
– Código de operación: indica a la UC el tipo de operación:
(instrucción aritmética, instrucción lógica, instrucción de
transferencia, instrucción de salto)
– Operando 1 y 2: indican dónde se encuentran los
operandos
– Resultado: indica el lugar donde hay que depositar el
resultado
•
Modos de direccionamiento:
– Modo en que se expresa el valor o el lugar donde residen
los operandos y el resultado (Ejs. Directo a memoria, por
registro, inmediato)
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
3
Modos de
direccionamiento en el
µP 8086/88 (I)
µP 8086/88
Inmediato
Directo a registro
Directo
Relativo a base
Mediante índice
Mediante índice y base
Implícito
Ejemplos
MOV AX, 15H
MOV AX, BX
MOV CX, ETIQUETA
MOV BX+ARTÍCULO, AL
MOV DL, VECTOR[SI]
MOV AH, [BX][SI]+ARRAY
Algunas instrucciones
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
4
Modos de direccionamiento en
el µP 8086/88 (II)
Segmentación de memoria (I)
•
•
•
El 8088/86 puede direccionar 1MB con 20 líneas de
dirección pero sus registros internos tan solo son de 16
bits
Solución Ð segmentación de memoria
Las direcciones se generan combinando una base y un
desplazamiento, cada uno de 16 bits:
– base x 16 + desplazamiento = base x 10h + desplazamiento
•
Cada base genera una página o segmento de 64 Kb con
funciones especificas:
Base
Registro de segmento
Función
CS
DS
SS
ES
Contiene el código ejecutable
Contiene los datos
Se reserva para la pila o stack
Segmento extra de datos
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
5
Modos de direccionamiento en el µP
8086/88 (III)
Segmentación de memoria (II)
Banco de registros:
• Registros de datos:
–
–
–
–
•
Punteros:
–
–
–
–
–
•
AX (AH, AL)
BX (BH, BL)
CX (CH, CL)
DX (DH, DL)
SP
BP
SI
DI
IP
- Puntero de pila
- Puntero base de pila
- Registro índice
- Registro índice
- Contador de programa
Registros de segmentos
SS - Segmento de pila
DS - Segmento de datos
CS - Segmento de código
ES - Segmento extra de datos
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
6
Modos de direccionamiento en el µP
8086/88 (IV)
Direccionamiento inmediato
•
Ejemplo: MOV AL, 15H
DIRECCIÓN
INSTRUCCIÓN
DIRECCIÓN
8088/86
IP
0000
CS 0100
01000
80
01001
15
01002 XX
AX
BX
CX
XX
01000 80
sig. inst.
01003
e
m
IP
0002
CS
0100
01003
ES
AX
15
BX
CX
DX
SP
r
SP
i
SI
DI
sig. inst.
SS
o
SI
01002 XX
DS
DX
BP
MOV AL,15h
01001 15
M
ES
8088/86
MOV AL,15h
DS
SS
INSTRUCCIÓN
BP
DI
a
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
7
Modos de direccionamiento en el µP
8086/88 (V)
Direccionamiento a registro
•
Ejemplo: MOV AX, BX
DIRECCIÓN
INSTRUCCIÓN
DIRECCIÓN
8088/86
01000 8B
IP
CS
0000
0100
MOV AX,BX
01000 8B
01003
M
ES
XXXX
BX
7FA6
DX
SP
BP
SI
DI
IP
0002
CS
0100
01002 XX
sig. inst.
01003
DS
SS
AX
CX
MOV AX,BX
01001 C3
sig. inst.
DS
SS
8088/86
01001 C3
01002 XX
INSTRUCCIÓN
e
ES
m
AX
o
CX
r
i
a
7FA6
BX 7FA6
DX
SP
BP
SI
DI
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
8
Modos de direccionamiento en el µP
8086/88 (VI)
Direccionamiento directo
•
Ejemplo: MOV CX, ETIQUETA
DIRECCIÓN
INSTRUCCIÓN
DIRECCIÓN
INSTRUCCIÓ
8088/86
01000 8B
MOV CX,ETIQUETA
01001 0E
ETIQUETA=1234H
IP
0000
CS
0100
01003 12
DS 0200
01004 XX
01002
8088/86
01000 8B
01001 0E
34
IP
0004
CS
0100
01003 12
SS
DS
0200
01004 XX
ES
SS
sig. inst.
AX
BX
CX BEED
DX
o
SP
r
operando fuenteBP
SI
DI
i
03234 ED
a
03235 BE
BP
SI
DI
03234 ED
03235 BE
m
DX
SP
sig. inst.
e
AX
CX XXXX
34
M
ES
BX
01002
MOV CX
,ETIQUETA
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
9
Modos de direccionamiento en el µP
8086/88 (VII)
Direccionamiento relativo a base
•
Ejemplo: MOV [BX]+ARTÍCULO, AL
DIRECCIÓN
DIRECCIÓN
INSTRUCCIÓN
8086/88
8086/88
IP
0000
CS
DS
87
0100
01003
50
0500
01004
XX
AX XX FC
BX 1000
SP
01001
00
ES
DX
88
01002
SS
CX
01000
ARTICULO=5000H
sig. inst.
DI
CS
0100
DS
0500
SS
M
e
m
o
r
i
a
ES
AX XX FC
BX 1000
CX
DX
SP
88
01001
87
01002
00
01003
50
01004
XX
sig.
inst.
M
e
m
o
r
i
a
BP
BP
SI
IP
0004
01000
0B000 XX
operando destino
SI
0B000 FC
DI
0B001 XX
0B001 XX
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
10
Modos de direccionamiento en el µP
8086/88 (VIII)
Direccionamiento mediante índice
•
Ejemplo: MOV DL, VECTOR[SI]
DIRECCIÓN
INSTRUCCIÓN
DIRECCIÓN
INSTRUCCIÓN
8086/88
01000 8A
IP
0000
01001
94
01002
00
0100
01003 A0
DS B000
01004 XX
CS
SS
ES
AX
BX
CX
DX XX XX
SP
VECTOR=A000H
sig. inst.
M
e
m
o
r
i
a
DI
BA000 ED
94
01002
00
CS
0100
01003 A0
DS
B000
01004 XX
ES
AX
BX
CX
DX XX ED
operando
fuente
01001
IP
SP
0000
01000 8A
0004
SS
BP
SI
8086/88
BP
SI
0000
DI
sig. inst.
M
e
m
o
r
i
a
BA000 ED
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
11
Modos de direccionamiento en el µP
8086/88 (IX)
Direccionamiento mediante índice y
base
•
Ejemplo: MOV AH, [BX] [SI]+ARRAY
DIRECCIÓN
INSTRUCCIÓN
DIRECCIÓN
INSTRUCCIÓN
8088/86
01000 8A
IP
0000
01001
20
01002
34
0100
01003 12
DS 0200
01004 XX
CS
SS
ES
AX XX XX
BX 1000
CX
DX
SP
ARRAY=1234H
8088/86
sig. inst.
M
e
m
o
r
i
a
DI
01001
20
01002
34
IP
0004
CS
0100
01003 12
DS
0200
01004 XX
ES
AX ED XX
BX 1000
CX
DX
SP
2000
06234 ED
06235 XX
Operando
fuente
sig. inst.
M
e
m
o
r
i
a
SS
BP
SI
01000 8A
BP
SI
DI
2000
06234 ED
Antes de ejecutar la instrucción
Después de ejecutar la instrucción
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
12
Formato de instrucciones en el
8086/8088 (I)
Byte 1
Código op.
Byte 2
Byte 3
Byte 4
Mod Reg
R/M
DW
Desplazamiento o dato inmediato
Reg
Mod
R/M
Código de
operación
W
Especifica un operando como registro
Especifica el otro operando como
registro o memoria
Determina el tamaño de los operandos
Determina el operando fuente y destino
D
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
13
Formato de instrucciones en el
8086/8088 (II)
•
Funciones de los campos del formato general:
– El primer byte contiene 3 clases de información:
• Código de operación: los 6 primeros bits contienen el
código de la operación a realizar
• El bit de dirección de registro (D): especifica si el
operando dado por el campo de registro operando REG
en el segundo byte es el operando fuente o destino:
– Si D = 1 tengo que REG = operando destino
– Si D = 0 tengo que REG = operando fuente
• El bit de tamaño del dato (W): especifica si la
operación será realizada sobre datos de 8 o de 16 bits:
– Si W = 0 los datos son de 8 bits
– Si W = 1 los datos son de 16 bits
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
14
Formato de instrucciones en el
8086/8088 (III)
– El segundo byte contiene los operandos (uno de ellos
siempre es un registro):
• El segundo byte contiene 3 campos. El campo de modo
(MOD), el campo de registro/memoria (R/M) y el
campo de registro operando (REG)
• El campo de 3 bits REG se usa para identificar un
registro según la tabla siguiente:
REG
W=0
W=1
000
001
010
011
100
101
110
111
AL
CL
DL
BL
AH
CH
DH
BH
AX
CX
DX
BX
SP
BP
SI
DI
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
15
Formato de instrucciones en el
8086/8088 (IV)
• El campo MOD junto con R/M indican quién es el otro
operando
Puede ser un registro o una posición de memoria
• En el segundo caso estos 2 campos especificarán
también cómo se direcciona dicha posición de memoria.
Obteniéndose la siguiente codificación:
MOD Función:
00
01
10
11
Modo memoria sin desplazamiento*
Modo memoria con desplazamiento de 8 b
Modo memoria con desplazamiento de 16 b
Modo registro
* excepto cuando R/M es 110
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
16
Ejemplos de formatos en el
8086/88 (I)
•
La instrucción MOV BL,AL "mueve el byte
contenido en el registro fuente AL al registro destino
BL". Usando el formato general para las
instrucciones del 8088 escribir el código máquina de
la instrucción. El código de operación es 1000102
– Solución: En el primer byte los primeros 6 bits
especifican la operación de mover y, por tanto, deben
ser:
CODIGO DE OPERACION = 1000102
– El bit D indica si el registro que señala el campo REG
del segundo byte es el operando fuente o el destino. En
este caso se codificará el registro BL en el campo REG
del segundo byte; por tanto, D será igual a 1
– El bit W debe indicar una operación de tamaño byte.
Por esta razón su valor también será 0
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
17
Ejemplos de formatos en el
8086/88 (II)
•
El resultado será el siguiente:
– 1er byte = 1000 10102 = 8A16
•
En el segundo byte, REG indica el operando es BL.
Su código correspondiente es:
– REG = 011
•
Como el segundo operando es también un registro
tengo que MOD debe valer 11. El campo R/M debe
especificar que el registro es AL y su códificación es
000. Esto da:
– MOD = 11
•
R/M = 000
Por tanto, el segundo byte completo es:
– 2º byte = 1101 10002 = D816
•
Y el código hexadecimal completo para la instrucción
es:
MOV BL,AL = 8A D816
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
18
Ejemplos de formatos en el
8086/88 (III)
• Supongamos que se dispone de las
siguientes variables, definidas en el
segmento de datos:
Cadena DB 0, 0, 0, 0
Dato DW 0
Nota: Cadena empieza en la posición de memoria
0h del DS y Dato en la posición 4h
Se desea saber cuál es el código en lenguaje
máquina de las siguientes instrucciones del
8086/88:
• MOV AL, BL
Byte1: C.O.: 1000 10 - D: 1 - W: 0
Byte2: MOD:11 - REG:000 - R/M:011
Código en hexadecimal: 8AC3 h
Cod.Op. D W
Mod Reg R/M
100010 1 0
11 000 011
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
19
Ejemplos de formatos en el
8086/88 (IV)
MOV Dato, BX
Byte1: C.O.: 1000 10 - D: 0 - W: 1
Byte2: MOD:00 - REG:011 - R/M:110
Código en hexadecimal: 891E 0400h
Cod.Op. D W
Mod Reg R/M
Dir.DatoB
Dir.DatoA
100010 0 1
00 011 110
00000100
00000000
MOV BX, Dato
Byte1: C.O.: 1000 10 - D: 1 - W: 1
Byte2: MOD:00 - REG:011 - R/M:110
Código en hexadecimal: 8B1E 0400h
Cod.Op. D W
Mod Reg R/M
Dir.DatoB
Dir.DatoA
100010 1 1
00 011 110
00000100
00000000
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
20
Ejemplos de formatos en el
8086/88 (V)
• MOV CL, Cadena[SI]
Byte1: C.O.: 1000 10 - D: 1
- W: 0
Byte2: MOD:10 - REG:001
- R/M:100
Código hexadecimal:
8A8C 0000h
Cod.Op. D W
Mod Reg R/M
100010 1 0
10 001 100
D.CadenaB D.CadenaA
00000000
00000000
Fundamentos de Computadores. Ingeniería de Telecomunicación.
Departamento de Automática. ATC
21

Documentos relacionados