Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: S3kh en 30 Enero 2011, 20:57 pm



Título: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: S3kh en 30 Enero 2011, 20:57 pm
 Hola, que tal. Bueno, yo hace un bueeeen tiempo que vengo ojeando esta comunidad, y intenté registrarme hace tiempo con mi otro mail, y no me llegó nunca el correo de confirmación :P Con mail nuevo, estreno cuenta y dudas =)

 Estoy leyendo muuuchos manuales, tutoriales, FAQs, para esclarecer varios conceptos.
1-) Qué es una pila? No logro entender qué es.
2-) Registros de segmentos. Tengo esta explicacion sacada de una WEB.
Un registro de segmento se utiliza para alinear en un limite de párrafo o dicho de otra forma codifica la dirección de inicio de cada segmento y su dirección en un registro de segmento supone cuatro bits 0 a su derecha.
Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son:
    * Registro CS
    * Registro DS
    * Registro SS
    * Registro ES
    * Registro FS y GS

En el debug, me aparece por ejemplo
151D:0100, 151D es el segmento y 0100 la dirección? Ahora, no entiendo la explicación, que quiere decir "alinear en un límite de párrafo" y no entiendo la utilidad del registro de segmento :S

3-) Un Desplazamiento es.....? De lo poco que entendí, es que por ejemplo, en 151D:0100 el desplazamiento es 0100 :\ Y seguro debe estar mal.

4-) Qué es un segmento de código?

Espero puedan ayudarme
Un abrazo, atte.


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: danielo- en 31 Enero 2011, 09:52 am
Primero, para iniciarte en ensamblador, es necesario olvidarte un poco de lo que es el lenguaje de alto nivel, son muy poco parecidos a estos.

Bueno, pues cosas básicas te explicare:
Para saber que es una pila, leete esto: http://es.wikipedia.org/wiki/Pila_(inform%C3%A1tica)

Y ahora, para que es utilizado esto en asm? pues es utilizado como un elemento más para realizar tareas y tambien sirven para enviar parametros a una subrutina, para salvar las direcciones de las instrucciones realizadas cuando se llama a una subrutina, para salvar los valores de los registros al utilizarlos en una macro... en fin

En ensamblado existen segmentos básicos que se necesitan, entre estos segmentos se encuentra el segmento de codigo o cs, en este segmento es donde se desarrollan las operaciones que se desean realizar, existe el segmento de datos o ds, que sirve para inicializar los datos a utilizar.
Todo programa en ensamblador necesita cuando menos estos dos segmentos.

Ahora en lenguaje ensamblador se utilizan registros para la realizacion de las operaciones, estos registro son los llamados
ax,bx,cx,dx

y bueno, hay mucho que explicar, pero espero haberte respondido a algunas preguntas

aqui te dejo la pagina que utilice cuando curse la materia, esta muy buena para aprender asm desde 0
http://www.itescam.edu.mx/principal/webalumnos/sylabus/asignatura.php?clave_asig=SCM-0420&carrera=ISC0405001&id_d=16


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: S3kh en 31 Enero 2011, 17:19 pm
 Dudas aclaradas, gracias. Lo explicaste de forma simple, ya pude entender todo. Pude seguir leyendo sin problemas todo.

Te agradezco la ayuda ENORMEMENTE.

Un abrazo y suerte.



Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: danielo- en 31 Enero 2011, 20:09 pm
=) de nada, para eso estamos aqui =)


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: S3kh en 1 Febrero 2011, 18:30 pm
 Disculpá que moleste denuevo, seguí avanzando en el tutorial, y me EMBOLÉ TOTALMENTE con la "pila", leí en Wikipedia, pero no logro comprender, para que guardo yo algo en la pila? Cuál es la utilidad?

Desde ya, gracias :)


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: Garfield07 en 1 Febrero 2011, 19:23 pm
La de guardar datos. Con 6 "variables" no tienes para mucho sabes?
Vale, tambien sive para pasarle args a una funcion...
1. Meto en la pila "hola"
2. Meto el EIP (en que parte esta el prog) en la pila
3. Llamo a printf
4. Printf lee "Hola" de la pila
5. Printf la pone en la consola
6. Printf vuelve al main con la direccion metida antes en la pila

Espero que lo entiendas! Recuerda que lo que antes metas después sale. Es como una pila de libros: no puedo cojer el de abajo, solo el de arriba...


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: danielo- en 1 Febrero 2011, 21:16 pm
bueno, la pila es una estructura de datos, que pues, como su nombre lo dice, sirve para "apilar datos", esto es, imaginate que tienes una pila de libros, un libro sobre otro, entonces, cuando quieras tomar un libro de tu pila de libros, no podras tomar el de abajo, sino, el que esta más arriba, en programación, suponiendo que haz metido tres caracteres a una pila, a, b, c cuando quieras acceder a estos datos solo podras tomar la  c, y luego la b, y por último la c.

Una pila tiene muchas utilidades en programación, uno de sus usos más conocidos es en la resolución de expresiones algebraícas que utilizan paréntesis, y bueno, un sinfin de utilidades...

Ahora en asm para que nos sirve?
Pues conforme vayas leyendo te darás cuenta que asm es un lenguaje estructurado y que se ayuda de "subrutinas" o "procedimientos", estos procedimientos pueden estar almacenados en archivos diferentes al codigo que se esta escribiendo, y nos sirve para el desarrollo de tareas específicas, estás tareas muchas veces necesitan de parámetros (son muy parecidos a los parametros de alto nivel) y para enviárselos se hace uso de una pila, porque una pila?
Bueno, porque el procesador que se maneja, en mi caso el intel tiene definida una pila y es la única estructura de datos que se maneja.

...y esto es solo una de las utilidades, realmente el procesador todo el tiempo esta utilizando esta pila, para almacenar direcciones de memoria  sería otro ejemplo de su uso


Título: Re: Dudas de principiantes, qué es: Pila, registro de segmento y mas :)
Publicado por: S3kh en 4 Febrero 2011, 20:56 pm
 Ahhh me quedé sin teclado, disculpen que no respondí. Gracias a ambos. Ya estoy haciendo programas simples :)
 Un abrazo! y gracias neuvamente :)