Professional Documents
Culture Documents
Computadores
Entrada/Salida
El computador
Máquina de ejecución secuencial de instrucciones
Programa=secuencia de instrucciones
Instrucciones y datos almacenados en memoria
Memoria organizada en direcciones
Instrucciones, datos y operaciones en binario
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
Inst1: 11101100
MOV X,3 Decodifica Almacena
Inst2: 01101101
MOV Z,X Instrucciones codificadas instrucción resultado
en binario
Inst3: 11101011
ADD Z,Y
...
X: 00000000
0
Obtiene Calcula
Y: 00000111
7 Datos codificados en
operandos resultado
Z: binario
00000010
2
...
Partes del computador
Unidad de Control (CU): CU
CPU
organiza el funcionamiento del
computador
registros
Unidad Aritmético Lógica
(ALU): ejecuta operaciones ALU
aritméticas (+,-,*,/) y lógicas a
nivel de bit (AND, OR, …)
Registros: lugares de
almacenamiento temporal de
Memoria
información
Memoria: lugar principal de
almacenamiento de
información (código y datos)
Dispositivos de E/S:
permiten la comunicación con
el exterior
E/S
Ejecución de instrucciones
Ejemplo: x=3; z=x+y;
Cont. Prog.: Inst1
CPU
Instrucción:
Operando1:
Operando2:
ALU
Resultado:
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
Operando2:
ALU
Resultado:
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
Operando2:
ALU
Resultado:
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado:
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00000011
00001010
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00001010
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
ALU
Resultado: 00001010
Dirección Contenido
000..00 01101100 Lee instrucción Pasa a siguiente
000..01 de memoria instrucción
00101110
000..10 11111100
...
...
Ejecución del programa
Ejecución de un .EXE
00011100
programa: 00010100
11011100
Cargar en memoria el 11010100
Poner en el PC la
Cargador 00011100
dirección de la 1ª 00010100
11011100
instrucción del programa 11010100
. . .
. . .
O bien cargar en . . .
memoria y ejecutar paso
a paso con un programa
depurador
El programa en memoria
Partes del programa:
Código Código
Conjunto de funciones
Datos
Datos
Variables globales (datos)
Pila
Variables locales: Pila (stack)
Variables de
almacenamiento dinámico:
Montón (heap) Montón
La zona de memoria de código
El código está dividido en funciones
Función: conjunto de instrucciones que
cumplen un objetivo común, separable del Código
resto y, en lo posible, reutilizable.
Elementos de la función:
Datos
Parámetros
Variables locales
Sentencias de ejecución Pila
Valor devuelto
tipodvto Funcion(tipo1 par1,tipo2 par2, …)
{
tipoL1 vloc1,vloc2,vloc3; Montón
tipoL2 vloc4,vloc5;
...
Sentencias;
return valor;
}
La zona de memoria de código
El código está dividido en funciones
Factorial
int Factorial(int x) CombNM
{
Código main
int i,result=1;
for (i=1;i<=x;i++) printf
result=result*i;
return result;
} Datos
int CombNM(int n,int m)
{
int num,r; Pila
num=Factorial(n);
r=num/Factorial(n-m);
return r;
}
Variables globales
Variables locales Pila
Parámetros de función
Variables de almacenamiento dinámico
tipoG1 vglob1,vglob2; Montón
tipodvto Funcion(tipo1 par1,tipo2 par2, …)
{
tipoL1 vloc1,vloc2,vloc3;
tipoL2 vloc4,vloc5;
...
}
La zona de memoria de datos
Los datos son las variables utilizadas:
Variables globales:
Se alojan en el segmento de datos Código
Su espacio se reserva al cargar el programa
y se mantiene en toda su duración
Todas las funciones tienen acceso a estas Datos
variables
Pila
Montón
La zona de memoria de datos
Los datos son las variables utilizadas:
Variables locales y parámetros de función:
Se alojan en el segmento de pila. Código
Su espacio se reserva al empezar a
ejecutar la función en que están declaradas,
y se libera al terminar su ejecución. Datos
Sólo la función que las declara puede
utilizarlas.
Pila
Las variables locales y parámetros se van
apilando en memoria al llamar a otras
funciones, y desapilando al salir.
Los parámetros son variables locales cuyo Montón
valor inicial se da en la llamada a la función.
La zona de memoria de datos
Código
El funcionamiento de la pila
Datos
int Factorial(int x)
{
int i,result=1;
for (i=1;i<=x;i++)
result=result*i;
return result;
}
void main()
{
int x=8,y=3,c;
c=CombNM(x,y+2);
printf(“Comb=%d\n”,c); SP
}
Montón
La zona de memoria de datos
Código
El funcionamiento de la pila
Datos
int Factorial(int x)
{
int i,result=1;
for (i=1;i<=x;i++)
result=result*i;
return result;
}
permiten la comuni-
registros
cación del computador
ALU
con el exterior
Entrada: teclado, ratón,
conversor A/D, entrada
Memoria
digital, temporizador, …
Salida: pantalla, impre-
sora, conversor D/A,
salida digital, …
E y S: disco duro, comu-
nicación serie, paralelo,
red, …
E/S
Programación de E/S: puertos
Puertos de E/S:
Lugares de almacenamiento de información que, cuando
son leídos o escritos, provocan acciones en los dispositivos
de E/S
Organizados en direcciones
5000 0 1 1 0 1 0 1 0
Interfaz Dispositivo
... dispositivo
2 2
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
1 1100111
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
ESCRITO
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
OUT 3000,’a’
un dispositivo de
Salida: impresora
El programador
escribe en un puerto
del dispositivo E/S Interfaz
impresora
La electrónica del ...
0 1100001
interfaz genera las 3000
acciones
Impresora
correspondientes en
el dispositivo
M
Funcionamiento de dispositivos
Funcionamiento de
ESPERA:
un dispositivo de TEST 2000,000000001b
JZ ESPERA
Entrada: teclado IN R0,2001
La electrónica del
interfaz reacciona
ante cambios en el
dispositivo, E/S Interfaz
teclado
modificando el/los ...
puertos 2000 0 0000000
2001 1 0010111
El programador lee
Teclado
del/los puertos del
dispositivo
Funcionamiento de dispositivos
Funcionamiento de
ESPERA:
un dispositivo de TEST 2000,000000001b
JZ ESPERA
Entrada: teclado IN R0,2001
La electrónica del
interfaz reacciona
ante cambios en el
dispositivo, E/S Interfaz
teclado
modificando el/los ...
puertos 2000 0 0000000
2001 1 0010111
El programador lee
Teclado
del/los puertos del
dispositivo
Funcionamiento de dispositivos
Funcionamiento de
ESPERA:
un dispositivo de TEST 2000,000000001b
JZ ESPERA
Entrada: teclado IN R0,2001
La electrónica del
interfaz reacciona
ante cambios en el
dispositivo, E/S Interfaz
teclado
modificando el/los ...
puertos 2000 0 0000000
2001 1 0010111
El programador lee
Teclado
del/los puertos del
dispositivo
Funcionamiento de dispositivos
Funcionamiento de
ESPERA:
un dispositivo de TEST 2000,000000001b
JZ ESPERA
Entrada: teclado IN R0,2001
La electrónica del
interfaz reacciona
ante cambios en el
dispositivo, E/S Interfaz
teclado
modificando el/los ...
puertos 2000 0 0000000
2001 1 0010111
El programador lee
Teclado
del/los puertos del
dispositivo
Funcionamiento de dispositivos
Funcionamiento de un
ESPERA:
dispositivo de Entrada: TEST 2000,000000001b
JZ ESPERA
teclado IN R0,2001
La electrónica del
interfaz reacciona ante
cambios en el
dispositivo, modificando E/S Interfaz
el/los puertos ... teclado
El programador lee 2000 0 0000000
del/los puertos del 2001 1 0010111
dispositivo
Teclado
Funcionamiento de dispositivos
Funcionamiento de un
ESPERA:
dispositivo de Entrada: TEST 2000,000000001b
JZ ESPERA
teclado IN R0,2001
La electrónica del
interfaz reacciona ante
cambios en el
dispositivo, modificando E/S Interfaz
el/los puertos ... teclado
El programador lee 2000 0 0000001
RECIBIDO
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
Cuando el dispositivo avisa
2000 0 0000000
de algún evento, se 2001 1 0010111
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.
Sincronización de E/S
INST1
Muestreo o polling: INST2
INST3
El programa comprueba el
estado del dispositivo ...
ISR:
leyendo los puertos IN R0,2001
Ocupa mucho tiempo de IRET
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
Cuando el dispositivo avisa
2000 0 0000000
de algún evento, se 2001 1 0010111
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.
Sincronización de E/S
INST1
Muestreo o polling: INST2
INST3
El programa comprueba el
estado del dispositivo ...
ISR:
leyendo los puertos IN R0,2001
Ocupa mucho tiempo de IRET
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
RECIBIDO
Cuando el dispositivo avisa
2000 0 0000001
de algún evento, se 2001 0 1100001
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.
Sincronización de E/S
INST1
Muestreo o polling: INST2
INST3
El programa comprueba el
estado del dispositivo ...
ISR:
leyendo los puertos IN R0,2001
Ocupa mucho tiempo de IRET
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
RECIBIDO
Cuando el dispositivo avisa
2000 0 0000001
de algún evento, se 2001 0 1100001
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.
Sincronización de E/S
INST1
Muestreo o polling: INST2
INST3
El programa comprueba el
estado del dispositivo ...
ISR:
leyendo los puertos IN R0,2001
Ocupa mucho tiempo de IRET
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
Cuando el dispositivo avisa
2000 0 0000000
de algún evento, se 2001 0 1100001
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.
Sincronización de E/S
INST1
Muestreo o polling: INST2
INST3
El programa comprueba el
estado del dispositivo ...
ISR:
leyendo los puertos IN R0,2001
Ocupa mucho tiempo de IRET
CPU
Interrupciones:
La CPU está ejecutando E/S Interfaz
otro programa ... teclado
Cuando el dispositivo avisa
2000 0 0000000
de algún evento, se 2001 0 1100001
abandona temporalmente la
ejecución del programa y se Teclado
pasa a ejecutar una ISR. Se
retoma el programa al
terminar la ISR.