Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
AL GUIEN QUE HAY TRABAJDO CON ESTO ME PODRIA DAR LAS NOCIONEW INICIALES PARA PROGRAMAR UN JUEGO SIMPLE EN ASSEMBLER
Hola soy nuevo, me llamo Ivan y soy aficionado desde granada o ciudad real (segun donde este), no se si habra un foro de presentaciones y si lo hay perdon por no presentarme.
La verdad que da un poco miedo escribir mi primer post donde estan de discursiones y espero ke mis palabras no sirban para calentar mas el ambiente, ya que mucho no se pero tratare de explicar algo por encima porque algo e visto aunque no e profundizado mucho. Perdon por mis faltas de ortografia ya que no soy buen escritor y no creo que mejore eso a la vejez 😳
Guitarman, la verdad esque en lo que te dicen lleban razon y lo que quieres es mas complicado de lo que te crees y no creo que merecca la pena, ya que si llegas a saber como se hace desistiras antes de hacerlo.
Te explico:
Cuando aprendi el asm del pic (por aficcion, no por estudios ni nada parecido), tambien me meti a hacer mis pinitos con el asm del pc.
Yo, al igual que tu soy de los que pensaba, pienso y pensare que en asm se puede hacer todo. Otra cosa es la complicacion y el tiempo que necesitaras para realizar determinadas tareas que en lengujes de alto nivel seran sencillas por el apollo de las librerias y en asm te llebarian una eternidad.
Aparte de lo dicho anteriormente, el problema que tienes con el asm para pc es que no programas para un procesador como en el pic, programas para un sistema operativo (hacerlo sin el creo que desde el 386 ya no se puede, supongo que por secretismos de fabricantes, no lo se). Los pocos programas que e visto de asm sin sistema operativo usan como minimo la tabla de interrupciones del MS-DOS, o la de Unix, que aunque sean distintas, bienen a ser lo mismo.
Para hacer lo que tu quieres para windows, aparte de saber trabajar con el emsamblador tendras que aprenderte la API de windows, que es el sustituto a la tabla de interrupciones del DOS, cambia en que tendras que aprender palabras en ingles (identificadores) en vez de direcciones y podras olvidarte de la segmentacion para manejar el disco.
Yo casi prefiero hacer una chuleta de direcciones que aprenderme identificadores, aunque lo de trabajar con una memoria plana de 32bit da menos calenturas de cerebro que andar con la segmentacion.
La API no me la e aprendio y supongo que facilitara el trabajar los graficos con las tarjetas modernas.
Si lo haces para ms dos tendras que trabajar con un msdos de los de antes y en modo real, no protegido, no vale la consola de windows aunque te deje usar el debug y cosas asi, supongo que porque ya ira con la API. Tu programa lo primero que tendria que elegir o ver el modo grafico, sabras como hacerlo si te miras la tabla de interrupciones del DOS y las interrupciones, servicios y direcciones del bios.
Tendrias casi que elegir una resolucion baja (lo que te impediria ejecutarlo con monitores planos o que no admitan tan poca resolucion), con esto solo tendrias que conocer la direccion de la tarjeta grafica para con la interrupcion y el servicio adecuado poder escribir un caracter ascii (en tu caso no seria una letra sino un cuadrado opaco que no recuerdo a cual corresponde en ascii) en la posicion de pantalla que elijas. Para explicartelo facil, hazte a la idea que la pantalla se divide en caracteres empezando de arriba izquierda y contados de izquierda a derecha cada posicion tiene una direccion y no recuerdo de cuantos bits son.Para escribir mandas a la direccion de la posicion de pantalla que elijas el caracter ascii elejido y el color (creo ke eran 16 bit para la posicion de pantalla y 16 bit para el caracter y el color en hexadecimal, 8 y 8 para cada cosa, en un modo que no recuerdo si era 25x80 o 80 x no se cuantos, ya no me acuerdo, que era la resolucion para un ejercicio que hice y fue hace tiempo).
Si cojes una resolucion alta ya tendras que aprender la paginacion de la memoria de tu tarjeta y demas... Algo que para los de nvidia sera facil pero que a ti se te complicara, y lo mas seguro esque solo funcione con tu tarjeta.
He tratado de explicartelo lo mas facil que e podio ya que hace tiempo que no miro asm para pc porque desisti y muchas cosas como el tamaño de las palabras que mandas para el caracter y el color puedo haberlas dicho mal, aun asi creo que puede servirte de orientacion y ayuda.
Si consiges escribir un punto (caracter) en la posicion de pantalla que elijas no tendras problemas para escribir un conjunto de puntos y hacer un dibujito. Pero moverlo por la pantalla te sera mas complicado. Tendrias que hacerlo dibujandolo en un lao dibujandolo en otro, borrar el anterior y cosas asi, por medio de una infinidad de algorritmos llenos de bucles y contadores y un calentamiento de cerebro colosal (algo que en lenguajes de alto nivel ya tienes solucionado usando librerias, como te an dicho antes ).
Desisti porque ya ves el comecocos que tienes que aprenderte. Aun asi, si te encabezonas, algo que entiendo perfectamente, creo que usando la API de windows podras tambien tener acceso a los direct x de windows, no lo se.
Un libro que trae un ejemplo de un juego en emsamblador (tipo arkanoid, o el de la rana que va saltando, ya no me acuerdo) es:
"Emsamblador para windows, linux y msdos" de la editorial anaya. No te pongo el autor porque no lo tengo aqui y no quisiera equivocarme de autor.
Espero que lo escrito te sirva de algo, no puedo profundizar mas porque mucho no se. Prefiero seguir aprendiendo a hacer los programas para pic, auque aun no pase de malmover los servos y poco mas, del microbot que monte que pelearme con el pc.
Un saludo y mis felicitaciones a ARDE por la pagina y la asociacion.
Vamos a ver GUITARMAN en ningún momento te falto el respeto technik así que no comprendo porque te pones así, supongo que habrá sido porque te dijo algo que no esperabas oir pero bueno, te comento:
en ensamblador se pueden hacer cosas muy optimizadas pero en cuanto se quiere hacer algo mínimamente dificil no merece la pena gastar tanto esfuerzo y tiempo en hacer algo que se puede hacer mucho más rápido con los lenguajes de alto nivel
si tu proposito es aprender ensamblador por la razón que sea programate funciones diversas que tengan más o menos dificultad pero como te quieras programar un juego así te vas a morir en el intento...
Estoy con la opinión de todos, cuando de verdad conozcas ensamblador creeme que nos darás la razón que no merecía la pena ni intentarlo.
Un saludo.
rashii, eso pasó hace ya casi un año (mayo del 2008) así que de poco servirá que le eches ahora la bronca 😉
Iván me parece que te colaste contestando a un post tan viejo, seguro que GUITARMAN ya ni está por el foro.
cierto, me confundió el mensaje de Iván respondiendole...
Perdon, no mire las fechas, arriba lo vi el primero y conteste el post porque estuve un tiempo buscando informacion sobre cosas parecidas.
Supongo que los nuevos somos mas dados a estas cosas, mirare fechas la proxima vez.
Un saludo