Ensamblador - Duda segmento 0x1000 y otras cosillas

 
Vista:

Duda segmento 0x1000 y otras cosillas

Publicado por David (1 intervención) el 14/12/2005 18:33:27
Buenas,

Estoy aprendiendo ASM (o eso intento) y me he encontrado en que muchos programas cargan a los registros de segmento el valor 0x1000. Este valor se usa por norma, o se puede utilizar cualquier otro segmento?

Es que estoy intentando crear un disco de arranque el cual me muestre un determinado mensaje de texto al iniciar el ordenador. Y mirando tutoriales por ahi, me he fijado que utilizan el valor 0x1000 en los segmentos de datos.

Si alguien me pudiera explicar porqué se hace eso le estaria muy agradecido. También os agradecería información sobre algun otro foro de assembler en español que este "movidito".

Asias.
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

EL PORQUE a "eso de ORG 0x100" ( o 100h )

Publicado por urko tekcnich (3 intervenciones) el 11/01/2006 01:46:18
Los primeros PC tenian registros de 16 bits . Fijate que 2 elevado a 16=65536 == 64 Kb que era el máximo de memoria que podian direcccionar. Por suerte esto ha cambiado, pero POR MOTIVOS DE COMPATIBIIDAD HACIA atras y esa estructura de programas se sigue manteniendo. TIENEN EXTENSION .COM y no .EXE

Los porgramas COM solo disponen de esos 64Kb , pero los EXE mucho más.

Actualmente se suele utilizar Assembler para hacer pequeños programas como programs residentes, rutinas para utilizar en procesos de programas de alto nivel... y cosas así, por lo general, y además son más comodos por su reducido tamaño, ( aunque yo personalmente prefiero realizar programas EXE )

A diferencia de los EXE, los COM no hacen referencias a datos o direcciones separados m´´as de 64 Kb, de manera que todos los saltos y desplazamientos son relativos a los registros de segmento ( no se cambian CS ni DS ). Cualquier direccion dentro del COM tendrá en comun el registro de segmento y con el offset se podrá saber el lugar donde está cualquier cosa en el archivo.

ORG 100h :

Los COM tienen una zona denominada PSP ( Prefijo de Segmento de Programa ) que va de 0 a 100h ( en está zona está la zona de datos ).

Como te he dicho los programas COm tienen un unico segmento.

Por eso la instruccion: ORG 100h es obligatoria en programas COM, porque se cargaran en memoria en la posicion CS:100 ( logicamente el segemento de código, CS ).

Hay excepciones en los com pero son una pequeña minoria que puede que la instruccion sea por ejemplo ORG 80h (para trabajar con ficheros)

Por eso el vector de interrupciones se dirige a la dirección 100h

En cuanto a tu programa de mostrar un mensaje de texto en el BOOT, no es fácil.

Si necesitas ayuda enviame un mail:

HAPPY CODING ;-)
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:EL PORQUE a

Publicado por scarlett (1 intervención) el 16/08/2010 01:39:45
necesito jalar de un txts los parametros para crear una figura tridimencional hasta el momentopuedo crear la figura pero ya he intentado pasar dde parametros ingresados por teclado a parametros pasados por txts y me genera errores ayuda por favor :S
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