21
INSTRUCCIONES LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo Departamento de Automática. Area de Arquitectura y Tecnología de Computadores.

Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

INSTRUCCIONES

LA ENERGIA DE LA MAQUINAFundamentos de Computadores

Capítulo segundo

Departamento de Automática. Area de Arquitectura y Tecnología de Computadores.

Page 2: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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.

Page 3: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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)

Page 4: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 5: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 6: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 7: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 8: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 9: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 10: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 11: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 12: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 13: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 14: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 15: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 16: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 17: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 18: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 19: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 20: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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

Page 21: Sin título de diapositiva - UAHatc2.aut.uah.es/~juani/documentos/capitulo2.pdf · Segmentación de memoria (I) • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero

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