190 likes | 336 Views
Arquitectura del 8086/8088 TEEL 4011. Prof. Jaime José Laracuente-Diaz. Bus Interface Unit. Address bus 20 bits. ( address summing block). Data bus 8 bits. CS. DS. SS. ES. Bus Control Logic. IP. Internal Comm Registers. ALU data bus (16 bits). Instruction Queue. 1. 2. 3. 4.
E N D
Arquitectura del 8086/8088TEEL 4011 Prof. Jaime José Laracuente-Diaz
Bus Interface Unit Address bus 20 bits (addresssumming block) Data bus 8 bits CS DS SS ES Bus Control Logic IP Internal Comm Registers ALU data bus (16 bits) Instruction Queue 1 2 3 4
Bus Interface Unit • Instruction Queue = este aumenta la velocidad promedio a la cual un programa es ejecutado.Se almacenan hasta 4 bytes (6 bytes en el 8086). Se logra la operación “fetchand execute”. • Segment Registers • CS • DS • SS • ES
Bus Interface Unit • Estos registros son de 16 bits. • Se utilizan para trabajar con el acceso a direcciones de 20 bits. • INTEL diseño un método que utiliza en los 8086 y 8088 siempre un segment registery un general registerpara formar la dirección en memoria de 20 bits.
Bus Interface Unit • Instruction Pointer (IP) and Address Summing Block • posee 16 bits • Apunta a la próxima instrucción que el programa ejecutara. • Siempre hace referencia al CS (code segment register) • Se forma la dirección de la próxima instrucción haciendo uso del CS y del IP.
Bus Interface Unit • El IP siempre contiene el “offset address” del de la próxima instrucción. • Veamos en un diagrama como se forma la dirección de 20 bits utilizando la combinación de registros.
Bus Interface Unit CS Register (16 bits segment base address) 0000 16 bits offset address IP (Instruction Pointer) 20 bits physicaladdress
Segment Registers • Los segment registers contienen los 16 bits más significativos que representan la dirección de comienzo de ese bloque de memoria. • Se conocen como segmento • un bloque de 64kbyte de memoria y que comienza en cualquier localización de la memoria de 1Mbyte, siempre y cuando posea una frontera de 16 byte.
Segment Registers • Un programador puede cambiar el contenido de los segment registers para que apunten otros bloques de 64kbytes de ser necesario. • Notaremos que los segmentos son indicados por los valores que estén almacenados en los segment registers según ilustra la Figura 12-7 del libro de Floyd.
Figure 12-7 NonoverlappingMethod FFFFF F0000 E0000 D0000 Extra Segment The data segment begins at segment address 9000 and offset address 0000. C0000 B0000 Stack Segment A0000 Data Segment 90000 The code segment begins at segment address 6800 and offset address 0000. 80000 Code segment 70000 60000 50000 40000 30000 20000 10000 00000
Ejemplo 12-1 A034 • CS = A034 (hex) • IP = 0FF2 (hex) • Si hacemos un “shifting” de CS cuatro bits a la izquierda (un digito hex) colocaríamos un 0 (hex) en la posición LSD como mostramos a continuación: 0FF2 A0340 0FF2 A1332 PhysicalAddress of nextinstruction Base Address (shiftedleft 4 bits) Offset Address
Ejemplo 12-1 • El programa ensamblador es quien se encarga de realizar la asignación de la dirección física de la próxima instrucción. • Por lo tanto el programador usualmente lo que ofrece son los datos del CS y del IP, por ejemplo: A034:0FF2
ExecutionUnit • Recuerde que el ALU es donde se realizan todas las operaciones aritméticas y lógicas trabajando con operandos de 8-bits o 16-bits. • Los registros generales poseen 16-bits de capacidad. Estos están divididos en dos grupos de cuatro registros cada uno, como ilustra la Figura 12-12.
Figura 12-12 8086/8088 General Registers 15 8 7 0 AH AL Accumulator BH BL Base Index 15 0 Count CH CL SP Stack Pointer DH DL Data BP Base Pointer DI DestinationIndex SI SourceIndex
General Registers • Note que la división de los registros generales ocurre en dos clases: • Registros generales de data • Registros generales de “pointer” y “index set”. • Los “pointer registers” se utilizan para indicar una dirección especifica de memoria. • Cada uno de los registros generales de data poseen dos secciones accesibles de 8-bits.
General Registers • Estas dos secciones nos permiten programar su uso en ocasiones como dos registros de 8-bits cada uno. • Los registros de data pueden ser utilizados para almacenar un valor antes o después de ejecutar una instrucción. • Los registros de “pointers” y “index” se utilizan en varias formas por el EU al acceder espacios de memoria.
Flags • Existe un registro que se conoce como el Flags Register. • Este posee nueve (9) bits de estatus y control independientes denominados “flags” (banderas).
Flags • Estas “banderas” son utilizadas para indicar una condición luego de que una instrucción ha sido ejecutada por el ALU como: • CF = carrysum • ZF = zeroflag • SF = signflag • También son utilizadas para alterar operaciones del procesador en ciertas ocasiones.
Flags • CF = Carry • PF = Parity • AF = Auxcarry • ZF = Zero • SF = Sign • OF = Overflow • IF = Interruptenable • DF = Direction • TF = Trap TF DF IF OF SF ZF AF PF CF