lunes, 5 de marzo de 2012

Lenguaje Ensamblador para PC

Paul A. Carter
9 de agosto de 2007
Copyright c 2001, 2002, 2003, 2004 by Paul Carter


Traducido al español por Leonardo Rodríguez Mújica. Sus comentaros y sugerencias acerca de la traducción por favor a: lrodri@udistrital.edu.co
Este documento puede ser reproducido y distribuido totalmente (incluida esta paternidad literaria, copyright y aviso de autorización), no se puede cobrar por este documento en sí mismo, sin el consentimiento del autor.

Esto incluye una “utilización racional” de extractos como revisiones y anuncios, y trabajos derivados como traducciones.
Observe que esta restricción no está prevista para prohibir el cobro por el servicio de impresión o copia del documento
A los docentes se les recomienda usar este documento como recurso de clase; sin embargo el autor apreciaría ser notificado en este caso. 
Prefacio
 Propósito 

El propósito de este libro es dar al lector un mejor entendimiento de cómo trabajan realmente los computadores a un nivel más bajo que los lenguajes de alto nivel como Pascal. Teniendo un conocimiento profundo de cómo trabajan los computadores, el lector puede ser más productivo desarrollando software en lenguajes de alto nivel tales como C y C++. Aprender a programar en lenguaje ensamblador es una manera excelente de lograr este objetivo. Otros libros de lenguaje ensamblador aún enseñan a programar el procesador 8086 que usó el PC original en 1981. El procesador 8086 sólo soporta el modo real. En este modo, cualquier programa puede acceder a cualquier dirección de memoria o dispositivo en el computador. Este modo no es apropiado para un sistema operativo multitarea seguro. Este libro, en su lugar discute cómo programar los procesadores 80386 y posteriores en modo protegido (el modo en que corren Windows y Linux). Este modo soporta las características que los sistemas operativos modernos esperan, como memoria virtual y protección de memoria. Hay varias razones para usar el modo protegido.
  1. Es más fácil de programar en modo protegido que en el modo real del 8086 que usan los otros libros.
  2. Todos los sistemas operativos de PC se ejecutan en modo protegido.
  3. Hay disponible software libre que se ejecuta en este modos.
La carencia de libros de texto para la programación en ensamblador de PC para modo protegido es la principal razón por la cual el autor escribió este libro.
Cómo lo dicho antes, este libro hace uso de Software Libre: es decir el ensamblador NASM y el compilador de C/C++ DJGPP. Ambos se pueden descargar de Internet. El texto también discute cómo usar el código del ensamblador NASM bajo el sistema operativo Linux y con los compiladores de C/C++ de Borland y Microsoft bajo Windows. Todos los ejemplos de estas plataformas se pueden encontrar en mi sitio web: http: //www.drpaulcarter.com/pcasm. Debe descargar el código de los ejemplos, si desea ensamblar y correr los muchos ejemplos de este tutorías.
Tenga en cuenta que este libro no intenta cubrir cada aspecto de la programación en ensamblador. El autor ha intentado cubrir los tópicos más importantes que todos los programadores deberían tener.
Reconocimientos
El autor quiere agradecer a los muchos programadores alrededor del mundo que han contribuido al movimiento de Software Libre. Todos los programe y aún este libro en sí mismo fueron producidos usando software libre.
El autor desearía agradecerle especialmente a John S. Fine, Simon Tatham, Julian Hall y otros por desarrollar el ensamblador NASM ya que todos los ejemplos de este libro están basados en él; a DJ Delorie por desarrollar el  compilador usado de C/C++ DJGPP; la numerosa gente que ha contribuido al compilador GNU gcc en el cual está basado DJGPP; a Donald Knuth y otros por desarrollar los lenguajes de composición de textos TEX y LATEX2" que fueron usados para producir este libro; a Richar Stallman (fundador de la Free Software Fundation), Linus Torvalds (creador del núcleo de Linux) y a otros que han desarrollado el software que el autor ha usado para producir este trabajo.
Gracias a las siguientes personas por correcciones: