¡Descarga El processador y más Apuntes en PDF de Fundamentos de la Informática solo en Docsity!
1
Procesador y ensamblador
2
Familia procesadores intel
Familia procesadores intel
3
Core i
Clarkdale Sandy Bridge Ivy Bridge Haswell
2 2 2 CORES 2
32 nm 32 nm 22 nm 22 nm
January 2010 February 2011 September 2012 September 2013
Core i
Lynnfield Clarkdale Sandy Bridge Sandy Bridge Ivy Bridge Ivy Bridge Haswell Haswell
4 2 4 2 4 CORES 2 4 2
45 nm 32 nm 32 nm 32 nm 22 nm 22 nm 22 nm 22 nm
September 2009 January 2010 January 2011 February 2011 April 2012 April 2012 June 2013 June 2013
Core i
Bloomfield Lynnfield Gulftown Sandy Bridge Sandy Bridge-E Sandy Bridge-E Ivy Bridge Haswell Ivy Bridge-E Ivy Bridge-E
4 4 6 4 6 CORES 4 4 4 4 6
45 nm 45 nm 32 nm 32 nm 32 nm 32 nm 22 nm 22 nm 22 nm 22 nm
November 2008 September 2009 July 2010 January 2011 November 2011 February 2012 April 2012 June 2013 TBA TBA Core i Extreme Edition
Bloomfield Gulftown Sandy Bridge-E Ivy Bridge-E
4 6 CORES 6 6
45 nm 32 nm 32 nm 22 nm
November 2008 March 2010 November 2011 TBA
… y siguen surgiendo
4
Diseño modular del 8086 (14 registros)
AH AL BH BL CH CL DH DL SP BP DI SI
ALU
SR (FLAGS)
UC
unidad de ejecución
CS DS SS ES IP (o PC)
cola de instrucciones
lógica de control del bus
unidad de interfaz con el bus (BIU)
AX BX CX DX
registros de segmento
registros de propósito general
7
Registros arquitectura intel 32 bits (386 +)
Los registros se dividen en tres grupos:
•Registros de propósito general
•Registros de segmentos
•Registros especiales
- Registro de banderas (flags)
- Registro puntero de instrucciones
8
Registros de propósito general
•Los registros pueden ser de 2 tamaños diferentes:
- de 8/16 bits (8086, +)
- AH, AL, BH, BL, … / AX (AH AL), BX, BP, SI, DI, …
- de 32 bits (80386, +)
- reg 16 bits + parte extendida (EAX, EBX, EBP, ESP, …)
9
Registros de propósito general (cont.)
- AX: acumulador, instrucciones aritméticas
- BX: base, indicar un desplazamiento (offset)
- CX: contador, dentro bucles o iteraciones
- DX: datos, también para operaciones aritméticas
- SI (source index): desplazamiento relativo a datos origen
- DI (destination index): desplazamiento relativo a datos
destino
- SP (stack pointer): puntero de la pila, dirección relativa al
segmento de pila
- BP (base pointer): se utiliza para fijar el puntero de la pila
10
Registros de segmentos
- CS (code segment): apunta a la base del segmento de
código, es decir, las instrucciones del programa
- DS (data segment): apunta a la base de un segmento de
datos, es decir, el área de memoria donde están los
datos
- SS (stack segment): apunta a la base del segmento de
pila
- ES (extra segment): apunta a la base de un segmento de
datos extra
- FS (80386, +): apunta a la base de un segmento de datos
- GS (80386, +): apunta a la base de un segmento de
datos
13
Segmentación
14
Segmentación (cont.)
15
Cómo forma las direcciones?
16
Ejemplos: dirección lógica dirección física
Dirección lógica Dirección física
Segmento:Desplazamiento
2000H:0205H 20205H
5100H:1000H 52000H
F000H:FFFFH FFFFFH
2010H:0105H ¿?
2020H:0005H ¿?
1900H:7205H ¿?
19
Segmentos y registros asociados (cont.)
Los datos se direccionan mediante:
- registro de segmento: SS
- registro de desplazamiento: SP o BP
- Segmento extra
Los datos se direccionan mediante:
- registro de segmento: ES
- registro de desplazamiento: BX, SI o DI
20
Prefijos de segmento
CS SS DS ES
IP si^ no^ no^ no
SP no^ si^ no^ no
BP prefijo^ por defecto^ prefijo^ prefijo
BX prefijo^ prefijo^ por defecto^ prefijo
SI prefijo^ prefijo^ por defecto^ prefijo
DI prefijo^ prefijo^ por defecto^ por defecto
Combinaciones entre los cuatro registros de segmentos y los seis registros de desplazamiento
21
Longitud de los datos
Doble palabra
Palabra
22
Constantes
Existen cinco tipos:
- Binario 1011b
- Decimal 129d
- Hexadecimal 0E23h (no puede empezar por letra)
- Octal 1477q (puede especificarse “q” u “o”)
- Carácter “ABC” (las comillas pueden ser simples o dobles)
25
ADC (sumar con acarreo)
Sintaxis: ADC destino, origen
- Suma los operandos origen, destino y el valor
del indicador de acarreo (CF: 0 ó 1) almacenando
el resultado en el operando destino.
- Se utiliza normalmente para sumar números
grandes, de más de 16 bits, en varios pasos,
considerando lo que nos llevamos (el acarreo) de
la suma anterior.
Ejemplos:
add ax,cx ;fuente en dx,cx
adc bx,dx ;destino en bx,ax
26
ADD (sumar dos operandos)
Sintaxis: ADD destino, origen
- Suma los operandos destino y origen almacenando el resultado en el operando destino.
- El acarreo se activa si se desborda el registro destino durante la suma.
- Los operandos deben ser del mismo tipo.
Ejemplos:
add ax,bx
add cl,012h
27
CALL (llamar a una subrutina)
- Sintaxis: CALL destino
- Transfiere el control del programa a una subrutina / procedimiento, salvando previamente en la pila la dirección de la instrucción siguiente, para poder volver a ella una vez ejecutado el procedimiento.
- Se almacena en la pila una dirección de retorno de 16 bits o dos palabras de 16 bits indicando en este último caso tanto el offset (IP) como el segmento (CS) a donde volver (funciona como el push). Ejemplos: call proc ………… proc1 proc …. ret proc1 endp
28
CMP (comparar dos operandos)
Sintaxis: CMP destino, origen
- Resta origen de destino (dest – orig) sin retornar el resultado. Los operandos quedan inalterados, pero los indicadores se actualizan, pudiéndose consultar a continuación mediante una instrucción de bifurcación condicional (je, jge,…).
- Los operandos pueden ser de tipo byte o palabra pero ambos deben ser de la misma dimensión.
Ejemplos:
cmp bx, word ptr ds:[di]
cmp ch,cl
31
IN (entrada)
Sintaxis: IN acumulador,puerta
- Transfiere un byte o una palabra de una puerta de
entrada del procesador al registro AL o AX,
respectivamente.
Ejemplo:
in ax,012h ;leer sobre AX una
;palabra de la puerta 012h
32
INC (incrementar)
Sintaxis: INC destino
- Incrementa el operando destino. El operando destino puede ser un byte o un word (palabra).
- Si todos los bits están en 1, pasarán a 0 con un INC y se truncará el número de bits del operando
- Typecast imprescindible en el caso de un operando de memoria Ejemplos: inc al inc word ptr ss:[sp+4] inc word ptr es:[bx+di+7]
33
JMP (saltar / bifurcar)
- Sintaxis: JMP dirección o JMP SHORT dirección
- Transfiere el control incondicionalmente a la dirección indicada en el operando.
- Las direcciones destino de salto se pueden especificar mediante etiquetas.
Ejemplos:
jmp etiqueta
etiqueta1:
;resto del código
34
LEA (cargar dirección efectiva)
Sintaxis: LEA destino, origen
- Transfiere el desplazamiento del operando fuente al operando destino.
- El operando destino debe ser un registro de propósito general (AX, BX, CX, DX, SI, DI, BP, SP)
- En general, esta instrucción es equivalente a MOV destino,OFFSET fuente
Ejemplos:
lea dx,datos[si]
lea di,offset datos
mov ax,ds:[di] ;accedemos a var. datos.
37
MUL (multiplicar sin signo)
Sintaxis: MUL origen ( origen no puede ser operando inmediato)
- Multiplica el contenido sin signo del acumulador (AX) por el operando origen.
- Si el operando origen es de un byte el acumulador usado es AL guardándose el resultado en AX (si AH es distinto de 0 se activan los indicadores CF y OF). Si el operando origen es una palabra, el acumulador usado es AX almacenándose el resultado en DX y AX (si DX es distinto de cero los indicadores CF y OF se activan).
Ejemplos: mov ax, mov bx,10h mul bx ; ax=axbx= 5h10h=50h**
38
NEG (negar)
Sintaxis: NEG destino
- Calcula el valor negativo del operando, es decir, resta el operando de cero almacenando el resultado en el mismo lugar (complemento a 2 de un número).
Ejemplos:
neg ax
neg al
neg byte ptr es:[bx+si+2]
39
OUT (salida)
Sintaxis: OUT puerta, acumulador
- Transfiere un byte o una palabra del registro AL o AX a una puerta de salida del procesador.
Ejemplos:
out 012h,ax ;transferir el valor de ax
;al puerto 012h
40
POP (sacar palabra de la pila)
Sintaxis: POP destino
- Transfiere el dato (tipo palabra) que se encuentra en lo alto de la pila (apuntado por SP) al operando destino y luego incrementa el registro SP en dos (SP=SP+2).
Ejemplos:
pop ax
pop bx
pop word ptr ds:[di]