Duda sobre modo :P

Iniciado por S3kh, 18 Julio 2011, 00:43 AM

0 Miembros y 1 Visitante están viendo este tema.

S3kh

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

Eternal Idol

Los S.O.s modernos trabajan en modo protegido (32 bits) y long (64 bits); no en modo real.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

S3kh

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?

_Enko

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.

S3kh

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

_Enko

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.


S3kh

Ah ahora entendí bien n.n gracias a todos n.n ahora a seguir leyendo :) muchísimas gracias :)

_Enko

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.