Ensamblador - AYUDA URENTE!!!!!!!!!!!!!!!!

 
Vista:

AYUDA URENTE!!!!!!!!!!!!!!!!

Publicado por Micronix (1 intervención) el 28/12/2003 00:14:52
Hola a todos por favor recien estoy empesando a estudiar el lenguage ensamblador pues me encanta y mi pregunta es la siguiente ¿por que me cuesta tanto aprenderlo al lenguage? lo que mas me cuesta es el tema de memoria,segmentacion, Que alguien me guie un poco por favor se lo agradeseria siempre gracias y sigan hai!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA URENTE!!!!!!!!!!!!!!!!

Publicado por Liebesschmerz-- (25 intervenciones) el 31/12/2003 03:02:51
si es algo confuso eso.
si estudias ensamblador bajo windows, que es memoria FLAT, no tienes que preocuparte sobre los segmentos, y se hace el aprendizaje mas rapido se podria decir.

chao
Liebesschmerz--
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Te cuento y va el 1º

Publicado por Jorge (126 intervenciones) el 31/12/2003 03:38:32
Hola,

Que te cueste no es novedad, quedate tranquilo, el ASM templa los nervios, jajaja

Bueno, lo que dice Liebesschmerz-- es verdad, pero aparentemente estás estudiando sobre DOS. Te recomendaría no meterte de entrada en la construcción de un EXE. Empezá contruyendo un .COM, que te va a llevar por un camino sin tantos obstáculos.

Te explico un poco lo que es la segmentación y por qué es tanto quilombo. La historia es así:
Los primeros micros de INTEL tenían la capacidad de direccionar sólo 16 bits de memoria RAM. Me refiero a los modelos 8086, 8088, 80186 que casi siempre los conocimos bajo el nombre de PC XT. Esos 16 bits, te limitaban a manejar como máximo programas de 64 kb.
Como te imaginarás, con el tiempo esa memoria quedo muy escasa. Con la salida del modelo AT286, se buscó expandir la memoria a 1 MB. El problema surgió cuando los 16 bits de direccionamiento que usaban en los XT no les sirvieron. Como la gente de INTEL nunca fue muy previsora, tuvieron la "genial idea" de agregar 4 bits más a las direcciones de memoria, quedando 20 bits direccionables que llegaban a cubrir JUSTITO el mega de RAM. Lamentablemente, esto produjo un desbalance, puesto que los registros de datos del micro seguian siendo de 16 bits y entonces no podías direccionar toda la memoria con un registro. ¿Qué otra "genialidad" se le ocurrió? usar DOS REGISTROS de 16 bits SUPERPUESTOS!!!, de modo tal que uno de ellos estaba desplazado 4 bits a la derecha. Así surgió el término de SEGMENTO y DESPLAZAMIENTO. Gráficamente sería:

Registro 1: FEDCBA9876543210
Registro 2: XXXXFEDCBA9876543210
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Te cuento y va el 2º

Publicado por Jorge (126 intervenciones) el 31/12/2003 03:40:35
Donde las XXXX son espacios en blanco, digamos. Son para graficar el corrimiento del segmento (registro 1) del desplazamiento (Registro 2). Con estos dos registros unidos (mediante una SUMA) se forma la famosa dirección de 20 bits. Fijate que es importante dejar en CERO los 12 primeros bits del desplazamiento, para que en la suma no se altere la dirección. En informática generalmente vemos esto como que hay MUCHOS SEGMENTOS con 4 bits de DESPLAZAMIENTO. De acá podemos concluir varias cosas:
1) En un segmento mínimamente HAY 16 bytes, que se direccionan con el registro de desplazamiento. O lo que es lo mismo, la diferencia mínima entre un segmento y otro es de 16 bytes. Ésta es la interpretación estándar y es la forma en que trabajan las pseudo instrucciones SEG y OFFSET, que retornan 16 bits y 4 bits respectivamente.
2) Un programa que se maneje con el modelo de memoria segmentado no puede direccionar más de 1 MB (20 bits). Por más que tengas 512 MB de RAM.
3) No es necesario asumir que los segmentos tienen 16 bytes exclusivamente. Fijate que como la dirección final se obtiene de la suma de los registros, podemos llegar a imaginar incluso que hay 16 segmentos de 64 KB cada uno ó variar la cantidad de bits que asignamos a cada cada parte SEGMENTO/DESPLAZAMIENTO.

Como ves, todo el quilombo se debe a que la filosofía de los "genios" que fabricaron los chips es ahorrarse guita y hacer los chips lo más ajustados a sus prestaciones mínimas, para que cuando necesites mejorar un poco tu compu te tengas que comprar otra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Te cuento y va el 3º

Publicado por Jorge (126 intervenciones) el 01/01/2004 23:47:19
Después, para la siguiente versión del 286, tuvieron que aplicar otro parche porque la GATE A21 sólo ampliaba un bit. Lamentablemente ya no me acuerdo si la A21 se transformó en una especie de A22 ó si hicieron otra cosa.

Con la salida del 386, todo cambió, el registro de direcciones pasó a 32 bits y así estabamos hasta que hace poco salieron los de 64 bits, pero eso ya es otro cantar. Te podría contar también otras cosas "por el estilo" que aparecieron, pero no sé si te interesará.

Ahora, vos dirás, ¿es normal que te cueste??, jajajajaja...

Salu2!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Te cuento y va el 2º

Publicado por David Revelo (2 intervenciones) el 04/02/2005 20:10:42
hola.. parace ser que tu sabes mucho sobre el ensamblador.. me gustaria que me ayudaras a o me facilitaras algun manual bueno de este lenguaje... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar