PDF de programación - Ejemplos de Modo Protegido - Programación en Assembler

<<>>
Imágen de pdf Ejemplos de Modo Protegido - Programación en Assembler

Ejemplos de Modo Protegido - Programación en Assemblergráfica de visualizaciones

Publicado el 14 de Enero del 2017
2.185 visualizaciones desde el 14 de Enero del 2017
275,1 KB
91 paginas
EEJJEEMMPPLLOOSS DDEE

MMOODDOO PPRROOTTEEGGIIDDOO

PPrrooggrraammaacciióónn eenn AAsssseemmbblleerr

MMaarriiaannoo CCeerrddeeiirroo

mm..cceerrddeeiirroo@@ssooiixx..ccoomm..aarr



11eerraa EEddiicciióónn

OOccttuubbrree ddee 22000044



BBuueennooss AAiirreess

AArrggeennttiinnaa



hhttttpp::////wwwwww..ssooiixx..ccoomm..aarr//lliinnkkss//mmppbbyyeexxaammpplleess..hhttmmll





Cerdeiro, Mariano
Ejemplos de modo protegido: programación en assembler. -1a ed. - Buenos Aires: el autor, 2004.
Internet; 91 p.

ISBN 987-43-8245-7

1. Programación-Computación I. Título
CDD 005



Todos los derechos reservados.
Esta publicación no puede ser reproducida, archivada o transmitida en forma total o parcial, sea
por medios electrónicos, mecánicos, fotocopiados o grabados, sin el permiso previo del autor.




ISBN 987-43-8245-7





A mis profesores Lic. Mirta Bindstein, Ing. Alejandro Furfaro e Ing. Marcelo Doallo.



Agradezco a Manuela Cerdeiro, mi hermana, quien tradujo el documento al español.

; Introducción

; ej00.asm - programa hola mundo

; ej01.asm - entrar y salir a modo protegido

; ej02.asm - programa que guarda el BIOS en un archivo

; ej03.asm - programa con interrupciones

; ej04.asm - excepciones en modo protegido

; ej05.asm - programa multitarea

; ej06.asm - salto de niveles de privilegio en modo protegido

; ej07.asm - modo protegido 32 bits y pila expand down

; ej08.asm - paginación

7

9

13

17

25

33

49

61

73

79



; Introducción
;
; Este libro tiene como finalidad cubrir la gran brecha existente entre
; los libros y manuales de modo protegido y lograr correr un programa
; sin que el mismo bootee la PC por algún error. Para ello se explica la
; teoría necesaria para entender el código a continuación.
;
; Cabe aclarar que este libro NO es de teoría de modo protegido, por
; ello se recomienda llevar el estudio teórico con algún otro libro del
; tema. Personalmente recomiendo los manuales de Intel, que el día de la
; fecha se encuentran en:
;
; http://developer.intel.com/design/Pentium4/documentation.htm#man
;
; De este link se pueden bajar los manuales del Pentium 4. Los
; conocimientos sobre modo protegido se pueden obtener de los capítulos
; 2, 3, 4, 5 y 6 del IA-32 Intel Architecture Software Developer's
; Manual Volume 3: System Programming Guide.
;
; Para programar en modo protegido se puede utilizar cualquier editor de
; texto, como vi, notepad, edit u otro. Para compilar se utiliza el nasm
; y para correr los programas, el bochs, con el freedos cargado en una
; imagen de disquete, o booteando la PC en modo real, ya sea mediante un
; disquete o booteando en modo real, si el sistema operativo lo permite.
;
; El nasm es un compilador de assembler, se puede bajar de:
;
; http://nasm.sourceforge.net/
;
; El bochs es una PC virtual, y es una herramienta IMPRESCINDIBLE para
; poder debugear el código de modo protegido.
;
; http://bochs.sourceforge.net/
;
; Y el Free DOS:
;
; http://www.freedos.org/
;
; La instalación de los programas dependerá del sistema operativo, del
; freedos sólo es necesario bajar la imagen e indicar en el archivo de
; configuración del bochs dónde encontrarla.
;
; Por último es recomendable tener a disposición un manual de
; interrupciones y de hard. Para tal fin existe la página de Ralf Brown:
;
; http://www.ctyme.com/rbrown.htm
;
; El libro está formado por nueve ejemplos de los siguientes temas:
;
;
;
;
;
;
;
;
;
;
; Personalmente espero que el libro les sea útil, y que me hagan llegar
; cualquier comentario o duda. A su vez pido disculpas por cualquier
; error.

- ej00.asm tutorial de DOS
- ej01.asm entrar y salir a modo protegido
- ej02.asm utilizando un segmento de datos en modo protegido
- ej03.asm interrupciones en modo protegido
- ej04.asm excepciones en modo protegido
- ej05.asm multitarea en modo protegido
- ej06.asm salto de niveles de privilegio en modo protegido
- ej07.asm modo protegido 32 bits y pila expand down
- ej08.asm paginación en modo protegido





; ej00.asm - programa hola mundo
;
; Protected Mode by Examples – 1era Edición - Octubre 2004
;
; Autor:
; Mariano Cerdeiro
; <[email protected]>
; http://www.soix.com.ar/links/mpbyexamples.html
;
; compilar: nasm ej00.asm -o ej00.com
;
; El primer ejercicio tiene por finalidad mostrar la estructura básica
; de un programa en nasm y el modo en que es cargado en memoria por el
; DOS. También se explican algunos conceptos básicos, como la
; segmentación en modo real y las diferencias entre un segmento de 16 y
; uno de 32 bits.
;
; En modo real (el modo en que se enciende la CPU y en el que se
; mantiene cuando corre el sistema operativo DOS) se accede a la memoria
; mediante segmentos y desplazamientos. El desplazamiento (u offset) es
; un valor de 16 bits que se suma a la base del segmento para conocer la
; memoria lineal y física (las cuales, en modo real, coinciden).
;
; Siempre que se direcciona memoria, se hace mediante un segmento y un
; offset. Para conocer cuál es la posición física de la memoria se deben
; sumar la base del segmento y el offset. En modo real, la base de un
; segmento es 16 veces su valor.
;
; Por ejemplo: el segmento 0040:0037, al escribirlo de esta forma, se
; hace referencia al segmento:offset (ambos en hexadecimal) que apunta a
; la dirección de memoria 00437h.
;
; Por lo cual, para acceder a cualquier posición de memoria, existen
; 4096 formas distintas de hacerlo ya que, por ejemplo, 4000:FFFF
; será físicamente la misma posición que 4001:FFEF (físicamente ambas
; direcciones serán 4FFFF, o sea, el byte número 327679 de la memoria).
;
;
; El DOS es quien carga los programas .com, que son los únicos que se
; utilizan en este libro. A diferencia de los archivos .exe, que poseen
; un header con información para el sistema, los archivos .com son
; directamente copiados a memoria y ejecutados, pero existen ciertas
; reglas a conocer:
;
;
;
;
;
;
;
;
; EL PSP almacena información de la aplicación (en Internet se puede
; averiguar cómo está conformado). Sin embargo, lo más importante a
; saber es que en el offset 80h se encuentra un byte que indica la
; cantidad de caracteres que contiene la línea de comandos, y a partir
; del offset 81h se encuentra la línea de comandos.
;
; Al cargar el .com se inicializan los registros ax,bx,cx,dx,bp,si,di en
; 0, el sp en FFFCh y cs,ds,es,ss en el segmento de memoria libre, y el
; ip en 100. Por lo que se puede observar que el código y los datos se
; superponen en el mismo segmento y éstos con la PILA. Por eso se debe

- cuando se ejecuta un archivo .com, el mismo se carga en memoria
a partir del primer segmento libre de memoria que tenga
disponible el DOS.
- se le asigna toda la memoria hasta los 640 Kbytes.
- se carga el contenido del del archivo .com a partir del offset
100h, quedando así 256 bytes para el sistema, los cuales se
denominan PSP (Program Segment Prefix).





; tener especial CUIDADO cuando se utiliza mucha pila, ya que una
; excesiva cantidad de pushs podría sobrescribir el código o los datos
; del programa.
;
; Lo primero que se escribe al comenzar un programa es la directiva
; use16 o use32. Ésta indica para qué tipo de segmento debe ser
; compilado el programa (para un segmento de 16 o de 32 bits).
;
use16
;
;
; Segmentos de 16 y de 32 bits.
;
; Que un segmento sea de 16 o de 32 bits, indica qué tipo de registros y
; direccionamiento se utilizan en forma predeterminada, de modo que las
; instrucciones que utilizan registros y direccionamientos
; predeterminados ocupan menos espacio. Veamos un ejemplo:
;
; 89 C8 mov ax,cx
;
; Se puede observar que la instrucción se codifica como 89 C8. Se trata
; de una instrucción que ocupa 2 bytes. Haciendo lo mismo con eax y ecx
; se obtiene:
;
; 66 89 C8 mov eax,ecx
;
; Aquí, al utilizar eax y ecx, se ocupa un byte más, el 66. Éste
funciona
; como prefijo, y su función es indicar al procesador que la siguiente
; instrucción se debe decodificar utilizando el tipo de registros no
; predeterminado. De esto que se deduce correctamente que las
; instrucciones anteriores han sido compiladas para 16 bits. Si, por el
; contrario, se compilan estas dos mismas instrucciones en código 32
; bits, se obtiene:
;
; 89 C8 mov eax,ecx
; 66 89 C8 mov ax,cx
;
; Se puede ver que la instrucción más corta es la de 32 bits. 66h no es
; el único prefijo que existe, también existe el 67h, que cumple una
; función similar, pero no con el tamaño del registro, sino con el tipo
; de direccionamiento (si es de 16 o de 32 bits). También existen otros
; prefijos, pero no están relacionados con el tipo de segmento.
;
; Por lo que una misma instrucción se puede codificar de dos formas
; distintas, según se trate de un segmento de 16 o de uno de 32 bits (se
; le debe indicar al procesador de qué tipo de segmento de código se
; trata). Para tal fin existe un bit en la definición del segmento. Sin
; embargo, en modo real, los segmentos pueden ser únicamente de 16 bits,
; por lo que se dejarán para más adelante los segmentos de 32 bits y se
; utilizarán, hasta el ejemplo 6 inclusive, segmentos de 16 bits.
;
org 100h
;
; Debido a que el compilador desconoce que los archivos .com son
; cargados y ejecutados a partir del offset 100h, se debe indicar el
; offset inicial. De esta forma, al referirse a la cadena mensaje (leer
; líneas más delante), mediante el puntero
  • Links de descarga
http://lwp-l.com/pdf206

Comentarios de: Ejemplos de Modo Protegido - Programación en Assembler (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad