Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: S3kh en 18 Julio 2011, 00:43 am



Título: Duda sobre modo :P
Publicado por: S3kh en 18 Julio 2011, 00:43 am
Tengo una duda, no logro entender esto:
 Yo para usar ASM en WinXP, SI O SI tengo que usar ASM de 32bits (eso de modo protegido) sin interrupciones y eso? O puedo usar ASM 16bits en modo real?
 En caso de poder usar 16bits, se pueden crear con MASM? O tengo que usar otro?
Leí, y me bajé el TASM jajaj, es viejo pero bueno :P estoy intentando aprender :P


Título: Re: Duda sobre modo :P
Publicado por: Eternal Idol en 18 Julio 2011, 12:23 pm
Los S.O.s modernos trabajan en modo protegido (32 bits) y long (64 bits); no en modo real.


Título: Re: Duda sobre modo :P
Publicado por: S3kh en 18 Julio 2011, 14:40 pm
Es decir que no puedo usar interrupciones y demás?
Porque juraría que en el debug puedo usar interrupciones y los programas funcionan. O es por el hecho de que algunas son interrupciones del S.O y otras de la BIOS y sólamente no se puede acceder a las últimas?


Título: Re: Duda sobre modo :P
Publicado por: _Enko en 18 Julio 2011, 14:46 pm
En WinXp32, el modo real está emulado. Cuando ejecutas un programa de 16 se esta ejecutando sobre un especie de emulador.
En Win7 de 64 no. Y en Win7 de 32 creo que tampoco, tengo la duda.

La solucion mas facil, es usar DosBox para correr los programas de 16 bit.

Aunque claro, no le veo la razon de estar aprendiendo con  Tasm16, Masm16 etc...Al fin y al cabo, estamos en el 2011.


Título: Re: Duda sobre modo :P
Publicado por: S3kh en 18 Julio 2011, 16:52 pm
Claro, pero es que me interesa conocerlo. Digamos, ASM 32bits, con las APIs y demás se me hace mas sencillo. Digamos, veo un codigo en FASM y lo puedo entender (y eso que estoy aprendiendo ASM). O sea, me interesa, y tengo curiosidad.
 Si, tenía entendido eso de que el subsistema de 16b es virtual y demás.Pero, yo por ejemplo con el debug puedo usar interrupciones y demás. Tengo entendido que es el subsitema de 16bits. Esto es nada mas por experimentar. Digamos, aprender ASM de 32bits me resulta muuucho mas sencillo, pero bueno :P


Título: Re: Duda sobre modo :P
Publicado por: _Enko en 18 Julio 2011, 17:13 pm
Es que hay una cosa que estas ignorando creo...

asm 32 bit no es invoke MessageBoxA, [hwnd], szMsg, szMsg, MB_ALERT


El modo protegido (32 bit) es mucho mas completo que el real (16bit).
Lo unico que no puedes hacer en 32bit es ejecutar interrupciones de la Bios porque la BIOS funciona en modo real.

Lo que ocurre, es que si programas para Windows terminas usando la WinApi y el codigo no es mucho mas distinto de lo que se ve en C.


Si usas Debug.exe en WinXP estas usando un emulador de DOS.
Para que realmente puedas comprar ambas modos, tendrias que  hacerlo en una maquina virtual con tu propio SO, de lo contrario son llamadas a la winapi.

Basicamente, asm 32bit sobre windows, es como si fueras a un tenedor libre, pero solo te dejan comer ensalada de pepino, cebolla y tomate.



Título: Re: Duda sobre modo :P
Publicado por: S3kh en 19 Julio 2011, 15:23 pm
Ah ahora entendí bien n.n gracias a todos n.n ahora a seguir leyendo :) muchísimas gracias :)


Título: Re: Duda sobre modo :P
Publicado por: _Enko en 19 Julio 2011, 15:46 pm
Si vas a leer algo, y puedes leer en ingles:

http://www.intel.com/products/processor/manuals/
Volume 1: Basic Architecture
Volume 3A: System Programming Guide, Part 1

y amd:
http://developer.amd.com/documentation/guides/pages/default.aspx#developer_guides
Manual Volume 2: System Programming   
Manual Volume 1: Application Programming

saludos.