sin título de diapositiva - uahatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · segmentación de...
TRANSCRIPT
INSTRUCCIONES
LA ENERGIA DE LA MAQUINAFundamentos de Computadores
Capítulo segundo
Departamento de Automática. Area de Arquitectura y Tecnología de Computadores.
2
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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.
3
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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)
4
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el
µP 8086/88 (I)
µP 8086/88 Ejemplos Inmediato MOV AX, 15H Directo a registro Directo
MOV AX, BX MOV CX, ETIQUETA
Relativo a base Mediante índice Mediante índice y base
MOV BX+ARTÍCULO, AL MOV DL, VECTOR[SI] MOV AH, [BX][SI]+ARRAY
Implícito Algunas instrucciones
5
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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:
BaseRegistro de segmento Función
CSDSSSES
Contiene el código ejecutableContiene los datosSe reserva para la pila o stackSegmento extra de datos
6
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (III)
Segmentación de memoria (II)Banco de registros:• Registros de datos:
– AX (AH, AL)– BX (BH, BL)– CX (CH, CL)– DX (DH, DL)
• Punteros:– SP - Puntero de pila– BP - Puntero base de pila– SI - Registro índice– DI - Registro índice– IP - Contador de programa
• Registros de segmentosSS - Segmento de pilaDS - Segmento de datosCS - Segmento de códigoES - Segmento extra de datos
7
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (IV)
Direccionamiento inmediato
• Ejemplo: MOV AL, 15H
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
XX
80
15
MOV AL,15h01000
01001
01002
01003
Después de ejecutar la instrucción
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX0002
0100
01000
01001
01002
01003
80
15
MOV AL,15h
15
M
e
m
o
r
i
a
8
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (V)
Direccionamiento a registro
• Ejemplo: MOV AX, BX
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
XXXX
8B
C3
MOV AX,BX01000
01001
01002
01003
7FA6
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Después de ejecutar la instrucción
0002
0100
01000
01001
01002
01003
8B
C3
MOV AX,BX
7FA67FA6
M
e
m
o
r
i
a
9
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (VI)
Direccionamiento directo• Ejemplo: MOV CX, ETIQUETA
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
XXXX
8B
0E
MOV CX,ETIQUETA
ETIQUETA=1234H
01000
01001
01002
01003
0200 01004
03234
03235
34
12
ED
BE
operando fuente
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓDIRECCIÓN
Después de ejecutar la instrucción
0004
0100sig. inst.XX
8B
0E
MOV CX,ETIQUETA
01000
01001
01002
01003
01004
03234
03235
34
12
ED
BE
0200
BEED
M
e
m
o
r
i
a
10
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (VII)
Direccionamiento relativo a base
• Ejemplo: MOV [BX]+ARTÍCULO, AL
8086/88
IP
CS
SS
ES
DS
AXBX
CX
DX
SI
DI
BPSP
DIRECCIÓN
Después de ejecutar la instrucción
0004
0100
sig.inst.
XX
88
87
01000
01001
01002
01003
01004
0B000
00
50
FC
0500
1000XX
XX0B001
FC
Memoria
8086/88
IP
CS
SS
ES
DS
AX
BX
CX
DX
SI
DI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
1000
88
87
ARTICULO=5000H01000
01001
01002
01003
0500 01004
0B000
0B001
00
50
XX
operando desti
XX FC
XX
Memoria
no
11
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (VIII)
Direccionamiento mediante índice
• Ejemplo: MOV DL, VECTOR[SI]
8086/88
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
8A
94
VECTOR=A000H01000
01001
01002
01003
B000 01004
BA000
00
A0
ED operando fuente
XX XX
0000
Memoria
8086/88
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
Después de ejecutar la instrucción
0004
0100sig. inst.XX
8A
94
01000
01001
01002
01003
01004
BA000
00
A0
ED
B000
EDXX
0000
Memoria
12
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Modos de direccionamiento en el µP8086/88 (IX)
Direccionamiento mediante índice y base
• Ejemplo: MOV AH, [BX] [SI]+ARRAY
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
sig. inst.XX
Antes de ejecutar la instrucción
0000
0100
1000
8A
20
ARRAY=1234H01000
01001
01002
01003
0200 01004
06234
06235
34
12
ED
XX
Operandofuente
XX XX
2000
8088/86
IP
CS
SSES
DS
AXBXCXDX
SIDI
BPSP
INSTRUCCIÓNDIRECCIÓN
Después de ejecutar la instrucción
0004
0100sig. inst.XX
8A
20
01000
01001
01002
01003
01004
06234
34
12
ED
0200
1000ED XX
2000
Memoria
Memoria
13
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Formato de instrucciones en el 8086/8088 (I)
Desplazamiento o dato inmediato
Especifica un operando como registro
Especifica el otro operando comoregistro o memoria
Determina el tamaño de los operandos
Determina el operando fuente y destino
Código deoperación
Mod Reg
Byte 2
Código op.
Byte 1 Byte 3 Byte 4
R/MD W
D
W
ModR/M
Reg
14
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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
15
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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=1000 AL AX001 CL CX010 DL DX011 BL BX100 AH SP101 CH BP110 DH SI111 BH DI
16
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Formato de instrucciones en el 8086/8088 (IV)
• El campo MOD junto con R/M indican quién es el otro operandoPuede 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:
* excepto cuando R/M es 110
MOD Función:00011011
Modo memoria sin desplazamiento*Modo memoria con desplazamiento de 8 bModo memoria con desplazamiento de 16 bModo registro
17
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Ejemplos de formatos en el 8086/88 (I)
• La instrucción MOV BL,AL "mueve el bytecontenido 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
18
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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
19
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
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, 0Dato DW 0
Nota: Cadena empieza en la posición de memoria 0h del DS y Dato en la posición 4hSe desea saber cuál es el código en lenguaje máquina de las siguientes instrucciones del 8086/88:
• MOV AL, BLByte1: C.O.: 1000 10 - D: 1 - W: 0Byte2: MOD:11 - REG:000 - R/M:011Código en hexadecimal: 8AC3 h
100010 1 0 11 000 011
Cod.Op. D W Mod Reg R/M
20
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Ejemplos de formatos en el 8086/88 (IV)
MOV Dato, BXByte1: C.O.: 1000 10 - D: 0 - W: 1Byte2: MOD:00 - REG:011 - R/M:110Código en hexadecimal: 891E 0400h
MOV BX, DatoByte1: C.O.: 1000 10 - D: 1 - W: 1Byte2: MOD:00 - REG:011 - R/M:110Código en hexadecimal: 8B1E 0400h
100010 0 1 00 011 110
Cod.Op. D W Mod Reg R/M
00000100 00000000
Dir.DatoB Dir.DatoA
100010 1 1 00 011 110
Cod.Op. D W Mod Reg R/M
00000100 00000000
Dir.DatoB Dir.DatoA
21
Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC
Ejemplos de formatos en el 8086/88 (V)
• MOV CL, Cadena[SI]Byte1: C.O.: 1000 10 - D: 1 - W: 0Byte2: MOD:10 - REG:001 - R/M:100Código hexadecimal:
8A8C 0000h
100010 1 0 10 001 100
Cod.Op. D W Mod Reg R/M
00000000 00000000
D.CadenaB D.CadenaA