	=======DESARROLLANDO APLICACIONES EN ASM PARA MENUET OS========

por ssh (ssh04@linuxmail.org)

Que pex?,

   Este es mi primer texto para RMX asi que no me juzguen mal, en las siguientes lineas
tratare de explicar como desarrollar aplicaciones en ensamblador a 32 bits en el pequeo e
insipiente sistema operativo Menuet. Pero, vamos por partes asi que primero lo primero:

QUE ES MENUET OS?
   Es un pequeo sistema operativo que cabe en un Floppy y esta hecho totalmente en ASM a 32
bits, esto quiere decir que es muy rapido y por ende pequeo (pero poderoso), tiene interfaz grafica
muy censilla y por lo mientras solo cuenta con un editor de textos, grafica del CPU, etc.

    Lo mas interesante de este OS es que esta liberado bajo la GPL (www.gnu.org), por lo
tanto podemos ver como esta escrito y modificarlo etc...La cuestion es que es una buena
fuente para poder aprender a programar en ASM a 32 bits, y despues aplicar esos conocimientos
para cosas mas provechozas >:). La pagina oficial de este interesante OS es www.menueos.org
ahi podras ver screenshots, bajarlo, leer el Faq, ETC.

INSTALANDO MENUETOS...

    Esto es lo mas pelada...=), solo hay que bajarse un programita que se llama MSETUP.EXE,
y correrlo bajo win con un inche floppy en blanco cuando termine de hacer lo ke tiene ke
hacer solo reinicias tu PCra y ya  tendras una poderosa interfaz grafica (jejej).

    Para instalar bajo *ix lo que tienes ke hacer es poner lo siguiente en una consola;

dd if=MSETUP.EXE of=mfloppy.img ibs=1000 obs=1000 skip=20

Despues de esto tendras la imagen del menuet en el archivo mfloppy.img y lo ke tienes ke
hcaer es solo volcar esa imagen a un floppy asi:

dd if=mfloppy.img of=/dev/fd0

y aystubo..

LO chingon de este OS es que no tienes ke modificar nada tu HD ya ke todo lo hace en la RAm
asi que no tienes ke particionar ni hacer nada...


==================UNA INTRO AL ENSAMBLADOR A 32 BITS=========================

   Esta es una inche traduccion chafa a mi estilo de la documentacion que trae el menuet
ta va a servir bien si no sabes ingles o si no entiendes bien los terminos, Bueno empesemos:

QUICK INTRODUCTION TO ASSEMBLY PROGRAMMING - 0.02


   El ensamblador tiene un chingo de comandos que realmente no nesecitamos para empesar a
crear nuestras propias aplicaciones.

   Hay seis registros que personalmente este wey (villie el que hizo menuet) los considera
variables, esto son: eax, ebx, ecx, edx, esi, edi.

Cada uno de esto registro pueden almacenar numeros de 32 bits.

Para almacenar un numero en un registro se hace asi:

   mov  eax,10          ; el decimal 10 almacenamos en eax
   mov  ebx,2000000     ; desimal 2000000 a ebx
   mov  ecx,0           ; cero a ecx
   mov  edx,11b         ; binario 11 a edx - en decimal es 3
   mov  esi,0xFF        ; hexadesimal FF a esi - 255 en decimal
   mov  edi,ebx         ; y podemos asignar el valor de una variable a otra asi...

Como ya han de ver notado, podemos poner comantarios despues del ";"

Tambien puedes sumar y restar asi:

   add  eax,ebx
   add  esi,eax
   add  eax,100

   sub  ecx,edx
   sub  edx,50
   sub  edi,0xF


   Tambien la multiplicacion y la divicion la puedes hacer, cheka los comandos mul, div,
imul, idiv en el archivo CMD.TXT de tu floppy (en ingles).

Los brincos (jumps) incondicionales se hacen esi:

   jmp  has_esto

   ; Algo de codigo

has_esto:     ; Las etiquetas se reconocen con un ':' -comentario

   ; Continua aqui


Para comparar los registros entre si se hace esto:

; Primero comparamos con 'cmp'

   cmp  eax,ebx

; Ahora chekamos el resultado asi:

   jb   EAX_ES_MENOR_EBX

   ; or

   jg   EAX_ES_MAYOR_QUE_EBX

   ; or

   je   EAX_ES_IGUAL_A_EBX

   ; or

   jne  EAX_NO_ES_IGUAL_A_EBX


; Ahora definimos las inches etiketas:

EAX_ES_MENOR_EBX:

   ; Has Algo

EAX_ES_MAYOR_QUE_EBX:

   ; Has Algo

Y asi.. continua...

Ok, ya tenemos las funciones logicas basicas:

  - Almacenar Valores
  - Modificar Valores

  - Saltos Incondicionales
  - Saltos Condicionales


Los numeros puedes ser aadidos al Codigo asi:

  db 0,1,2         ; Aadir bytes 0,1,2
  dw 0,300,65000   ; Aadir words 0,300,65000
  dd 1000000       ; aadir un doubleword 1000000

  ; Una Cadena

  db 'HELLO RAZA MEXICANA !' ; Aadir valores ascii  de la cadena: HELLO RAZA MEXICANA !

En Menuet las funciones de sistema son llamadas con el comando int 0x40 .

Por ejemplo, poner un boton en una ventana:


   mov  eax,8             ; Funcion que define y dibuja un boton

   mov  ebx,100*65536+10  ; Para la coordinada x: empiesa en 100 y tendra un tamao de 10
   mov  ecx,50*65536+8    ; Para la coordinada y: empiesa en 50 y tendra un tamao de 8
   mov  edx,10            ; id. Este numero identifica al boton cuando es oprimido.
   mov  esi,0x000099      ; color ROJO,VERDE,AZUL. Este es AZUL

   int  0x40              ; Hacemos la llamada del sistema, y ya tenemos un boton ;-)


Pelada no?

Ahora nuestra primer aplicacion, para poder compilarla solo tienes que irte a
menu->programing->fasm y ahi poner el archivo ASM y el archivo de SALIDA y ya...

de hecho es la misma que viene con el menuet solo que esta esta comentada en espaol
pa que la mayoria le entienda, En el archivo Ejemplo.ASM

Ya con esto ya puedes empesar a hacer tus propios pininos... yo por lo mientras estoy haciendo una pekea calculadora
que haga las cuatro operaciones basicas... ya cuando este la primera version se las mando...

cualquier comentario mandarlo a mbarajas04@icqmail.com
links:
http://gulbcs.linuxmexico.org <--- soy el presidente =)
http://www.linuxpreview.org <--- soy moderador =)
http://www.menuetos.org <--- fuentes de menuetos
#linuxmexico @ irc.red-latina.org <-- soy succesor
#linuxpreview @ irc.linux.org <-- soy founder
nicks: ssh,SuSE_64, barajas
