Guia.pdf
Document Details
Uploaded by MultiPurposeRhythm
Tags
Full Transcript
Historia y evolución de las computadoras Primera generación - Bulbos. Los usaban como “memoria”. - No hay memoria - Bulbos reemplazados por relevadores - Se comunicaba el humano y máquina en 1s y 0s - Fracasos: o Censo USA o...
Historia y evolución de las computadoras Primera generación - Bulbos. Los usaban como “memoria”. - No hay memoria - Bulbos reemplazados por relevadores - Se comunicaba el humano y máquina en 1s y 0s - Fracasos: o Censo USA o Universo Segunda generación - COBOL y FORTRAN - COBOL sigue vigente - Tecnología magnética para almacenamiento - Mas pequenas - Más rápidas - Se reemplazan bulbos por transistores - Reduce calor - Simulador de vuelo Tercera generación - Procesador (circuito integrado) - Microcomputadoras (computadoras personales) - Reducción de costos - Menos calor - Menos consumo de luz - Multiprogramación (partición del procesador) Cuarta generación - Multicircuitos - Maquina de escribir - Discos magnéticos reemplazados por chips - Microprocesador - Supercomputadoras - Lanzamiento de computadora personal - CDs Quinta generación - Digitalización masiva - MP3 - AI - AI traducción Japón Sexta generación - Ahorro de energía - Segunda aparición de chips - Computadoras compactas - Núcleos paralelos masivos - Computadoras ópticas - Avanza computadoras cuánticas - VR - Internet Séptima generación · Pantallas LCD · Disco duro de alta capacidad · Velocidades altas de internet · AI (segunda aparición) · Máquinas frías Octava generación · Nanotecnología · VR avanzada Lenguajes de programación (3 tipos) Tipos de lenguaje: - bajo nivel: cerca del hardware. Se comunica directamente con 1s y 0s. - alto nivel: lejos del hardware. Se traduce el código a 1s y 0s. 1. Lenguaje máquina: a. adaptada a los circuitos de la máquina. b. Alejado de lenguaje humano c. Difícil d. Se requiere saber la arquitectura de la computadora 2. Lenguaje ensamblador: a. No se puede cambiar el programa entre máquinas (baja portabilidad) b. repertorio reducido de instrucciones c. fuerte dependencia del hardware d. primer intento por hacer un lenguaje más entendible a los humanos e. el traductor de comandos es ensamblador f. Ayuda a afinar programas de alto nivel g. Tienes control total de la máquina 3. Lenguaje de alto nivel: a. instrucciones fáciles de entender b. desarrolla aplicaciones independientes de la máquina c. tienen estructuras de control d. El problema es que hay muchos diferentes de lenguajes Esquema de un procesador 8088 / 8086 Partes de un procesador 8086: Contador del programa - IP Acumulador - Ax y Bx Unidad aritmética lógica - es para hacer la suma de las variables Registro de instrucción - CS Bus de datos - es por donde pasa los datos desde los registros de trabajo hasta la ALU y UC Algunos notables apuntadores localidades de memoria (dirección de memoria) del CPU: DI – para regresar el valor SI – apunta al valor que quieres agarrar y lo mueve a un registro de trabajo con el comando MOV IP – para el código Bus (datos, control y direccion) El bus de datos es responsable de transportar data entre la CPU, la memoria y los dispositivos de entrada/salida. Por su parte, el bus de direcciones transmite la ubicación física de los datos que deben ser accedidos o escritos por la CPU, mientras que el bus de control transfiere las señales necesarias para coordinar el funcionamiento general del sistema. En este contexto, las señales se refieren a impulsos eléctricos o variaciones de voltaje utilizados para comunicar información, órdenes o instrucciones entre los distintos componentes del sistema informático. Cada tipo de bus se encarga de transmitir señales específicas con fines determinados. Por ejemplo, las señales del bus de control pueden indicar si debe realizarse una operación de lectura o escritura, gestionar interrupciones o controlar la sincronización y temporización de las operaciones entre los componentes de la CPU, la placa base y los periféricos. Ejercicio A=5 B = 10 Ejecutar C=A+B Por medio de 1. MOV SI, A 2. MOV AX, SI 3. MOV SI, B 4. MOV BX, SI 5. ADD BX, AX 6. MOV DI, C 7. MOV DI, BX Acceso Memoria para operaciones (datos) del CPU Ax Bx Cx Dx Segmento apuntadores (dirección de memoria) del CPU CS DS Apuntadores localidades de memoria (dirección de memoria) del CPU IP SI DI ALU del CPU Segmento de código de la memoria IP -> MOX SI, A 1010 B0104 (B) (10) Esto hace que la dirección de B se guarde en SI; en otras palabras, que SI apunte a B. 4. MOV BX, SI Segmento de código de la memoria MOX SI, A A0101 MOV BX, SI A0104 ADD BX, AX A0105 MOV DI, C A0106 MOV DI, BX A0107 Apuntadores localidades y direcciones de memoria del CPU IP A0104 SI B0104 DI Acceso Memoria para operaciones (datos) del CPU Ax 101 Bx 1010 Cx Dx Esto hace que el valor que apunte SI (eso es B) lo pasé a BX. 5. ADD BX, AX Segmento de código de la memoria MOX SI, A A0101 ADD BX, AX A0105 MOV DI, C A0106 MOV DI, BX A0107 Apuntadores localidades y direcciones de memoria del CPU IP A0105 SI B0104 DI ALU del CPU 101 + 1010 Acceso Memoria para operaciones (datos) del CPU Ax 101 Bx (101 + 1010) 01111 Cx Dx Esto hace que se sume el valor de BX con el valor de AX y el resultado sea asignado a BX 6. MOV DI, C Segmento de código de la memoria MOX SI, A A0101 MOV DI, C A0106 MOV DI, BX A0107 Apuntadores localidades y direcciones de memoria del CPU IP A0106 SI B0104 DI B0102 Segmento de datos de la memoria DI -> B0102 (C) (A + B) 101 B0103 (A) (5) SI -> 1010 B0104 (B) (10) Esto hace que DI guarde la dirección de memoria de C; en otras palabras, que DI apunte a C. Pero todavía C no tiene ningún valor. 7. MOV DI, BX Segmento de código de la memoria MOX SI, A A0101 MOV DI, BX A0107 Apuntadores localidades y direcciones de memoria del CPU IP A0107 SI B0104 DI B0102 Segmento de datos de la memoria DI -> 01111 C 101 B0103 (A) (5) SI -> 1010 B0104 (B) (10) Esto hace que el valor de BX (la suma de A + B) se guarde en el lugar que está apuntando DI (en este caso C). Partes del CPU Estructura de un programa en ensamblador (directivas) Estructura de un programa en ensamblador Directivas Operadores Instrucciones Tipos de datos Constantes y variables Valor de una variable Directivas Comandos que afectan al ensamblador, y no al microprocesador. No generan código objeto. Ejemplos ○ EQU (EQUivalence) ○ DB (Define Byte) ○ SEGMENT ○ ASSUME ○ PROC (PROCedure) ○ END ○ OFFSET ○ DUP (DUPiclate) ○ INC (INCrement) Operadores Instrucciones lógicas que afectan al procesador Ejemplos ○ OFFSET ○ DUP (DUPiclate) Instrucciones aritméticas instrucciones que involucran números para su ejecución y afectan al procesador ejemplos ○ MOV (MOVe) ○ INC (INCrement) ○ DEC (DECrement) ○ ADD (ADDition) ○ SUB (SUBstract) ○ s MUL (MULTiply) e IMUL ○ DIV (DIVide) e IDIV Instrucciones lógicas instrucciones que obedecen a las tablas de verdad y afectan al procesador ejemplos ○ NOT (NOT) ○ AND (AND) ○ OR (OR) ○ XOR (eXclusive OR) ○ LOOP ○ JMP (JuMP) ○ CALL Y RET (RETurn) Tipos de datos Variables Reglas de nombramiento ○ Solo letras del idioma inglés y/o números ○ No se distingue entre mayúsculas y minúsculas ○ No empezar con números ○ Una fila por cada 8 bits en el almacenamiento de una variable en la memoria La directiva identifica el tamaño de la variable o su tipo de dato Valor de una variable El valor de una variable no debe exceder el tamaño de la variable El valor de una variable se puede asignar como: ○ decimal ○ binaria ○ hexadecimal ○ octal El valor de la variable se puede dejar incierto con un signo de ? Constante Las constantes pueden definirse con EQU o = Las constantes no usan un espacio de memoria Las constantes no deben exceder el tamaño del registro de trabajo a utilizar del CPU