Detalle del libro
Ver Índice
Introducción
Ensamblador y procesadores
Ensamblador y sistemas
Objetivos de este libro
1. Herramientas necesarias
Editores
DOS
Windows
Linux
Ensambladores
MASM
NASM
Otros ensambladores
RAD y ensamblador
Enlazadores
Depuradores
Otras herramientas
Resumen
2. Nuestro primer programa
Esqueleto de un programa mínimo
Programas COM en DOS
El código
Ensamblado y enlace
Programas EXE en DOS
Versión MASM
Versión NASM
Ensamblado y enlace
Programas Linux
El código
Ensamblado y enlace
Programas Windows
El código
Ensamblado y enlace
Resumen
3. Bases de numeración
Sistemas de numeración informáticos
Cálculo del valor de una cifra
Conversión entre bases de numeración
Conversión a la base decimal desde cualquier base
Conversión a cualquier base desde la base decimal
Operar con números binarios
Bits, nibbles y bytes
Números con signo
Operar con números hexadecimales
De binario a hexadecimal y viceversa
Números negativos en hexadecimal
Números en base ocho
Identificación de la base de un número
Resumen
4. Ejecución de un programa
Formatos de archivo ejecutable
Ejecutables en DOS
Ejecutables en Linux
Ejecutables en Windows
Detalles sobre formatos de archivo
Preparación del programa por parte del sistema
Recuperación de la cabecera del ejecutable
Asignación de bloques de memoria
Creación de un proceso
Configuración de registros
Segmentos de código, datos y pila
El puntero de instrucción
Base y puntero de la pila
Acceso a los datos
Arquitectura del procesador
Esquema de bloques
Resumen
5. Registros y memoria
Unidades de información
Palabras y dobles palabras
Múltiplos del byte
Capacidad de direccionamiento
Registros de segmento
Párrafos y segmentos
Modelos de memoria
Registros de uso general
Asignación de valores
Valores inmediatos
Asignación entre registros
Lectura de datos de la memoria
Escritura de datos en la memoria
Definición de datos en el programa
Campos simples
Conjuntos de campos
Referencias al segmento de datos
Un ejemplo
Resumen
6. Depuración
Puesta en marcha del depurador
Nombres de archivos DOS
Apertura desde DEBUG
Análisis del programa
Direcciones, instrucciones y código máquina
Traducción de etiquetas
Examen del contenido de datos
Estado inicial de los registros
Ejecución paso a paso
Depuración de rutinas y BIOS
Ejecución hasta un cierto punto
Alteración del curso del programa
Modificar el contenido de un registro
Cambiar los datos en memoria
Ensamblar nuevas instrucciones
Otras posibilidades de DEBUG
Resumen
7. Operaciones aritméticas
Suma de dos números
Desbordamiento y acarreo
Suma con acarreo
Sumas de 32 bits con registros de 16
Restar un número de otro
Multiplicar dos números
Dividir un número entre otro
Incrementos y reducciones
Aritmética BCD
Números BCD empaquetados y sin empaquetar
Suma de números BCD
Otras operaciones con números BCD
Negativos, palabras y dobles palabras
Uso de la unidad de punto flotante
Registros de la FPU
Tipos de datos
Introducción de datos en la FPU
Ejecución de operaciones
Recuperación de datos de la FPU
Un sencillo ejemplo
Resumen
8. Condicionales
El registro de indicadores
Obtención y restauración del registro de indicadores
Comparación de valores
Igualdad y desigualdad
Menor y mayor que
Instrucciones de manipulación de bits
Activación de bits individuales
Desactivación de bits individuales
Otras operaciones lógicas
Comprobación de bits individuales
Rotación y desplazamiento de bits
Resumen
9. Bucles
Bucles con saltos condicionales
Instrucciones para implementar bucles
Casos concretos
Bucles con condición compuesta
Bucles anidados
Transferencia de datos
Resumen
10. Estructuración del código
Procedimientos
Llamada a un procedimiento
Retorno de un procedimiento
Salvaguarda de los registros
Transferencia de parámetros
Una rutina de espera
Instrucciones de E/S
Comunicación con el reloj del sistema
Código de la rutina
Un ejemplo de uso
Macros
Macros simples
Expansión de la macro
Macros complejas
Archivos de macros y procedimientos
Resumen
11. Manipulación de secuencias de bytes
Orígenes, destinos e incrementos
Recuperación y almacenamiento de datos
Conversión de binario a decimal
Almacenamiento de valores
Repetición automática de la operación
Transferencia de una secuencia de datos
Búsqueda de un dato
Comparación de cadenas
Resumen
12. La BIOS
¿Qué es la BIOS?
El mecanismo de interrupciones
El área de parámetros de la BIOS
Acceso a variables de la BIOS
Servicios de la BIOS
Acceso al adaptador de vídeo
Lectura del teclado
Configuración del sistema
Memoria disponible
Acceso a unidades de disco
Puertos serie y paralelo
Fecha y hora
Interrupciones hardware
Excepciones
Manipulación de los vectores de interrupción
Resumen
13. Servicios de vídeo
Detección del tipo de adaptador
Modos de visualización
Obtener y modificar el modo de visualización
Servicios para trabajar con texto
Posición y aspecto del cu
Si usted conoce algo de programación, al contemplar este libro y su temática, probablemente se preguntará qué sentido tiene dedicar nuestro tiempo a aprender a programar en un lenguaje, como es el ensamblador, de tan bajo nivel, teniendo hoy a nuestra disposición sofisticadas herramientas de desarrollo rápido que, en minutos, son capaces de generar las aplicaciones más complejas que podamos imaginar.
Una de las respuestas a esta pregunta sería que, programando en ensamblador, nos convertiremos prácticamente en artesanos del desarrollo de programas, ocupándonos de todas las tareas en las que deseemos intervenir personalmente. El tiempo empleado para crear cualquier programa será superior pero, a cambio, obtendremos programas muchísimo más pequeños e infinitamente más rápidos que los que podamos crear con cualquier lenguaje de alto nivel.
La finalidad de este libro es, entre otras, la de servir como guía de aprendizaje para todos aquellos programadores que desean introducirse en el desarrollo a bajo nivel, utilizando el lenguaje ensamblador de los procesadores x86 en la plataforma PC y con los sistemas operativos DOS, Windows y Linux. Para ello se facilitará toda la información, teórica y práctica, llevándole desde un nivel de inicio hasta un nivel medio. El objetivo es hacer el aprendizaje de este lenguaje lo más simple posible, sin entrar en todos los detalles de bajo nivel y todas las posibilidades que, pudiéndose encontrar en materiales de referencia, no resultan totalmente imprescindibles en un principio.
Este libro incluye un CD-ROM donde encontrará todos los recursos necesarios: ensambladores, enlazadores y editores, que serán usados a lo largo del libro en los tres sistemas citados, así como las imágenes utilizadas por el autor en los ejemplos desarrollados a lo largo del libro.