Skip to content

Instantly share code, notes, and snippets.

@rnovec
Last active June 7, 2024 18:04
Show Gist options
  • Save rnovec/e79b0bf1def492761572f0d7dd4ddeef to your computer and use it in GitHub Desktop.
Save rnovec/e79b0bf1def492761572f0d7dd4ddeef to your computer and use it in GitHub Desktop.
Microprocesadores Intel. CAPÍTULO 2 - El microprocesador y su arquitectura

Microprocesadores Intel -

8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Procesador Pentium Pro, Pentium II, Pentium III, Pentium 4

Arquitectura, Programación e Interfaz

CAPÍTULO 2 - El microprocesador y su arquitectura

Resumen

1. Modelo de Programación

  • El modelo de programación de los microprocesadores del 8086 al 80286 contiene registros de 8 y de 16 bits.
  • El modelo de programación de los microprocesadores 80386 y superiores contiene registros extendidos de 8, 16 y 32 bits, así como dos registros de segmento de 16 bits adicionales: FS y GS.
  • Los registros de 8 bits son AH, AL, BH, BL, CH, CL, DH y DL.
  • Los registros de 16 bits son AX, BX, CX, DX, SP, BP, DI y SI.
  • Los registros de segmento son CS, DS, ES, SS, FS y GS.
  • Los registros extendidos de 32 bits son EAX, EBX, ECX, EDX, ESP, EBP, EDI y ESI.
  • Además el microprocesador contiene un apuntador de instrucciones (IP/EIP) y un registro de bandera (FLAGS o EFLAGS).

Registros

  • Registros de 8 bits: AH, AL, BH, BL, CH, CL, DH y DL
  • Registros de 16 bits: AX, BX, CX, DX, SP, BP, DI, SI, IP, FLAGS, CS, DS, ES, SS, FS y GS.
  • Registros de 32 bits: EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI, EIP y EFLAGS.

Registros multipropósito

  • EAX, AX, AH, AL (acumulador): El acumulador se utiliza para instrucciones tales como multiplicación, división, puede guardar también la dirección de desplazamiento de una posición en el sistema de memoria.
  • EBX, BX, BH, BL (índice base): guarda la dirección de desplazamiento de una posición en el sistema de memoria, también puede direccionar datos de la memoria.
  • ECX, CX, CH, CL (Conteo): es un registro de propósito general que también guarda la cuenta de varias instrucciones, también puede guardar la dirección de desplazamiento de datos de la memoria. Las instrucciones que utilizan un conteo son las instrucciones de cadena repetida y las instrucciones desplazamiento, rotación y LOOP/LOOPD.
  • EDX, DX, DH, DL (Datos): es un registro de propósito general que guarda una parte del resultado de una multiplicación, o parte del dividendo antes de una división, también puede direccionar datos de la memoria
  • EBP, BP (apuntador de la base): apunta a una posición de memoria en todas las versiones del microprocesador para las transferencias de datos de memoria.
  • EDI, DI (índice de destino): direcciona datos de destino de cadena para las instrucciones de cadenas.
  • ESI, SI (índice de origen): A menudo el registro de índice de origen direcciona datos de cadena de origen para las instrucciones de cadenas. Registros de propósito especial
  • EIP, IP (apuntador de instrucciones): El apuntador de instrucciones, que apunta a la siguiente instrucción en un programa, se utiliza por el microprocesador para encontrar la siguiente instrucción secuencial en un programa ubicado dentro del segmento de código.
  • ESP, SP (apuntador de la pila): direcciona un área de la memoria llamada pila. La memoria de la pila almacena datos a través de este apuntador
  • EFLAGS, FLAGS (banderas): Este registro indica la condición del microprocesador y controla su operación.

Bit bandera

  • C (acarreo): Éste guarda el valor del acarreo después de la suma, o la sustracción después de la resta. La bandera de acarreo también indica condiciones de error.
  • P (paridad): La paridad es un 0 lógico para paridad impar y un 1 lógico para paridad par. La paridad es el conteo de los unos en un número expresado como par o impar.
  • A (acarreo auxiliar): El acarreo auxiliar guarda el acarreo (medio acarreo) después de la suma, o la sustracción después de la resta entre las posiciones de bit 3 y 4 del resultado.
  • Z (cero): La bandera cero indica que el resultado de una operación aritmética o lógica es cero. Si Z = 1, el resultado es cero; si Z = 0, el resultado no es cero.
  • S (signo): La bandera de signo guarda el signo aritmético del resultado después de la ejecución de una instrucción aritmética o lógica.
  • T (trampa): La bandera de trampa habilita el atrapamiento que depura, es decir, encontrar un error o bug.)
  • I (interrupción): La bandera de interrupción controla la operación de la terminal de entrada INTR (petición de interrupción). Si I = 1, se habilita la terminal INTR; si I = 0, se deshabilita la terminal INTR. El estado del bit de bandera I se controla mediante las instrucciones STI (establecer bandera I) y CLI (borrar bandera I).
  • D (dirección): La bandera de dirección selecciona el modo de incremento o de decremento para los registros DI y/o SI durante las instrucciones de cadena. Si D = 1, los registros se decrementan automáticamente; si D = 0, los registros se incrementan automáticamente.
  • O (desbordamiento): Un desbordamiento ocurre cuando se suman o restan números con signo. Un desbordamiento indica que el resultado ha excedido la capacidad de la máquina.

Registros de segmento

  • CS (código): El segmento de código es una sección de la memoria que guarda el código utilizado por el microprocesador. define la dirección inicial de la sección de memoria que guarda el código.
  • DS (datos): El segmento de datos es una sección de memoria que contiene la mayor parte de los datos utilizados por un programa. Se accede mediante una dirección de desplazamiento.
  • ES (extra): El segmento extra es un segmento de datos adicional utilizado para guardar datos de destino.
  • SS (pila): El segmento de pila define el área de memoria utilizada para la pila. El punto de entrada de la pila se determina mediante los registros segmento de pila y apuntador de pila.
  • FS y GS: Los segmentos FS y GS son registros de segmento suplementario, para que los programas puedan acceder a dos segmentos de memoria adicionales.

2. Modo Real

  • Todas las direcciones de memoria en modo real son una combinación de una dirección de segmento más una dirección de desplazamiento.

  • La posición inicial de un segmento se define mediante el número de 16 bits en el registro de segmento al que se adjunta un cero hexadecimal en el extremo derecho. La dirección de desplazamiento es un número de 16 bits que se suma a la dirección de segmento de 20 bits (1 Mbyte) para formar la dirección de memoria en modo real.

  • Una dirección física en modo real es válida si: 0 <= Segmento x 10H + Desplazamiento <= FFFFFH

  • Todas las instrucciones (código) se acceden mediante la combinación de CS (dirección de segmento) más IP o EIP (dirección de desplazamiento).

  • Por lo general se hace referencia a los datos a través de una combinación del DS (segmento de datos) y una dirección de desplazamiento o el contenido de un registro que contenga la dirección de desplazamiento. Los microprocesadores del 8086 al Pentium 4 utilizan BX, DI y SI como registros de desplazamiento predeterminados para los datos si se seleccionan registros de 16 bits. El 80386 y superiores pueden usar los registros de 32 bits EAX, EBX, ECX, EDX, EDI y ESI como registros de desplazamiento predeterminados para los datos.

3. Modo Protegido

Una dirección física en modo protegido es válida si se encuentra entre: Base <= Base + Desplazamiento <= Base + Limite

  • La operación en modo protegido permite acceder a la memoria que está por encima del primer 1 Mbyte en los microprocesadores del 80286 al Pentium 4.
  • Este sistema de memoria extendida (XMS) se accede a través de una dirección de segmento más una dirección de desplazamiento, justo igual que en el modo real. La diferencia es que la dirección de segmento no se guarda en el registro de segmento.

  • En el modo protegido, la dirección de inicio de segmento se almacena en un descriptor que se selecciona mediante el registro de segmento.

  • Un descriptor de modo protegido contiene una dirección base, un límite y un byte de derechos de acceso.

  • La dirección base localiza la dirección inicial del segmento de memoria; el límite define la última posición del segmento.

  • El byte de derechos de acceso define cómo se accede al segmento de memoria mediante un programa.

  • El microprocesador 80286 permite que un segmento de memoria empiece en cualquiera de sus 16 Mbytes de memoria mediante el uso de una dirección base de 24 bits.

  • El 80386 y superiores permiten que un segmento de memoria empiece en cualquiera de sus 4 Gbytes de memoria, mediante el uso de una dirección base de 32 bits.

  • El límite es un número de 16 bits en el 80286 y un número de 20 bits en el 80386 y superiores. Esto permite al 80286 un límite de 64 Kbytes en el segmento de memoria, y al 80386 y superiores un límite de 1 Mbyte (G = 0) o de 4 Gbytes (G = 1) en el segmento de memoria.

  • El registro de segmento (Selector) contiene tres campos de información en el modo protegido. Los 13 bits de más a la izquierda del registro de segmento direccionan uno de 8192 descriptores de una tabla de descriptores.

  • El bit TI accede a la tabla de descriptores globales (TI = 0) o a la tabla de descriptores locales (TI = 1).

  • Los 2 bits de más a la derecha del registro de segmento seleccionan el nivel de prioridad (RPL) solicitado para el acceso al segmento de memoria.

El contenido de un registro de segmento durante la operación en modo protegido de los microprocesadores del 80286 al Pentium 4. image

  1. Los microprocesadores 80286 y superiores utilizan los registros invisibles para los programas para acceder a las tablas de descriptores. Cada registro de segmento contiene una porción de caché que se utiliza en modo protegido para guardar la dirección base, el límite y los derechos de acceso adquiridos de un descriptor. La caché permite al microprocesador acceder al segmento de memoria sin tener que volver a hacer referencia a la tabla de descriptores, hasta que se cambie el contenido del registro de segmento.
@rnovec
Copy link
Author

rnovec commented May 10, 2020

CAPÍTULO 2 - El microprocesador y su arquitectura

Preguntas y problemas

1. ¿Qué son los registros visibles para los programas?

Son aquellos registros que utlizan durante la programación de aplicaciones y se especifican mediante instrucciones.

2. El 80286 direcciona registros que son de 8 y de:

16 bits

3. ¿Cuáles microprocesadores pueden direccionar los registros extendidos?

El 80386 al Pentium 4

4. El registro extendido BX se direcciona como:

EBX

5. ¿Cuál registro guarda la cuenta para algunas instrucciones?

ECX y/o CX

6. ¿Cuál es el propósito del registro IP/EIP?

Guarda la dirección de desplazamiento del siguiente paso en el programa.

7. ¿Cuáles son las operaciones aritméticas que no modifican el bit de bandera de acarreo?

INC y/o DEC

8. ¿Ocurrirá un desbordamiento si se suma un FFH con signo a un 01H con signo?

No, si se agrega +1 y -1 se tiene cero, que es un número válido.

9. Se dice que un número que contiene 3 bits uno tiene paridad:

Impar.

10. ¿Cuál bit de bandera controla la terminal INTR en el microprocesador?

I

11. ¿Cuáles microprocesadores contienen un registro de segmento FS?

Los 80386 al Pentium 4

12. ¿Cuál es el propósito de un registro de segmento en la operación en modo real del microprocesador?

El propósito del registrador de segmento es; redireccionar a la dirección más baja en un segmento de memoria de 64K

13. En el modo real, muestre las direcciones inicial y final de cada segmento localizado por los siguientes valores del registro de segmento:

  • a) 1000H: Inicio = 1000H x 10H = 10000H, Final = 10000H + FFFFH = 1FFFFH
  • b) 1234H: Inicio = 1234H x 10H = 12340H, Final = 12340H + FFFFH = 2233FH
  • c) 2300H: Inicio = 2300H x 10H = 23000H, Final = 23000H + FFFFH = 32FFFH
  • d) E000H: Inicio = E000H x 10H = E0000H, Final = E0000H + FFFFH = EFFFFH
  • e) AB00H: Inicio = AB00H x 10H = AB000H, Final = AB000H + FFFFH = BAFFFH

14. Encuentre la dirección en memoria de la siguiente instrucción ejecutada por el microprocesador, cuando opera en el modo real, para las siguientes combinaciones de CS:IP:

  • (a) CS = 1000H e IP = 2000H: 12000H
  • (b) CS = 2000H e IP = 1000H: 24A00H
  • (c) CS = 2300H e IP = 1A00H: 26200H
  • (d) CS = 1A00H e IP = B000H: 25000H
  • (e) CS = 3456H e IP = ABCDH: 3F12DH

15. ¿Las direcciones de memoria en modo real permiten el acceso a la memoria que está debajo de cuál dirección de memoria?

La dirección 100000H

16. ¿Qué registro o registros se utiliza(n) como una dirección de desplazamiento para el destino de la instrucción de cadena en el microprocesador?

DI

17. ¿Qué registro o registros de 32 bits se utiliza(n) para guardar una dirección de desplazamiento para los datos del segmento de datos en el microprocesador Pentium 4?

Los registradores; EAX, EBX, ECX, EDX EBP, ESI y EDI

18. La memoria de la pila se direcciona mediante una combinación del segmento SS más el desplazamiento SP o ESP

19. Si el apuntador base (BP) direcciona memoria, el segmento Stack contiene los datos SS

20. Determine la posición de memoria que se direcciona mediante las siguientes combinaciones de registros del 80286 en modo real:

  • (a) DS = 1000H y DI = 2000H: 1000H x 10H + 2000H = 12000H
  • (b) DS = 2000H y SI = 1002H: 2000H x 10H + 1002H = 21002H
  • (c) DS = 2300H y BP = 3200H: 2300H x 10H + 3200H = 26200H
  • (d) DS = A000H y BX = 1000H: A000H x 10H + 1000H = A1000H
  • (e) DS = 2900H y DI = 3A00H: 2900H x 10H + 3A00H = 2CA00H

21. Determine la posición de memoria que se direcciona mediante las siguientes combinaciones de registros del Pentium 4 en modo real:

  • (a) DS = 2000H y EAX = 00003000H

2000H, agregándole el 0H, por lo que queda: 20000H. Se le suma 00003000H y queda como resultado = 23000H

  • (b) DS = 1A00H y ECX = 00002000H

1A00H, agregándole el 0H, por lo que queda: 1A000H. Se le suma 00002000H y queda como resultado = 1C000H

  • (c) DS = C000H y ESI = 0000A000H

C000H, agregándole el 0H, por lo que queda: C0000H. Se le suma 0000A000H y queda como resultado = CA000H

  • (d) SS = 8000H y ESP = 00009000H

8000H, agregándole el 0H, por lo que queda: 80000H. Se le suma 00009000H y queda como resultado = 89000H

  • (e) DS = 1239H y EDX = 0000A900H

1239H, agregándole el 0H, por lo que queda: 12390H. Se le suma 0000A900H y queda como resultado = 1CC90H

22. ¿A cuál área de la memoria permite el acceso el direccionamiento de memoria en modo protegido en el microprocesador 80286?

A todos los 16 Mbytes

23. ¿A cuál área de la memoria permite el acceso el direccionamiento de memoria en modo protegido en el microprocesador Pentium 4?

A todos los 4 Gbytes de memoria

24. ¿Cuál es el propósito del registro de segmento en un direccionamiento de memoria en modo protegido?

El registrador de segmentos es un selector que selecciona el descriptor de una tabla de descriptor. Establece el nivel de privilegio de la solicitud y elige la tabla global o local.

25. ¿Cuántos descriptores son accesibles en la tabla de descriptores globales en modo protegido?

8,192

26. ¿Cuáles son las posiciones inicial y final que se direccionan sobre la base de un descriptor del 80286 que contiene una dirección base de A00000H y un límite de 1000H?

Dirección base = inicio = A00000H (la base debe ser de 24 bits o agregar un 0 al final)

Límite: 1000H

Dirección final = Dirección base + límite = A01000H

Respuesta final: A00000H - A01000H

27. ¿Cuáles son las posiciones inicial y final que se direccionan sobre la base de un descriptor del Pentium 4 que contiene una dirección base de 01000000H, un límite de 0FFFFH y G = 0?

Dirección base = inicio = 01000000H

Límite: 0FFFFH

Granularidad: 0

Dirección final = Dirección base + límite = 0100FFFFH

Repuesta final: 01000000H - 0100FFFFH

28. ¿Cuáles son las posiciones inicial y final que se direccionan sobre la base de un descriptor del Pentium 4 que contiene una dirección base de 00280000H, un límite de 00010H y G = 1?

Dirección base = inicio = 00280000H

Límite: 00010H

Granularidad: 1

Dirección final = Dirección base + límite * FFFH = 00290FFFH

Repuesta final: 00280000H - 00290FFFH

29. Si el registro DS contiene 0020H en un sistema en modo protegido, ¿qué tabla de descriptores globales es la que se accesa?

DS: 0020H (Debemos pasarlo a binario)

0020H = 0000 0000 0010 0000

Usamos la tablita de la figura 2-8

Selector TI RPL
0000000000100 0 00
4 0 0

Advertencia Para saber el selector pasamos del binario a decimal (0000000000100), es igual a 4

Respuesta final: Accesa al selector 4

30. Si DS = 0103H en un sistema en modo protegido, el nivel de privilegio solicitado es **3**.

31. Si DS = 0105H en un sistema en modo protegido, ¿qué entrada, tabla y nivel de privilegio solicitado se seleccionan?

DS: 0105H (Lo pasamos a binario)

0105H = 0000 0001 0000 0101

Usamos la tablita de la figura 2-8

Selector TI RPL
0000000100000 1 01
32 1 1

RPL = 01, entonces nivel de privilegio 1

TI = 1, entonces tabla de descriptores globales

Selector = 0000000100000, entonces selector 32

32. ¿Cuál es la máxima longitud de la tabla de descriptores globales en el microprocesador Pentium 4?

64K

33. Codifique un descriptor que describa un segmento de memoria que empiece en la posición 210000H y termine en la posición 21001FH. Este segmento de memoria es un segmento de código que puede leerse. El descriptor es para un microprocesador 80286.

Dirección base = inicio = 210000H

Dirección final = 21001FH

Límite = Dirección final – Dirección base = 210000H - 21001FH = 00001FH
Ahora pasamos la dirección base y el limite a binario

Base = 210000H = 0010 0001 0000 0000 0000 0000

Límite = 00001FH = 0000 0000 0000 0000 0001 1111

Usando la tablita 2-6 y la 2-7 para derechos de acceso llenamos la tablita, los números binarios se cuentan de derecha a izquierda

0000 0000 0000 0000
1001 1010 0010 0001
0000 0000 0000 0000
0001 0000 0001 1111

34. Codifique un descriptor que describa un segmento de memoria que empiece en la posición 03000000H y termine en la posición 05FFFFFFH. Este segmento de memoria es un segmento de datos que crece hacia arriba en el sistema de memoria y puede escribirse en él. El descriptor es para un microprocesador Pentium 4.

Dirección base = inicio = 03000000H

Dirección final = 05FFFFFFH

Límite = Dirección final – Dirección base = 05FFFFFFH - 03000000H = 02FFFFFFH

Si el limite es mayor de 20 bits, es decir de granularidad 1, entonces debemos quitarle al final FFFH

Límite = 02FFFFFFH / FFFH = 02FFFH

Ahora pasamos la dirección base y el limite a binario

Base = 03000000H = 0000 0011 0000 0000 0000 0000 0000 0000

Límite = 02FFFH = 0000 0010 1111 1111 1111

Usando la tablita 2-6 y la 2-7 para derechos de acceso llenamos la tablita, los números binarios se cuentan de derecha a izquierda

0000 0011 1 1 0 1 0000
1001 0010 0000 0000
0000 0000 0000 0000
0010 1111 1111 1111

35. ¿Qué registro localiza la tabla de descriptores globales?

El registro de tabla de descriptores globales, el GDTR

36. ¿Cómo se direcciona la tabla de descriptores globales en el sistema de memoria?

A través de un descriptor almacenado en la tabla global

37. Describa lo que ocurre cuando se carga un nuevo número en un registro de segmento cuando el microprocesador se opera en el modo protegido.

La caché interna se carga con la dirección base, la dirección de desplazamiento y el byte de derechos de acceso.

38. ¿Qué son los registros invisibles para los programas?

Los registradores invisibles del programa son las porciones de caché de los registradores de segmentos y también los registradores GDTR, LDTR e IDTR.

39. ¿Cuál es el propósito del GDTR?

contiene la dirección base de la tabla de descriptores globales y el límite

@rnovec
Copy link
Author

rnovec commented Jun 11, 2020

Preguntas tipo examen

Es utilizado para limitar el tamaño del área de memoria indicada por un descriptor hasta 1MB

  • La Base
  • Byte de derechos de acceso(RPL)
  • El Segmento
  • Bit de granularidad(G)

¿Porqué son importantes las banderas de Z y S en el procesador?

  • Sirven para saber si existe un error en la sintaxis
  • Porque son las que indican si la operación dio cero o si es real
  • Ninguna de las anteriores
  • Porque son las que indican si el algoritmo se resolvió exitosamente.

Sirven como registros base en los direccionamientos de memoria de datos:

  • CS y DS
  • BX y BP
  • SI y DI
  • AX y BX

Cuantos descriptores se tienen en el sistema x86 en la tabla de descriptores globales

  • Ninguna de las anteriores
  • 8,192
  • 16,384
  • 64k

En modo protegido, ¿cual es el nivel de privilegio solicitado si el selector es 0BD4H?

  • Administrador
  • cliente
  • Sistema
  • Usuario

¿Cuanta memoria máxima se direcciona en modo real?

  • 4GB
  • 1 Megabyte (20 bits)
  • menos de FFFFFH
  • 64KB

Son los dos tipos de tablas de descriptores que se tienen en modo protegido

Locales y Globales

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment