Documento realizado por Miquel Albert Orenga y Gerard Enrique Manonellas.
En formato pdf. Contiene 126 páginas.
Índice de Contenidos:
Introducción
Objetivos
1. Arquitectura del computador
1.1. Modos de operación
1.1.1. Modo extendido de 64 bits
1.1.2. Modo heredado de 16 y 32 bits
1.1.3. El modo de gestión de sistema
1.2. El modo de 64 bits
1.2.1. Organización de la memoria
1.2.2. Registros
2. Lenguajes de programación
2.1. Entorno de trabajo
3. El lenguaje de ensamblador para la arquitectura x86-64
3.1. Estructura de un programa en ensamblador
3.2. Directivas
3.2.1. Definición de constantes
3.2.2. Definición de variables
3.2.3. Definición de otros elementos
3.3. Formato de las instrucciones
3.3.1. Etiquetas
3.4. Juego de instrucciones y modos de direccionamiento
3.4.1. Tipos de operandos de las instrucciones x86-64
3.4.2. Modos de direccionamiento
3.4.3. Tipos de instrucciones
4. Introducción al lenguaje C
4.1. Estructura de un programa en C
4.1.1. Generación de un programa ejecutable
4.2. Elementos de un programa en C
4.2.1. Directivas
4.2.2. Variables
4.2.3. Operadores
4.2.4. Control de flujo
4.2.5. Vectores
4.2.6. Apuntadores
4.2.7. Funciones
4.2.8. Funciones de E/S
5. Conceptos de programación en ensamblador y C
5.1. Acceso a datos
5.1.1. Estructuras de datos
5.1.2. Gestión de la pila
5.2. Operaciones aritméticas
5.3. Control de flujo
5.3.1. Estructura if
5.3.2. Estructura if-else
5.3.3. Estructura while
5.3.4. Estructura do-while
5.3.5. Estructura for
5.4. Subrutinas y paso de parámetros
5.4.1. Definición de subrutinas en ensamblador
5.4.2. Llamada y retorno de subrutina
5.4.3. Paso de parámetros a la subrutina y retorno de resultados
5.4.4. Llamadas a subrutinas y paso de parámetros desde C
5.5. Entrada/salida
5.5.1. E/S programada
5.6. Controlar la consola
5.7. Funciones del sistema operativo (system calls)
5.7.1. Lectura de una cadena de caracteres desde el teclado
5.7.2. Escritura de una cadena de caracteres por pantalla
5.7.3. Retorno al sistema operativo (exit)
6. Anexo: manual básico del juego de instrucciones
6.1. ADC: suma aritmética con bit de transporte
6.2. ADD: suma aritmética
6.3. AND: Y lógica
6.4. CALL: llamada a subrutina
6.5. CMP: comparación aritmética
6.6. DEC: decrementa el operando
6.7. DIV: división entera sin signo
6.8. IDIV: división entera con signo
6.9. IMUL: multiplicación entera con signo
6.9.1. IMUL fuente: un operando explícito
6.9.2. IMUL destino, fuente: dos operandos explícitos
6.10. IN: lectura de un puerto de entrada/salida
6.11. INC: incrementa el operando
6.12. INT: llamada a una interrupción software
6.13. IRET: retorno de interrupción
6.14. Jxx: salto condicional
6.15. JMP: salto incondicional
6.16. LOOP: bucle hasta RCX=0
6.17. MOV: transferir un dato
6.18. MUL: multiplicación entera sin signo
6.19. NEG: negación aritmética en complemento a 2
6.20. NOT: negación lógica (negación en complemento a 1)
6.21. OUT: escritura en un puerto de entrada/salida
6.22. OR: o lógica
6.23. POP: extraer el valor de la cima de la pila
6.24. PUSH: introducir un valor en la pila
6.25. RET: retorno de subrutina
6.26. ROL: rotación a la izquierda
6.27. ROR: rotación a la derecha
6.28. SAL: desplazamiento aritmético (o lógico) a la izquierda
6.29. SAR: desplazamiento aritmético a la derecha
6.30. SBB: resta con transporte (borrow)
6.31. SHL: desplazamiento lógico a la izquierda
6.32. SHR: desplazamiento lógico a la derecha
6.33. SUB: resta sin transporte
6.34. TEST: comparación lógica
6.35. XCHG: intercambio de operandos
6.36. XOR: o exclusiva