Foro de Assembler

No se si no me haya hecho entender. El "funcionamiento del hardware a un nivel de bits" y el resto de cosas de las que hablas son conceptos básicos que no dependen de ninguna arquitectura, y por ende estarán presentes en cualquier assembler, así que no discutamos por eso. Si estás insinuando que "16" es la mitad (o algo similar) de difícil de aprender que "32", tal vez sea porque no tienes dos ejemplos para establecer una comparación.

Por otro lado, no entiendo tu ejemplo. A ver si lo detallas, que es interesante. Una consola no es sólo una CPU, y el costo final de la misma es algo determinante a la hora de diseñarla (ni hablar del estado de la tecnología para el resto de componentes). La NES pudo haber tenido una 68K, pero quién iba a pagar eso en esa época?
 
  • Me gusta
Reacciones: 2 personas
No se si no me haya hecho entender. El "funcionamiento del hardware a un nivel de bits" y el resto de cosas de las que hablas son conceptos básicos que no dependen de ninguna arquitectura, y por ende estarán presentes en cualquier assembler, así que no discutamos por eso. Si estás insinuando que "16" es la mitad (o algo similar) de difícil de aprender que "32", tal vez sea porque no tienes dos ejemplos para establecer una comparación.

Por otro lado, no entiendo tu ejemplo. A ver si lo detallas, que es interesante. Una consola no es sólo una CPU, y el costo final de la misma es algo determinante a la hora de diseñarla (ni hablar del estado de la tecnología para el resto de componentes). La NES pudo haber tenido una 68K, pero quién iba a pagar eso en esa época?

De acuerdo, gracias por la aclaracion.

Habia pensado en hacer un emulador de NES para J2ME, pero no tenia ni la menor idea por donde comenzar, asi que investigué e investigué hasta que Ruben Baca, colaborador de www.virtualnes.com me dio la idea de empezar a emular algo basico (eso fue hace como año y medio creo) y lo mejor es la consola mas basica de videojuegos que es una Telmac 1800, o Cosmac VIP que tienen el mismo lenguaje para escribir juegos, el "Chip-8" asi que empezé a leer pero igual seguia en la completa oscuridad.

Tuve que aprender Assembly 8086 pero no mucho, solo cosas basicas, pero antes de eso tuve que aprender Bitwise, pero antes de eso tuve que aprender binario y hexadecimal y convertir entre ellos, fue un camino bien largo, ya estoy escribiendo el emulador en C#, pero si que me ha costado porque ahora tengo que aprender XNA etc etc etc..... para el mas simple emulador, el camino ha sido larguisimo, pero cuando empieze a leer de la NES o de Master System o de la que sea, ya entenderé como son las cosas :)
 
De echo no hay ningún lío respecto a prender asm basándose en los sistemas de 16 bits, son los mas explícitos y concretos, ademas las diferencias entre 16, 32 y 64 radica en sus registros y la cantidad de memoria que pueden direccionar, diferencia real existe por ejemplo entre el asm de un procesador Armel y el de un Spark o un Intel, pero lo del ancho de bits es lo de menos.

Por otro lado lo del emulador, me parece que es buena la intencion de aprender los fundamentos de bajo nivel, sin emabrgo para el caso puntual hay que estudiar las espcificaciones del chip de la consola y como virtualizarlo en el lenguaje que se desee J2ME en este caso.
 
Ok ... Entons comenzare con emu8086 y luego voy por el nasm ... Gracias... Esta interesante el tuto... Y el tuto q pusieron al principio tambien
Escrito desde www.LANeros.mobi (BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136)
 
Bueno, la verda un poco dificil la cosa... Pero me emociona esto del asm y me emociona mas que se ponga dificil, todo un reto. Creo que tendre que leer el tuto de los virus para entender alguna cosa mas antes de empezar con la practica. Mis conocimientos sobre electronica son casi nulos jeje. A ver q puedo hacer, me tomara tiempo pero ahí le voy con ganas....
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Originalmente Escrito por Ivanzinho
He aqui el mejor tutorial que he conocido, claro que debes seguir buscando en google otros mas porque hay cosa que a mi parecer omiten ahi http://www.emu8086.com/assembler_tutorial/
http://www.emu8086.com/assembler_tutorial/

Lo estoy revisando y si que esta muy pero muy bueno, gracias explica conceptos bien basicos, y para alguien co mo yo es de gran ayuda, muchas pero muchisimas gracias.
 
Bueno, la verda un poco dificil la cosa... Pero me emociona esto del asm y me emociona mas que se ponga dificil.............

Hoy en día los que escribimos código asm, lo hacemos fundamentalmente por gusto y gratificación personal, dado que ya no tiene mucho campo de aplicación, en todo caso se aprenden cosas realmente interesantes; éxitos.:chino:
 
a que te refieres con que no tiene mucho campo de aplicacion?....

Pues me refiero al echo de que ya casi nada se escribe en asm, con el auje de la programación web y los entornos gráficos casi todo es PHP, Python, ... y otros lenguajes de altísimo nivel, incluso c/c++ ya es casi un mito entre los programadores actuales, las labores que se reservan para el asm, son cosas de verdaderos maestros, como controladoras de hardware y o procesos sumamente críticos que requieren un dominio casi absoluto de la maquina. En palabras simples, esperar que puedas ganar dinero con asm o que eso te de ventaja en el mundo laboral es un engaño, si bien te da un conocimiento de la informática mucho mayor al que puede tener un programador web, es igualmente cierto que eso hoy día le importa a muy pero muy pocas personas.
 
Osea que lo que uno quiere hacer en asm tambien lo puede hacer en cualquier lenguaje de alto nivel? ( Me refiero a que si uno quiere hacer con respecto a las necesidades de ahora...) Pero de todas maneras creo que hay cosas que se les escapa de las manos a los lenguajes de alto nivel y por lo tanto a los programadores de aquellos lenguajes, y pues es en esos casos donde uno desearia saber asm, de todas maneras lo mio es por el puro gusto de aprender, de saber mas... ( Y ademas que en cierta manera o en algun momento me a de resultar util ) , me encanta la idea de saber como funcionan las cosas .... Y no utilizar algo por sin saber el por que de las cosas...
Escrito desde www.LANeros.mobi (BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136)
 
Osea que lo que uno quiere hacer en asm tambien lo puede hacer en cualquier lenguaje de alto nivel? ( Me refiero a que si uno quiere hacer con respecto a las necesidades de ahora...) Pero de todas maneras creo que hay cosas que se les escapa de las manos a los lenguajes de alto nivel y por lo tanto a los programadores de aquellos lenguajes, y pues es en esos casos donde uno desearia saber asm, de todas maneras lo mio es por el puro gusto de aprender, de saber mas... ( Y ademas que en cierta manera o en algun momento me a de resultar util ) , me encanta la idea de saber como funcionan las cosas .... Y no utilizar algo por sin saber el por que de las cosas...
Escrito desde www.LANeros.mobi (BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136)

El orden en que las cosas son creadas es el siguiente:

Si usted programa en Assembly, eso se convierte luego en bits para que el procesador entienda.

Si usted programa en C, eso se pasa a Assembly y luego a bits.

Y de ahi para adelante todo es lo mismo, si usted programa en C++, C#, Java, etc.... todo es pasado por Assembly y luego a bits.

Ya partiendo de esta aclaracion, si usted va a escribir un "Hello World" en Assembly, o en C, C++, o en C#, el mas optimo en cuanto a rendimiento, es el que usted escribió en Assembly, pero ya tiene usted que medir el esfuerzo que necesita para escribir el codigo, y el que menos necesita esfuerzo es C# que es el de mas alto nivel.

Si ahora nos enfocamos a un negocio que es de ganaderia, uno programaria en C#, pero si nos enfocamos a un negocio de desarrollar juegos, uno programaria en C++ y en algunos casos Assembly

¿Todo claro? :)
 
Pues... Si... Sime quedo claro... Jeje si que le diste un bajon y algunas interrogantes a mis ganas de aprender asm, pero por alguna razon hay otra parte que quiere seguir aprendiendo asm. El manual de virus y el tuto que puso Ivanzinho; al leerlos me dan mas ganas de seguir con esto, puesto que entiendes realmente que pasa con la computadora (por decirlo de esa forma), cosa que a veces al aprender otro lenguaje me quedo la interrogante. Pues yo le sigo al asm, por alguna razon me llama bastante la atencion esto.

No creo poder aportar algo por ahora.... Y ojala pueda hacerlo pronto.

Gracias SB por crear este tema...
Escrito desde www.LANeros.mobi (BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136)
 
...Pues yo le sigo al asm, por alguna razon me llama bastante la atencion esto.

Te digo bro que en mida hay tres momentos que jamas olvidare, por buenos o por malos y uno de ellos es la primera vez que pude escribir el Hola mundo directamente sobre la maquina sin sistema operativo ni nada de por medio.... ah! el control del boot es el santo grial de la informática y es un placer que solo los que conocemos asm podemos darnos.

________
________

No te desanimes, adelante con esto que es muy gratificante!.

Ivanzinho dijo:
....pero si nos enfocamos a un negocio de desarrollar juegos, uno programaria en C++ y en algunos casos Assembly .....

La verdad el desarrollo de juegos se ha alejado mucho hoy en día del bajo nivel, ya que se cuentan con mejores capas de abstracción en lenguajes de mayor nivel, que ofrecen las ventajas de poderosas gráficas y poco consumo de código, prueba de ello es el CoD Black Ops cuyo motor de ejecución se escribió en python, eso si claro todo se baja a c/c++ y luego a asm para depurarlo antes de que pase a producción, pero ya poco es lo que hacen los gamedev en c y mucho menos en asm. El mayor campo es de asm en el mundo del entretenimiento es en los emuladores, cosas como zsnes, psx o pcsx2 si bien no están escritas en asm directamente, hacen uso de un núcleo de bajo nivel para que un procesador normal se "parezca" al de la consola emulada.
 
Pues... Si... Sime quedo claro... Jeje si que le diste un bajon y algunas interrogantes a mis ganas de aprender asm, pero por alguna razon hay otra parte que quiere seguir aprendiendo asm. El manual de virus y el tuto que puso Ivanzinho; al leerlos me dan mas ganas de seguir con esto, puesto que entiendes realmente que pasa con la computadora (por decirlo de esa forma), cosa que a veces al aprender otro lenguaje me quedo la interrogante. Pues yo le sigo al asm, por alguna razon me llama bastante la atencion esto.

No creo poder aportar algo por ahora.... Y ojala pueda hacerlo pronto.

Gracias SB por crear este tema...
Escrito desde www.LANeros.mobi (BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136)

Hermano, si se va a hacer un virus, yo no le aconsejaria Assembly para escribirlo, yo le aconsejo C++, y si va a hacer algo malo, haga algo malevolosamente bueno, porque para hacer virusitos tontos mejor no haga nada..... hagase no se, un worm, una vaina que se salte un firewall y se reproduzca en una red, una vaina asi bien hp.

El assembly yo lo estudié porque, en mi concepto, es necesario saber como trabaja el hardware, pero de ahi a saber como hacer un "Hello World" me da una pereza terrible, me gastaria todo el dia leyendo para hacer uno de esos, y ahorita no tengo tiempo porque estoy haciendo el emulador de Chip 8 que le comenté a Sairus


La verdad el desarrollo de juegos se ha alejado mucho hoy en día del bajo nivel, ya que se cuentan con mejores capas de abstracción en lenguajes de mayor nivel, que ofrecen las ventajas de poderosas gráficas y poco consumo de código, prueba de ello es el CoD Black Ops cuyo motor de ejecución se escribió en python, eso si claro todo se baja a c/c++ y luego a asm para depurarlo antes de que pase a producción, pero ya poco es lo que hacen los gamedev en c y mucho menos en asm. El mayor campo es de asm en el mundo del entretenimiento es en los emuladores, cosas como zsnes, psx o pcsx2 si bien no están escritas en asm directamente, hacen uso de un núcleo de bajo nivel para que un procesador normal se "parezca" al de la consola emulada.

Por eso digo que "y en algunos casos assembly", pero esos casos son pero bien escasos, por ahi los de Zsnes que ya llevan mucho tiempo haciendo emuladores, ademas que en esa epoca tocaba assembly porque el hardware era muy lento cuando sacaron la primera version del emulador, ese corre en un Celeron de 200Mhz con 32Mb en RAM y funciona el StarFox que es un juego en 3D, que para mi es el que mas exige procesador ya que hubo una epoca en la que ese me corria super lento, pero a medida del tiempo mejoraron el rendimiento del emulador mediante el ASM, pero ahorita que lo mas basico será un procesador atom de 1Ghz, ¿a quien le importa escribir en ASM?

El ASM no va a morir y nunca morirá, porque se necesita saber como funciona el hardware, y la mejor manera es aprendiendo ASM
 
No te preocupes... Mi intención no es crear virusitos ni virusotes..., mi intención es aprender asm, aprender el funcionamiento de la máquina, solo que en ese tuto de los virus explica bien los conceptos básicos, igual al tuto que pusiste, que tb es desde lo mas básico, cosa que yo necesito por ser muy principiante en esto.
-----------------------------------------------------------------------------------------------

Y gracias SB ... No me desanimare y le seguiré al asm, claro que tb de paso talves vaya aprendiendo algún lenguaje mas.
 
Los virus en c++ usan código asm embebido, se usa la capa alta de c para hacer algoritmos genéticos y cosas de evasión y el asm para cargarse la maquina, en otras palabras un virus roba datos o espía no necesita asm, pero si quieres quemar (literalmente) el procesador del pc víctima bastan unas 13 lineas de asm.

Por otro lado zsnes, el actual usa nasm como base del emulador, es el menor para sistemas de supernintendo y corre con un mínimo de recursos, fundamentalmente gracias a la alta calidad de su código assembler.

En todo caso hay algo que necesita y necesitara simpre assembler y es la manipulación de hardware, nuestras pc se bootean con un cargador de asm, los live cd existen gracias a el y los SO dependen de el para hacer su capa de contacto kernel - bios que permite reconocer las partes del equipo y naturalmente usarlas .
 
Ya estoy confundido yo juraba que assembler solo era para los pics, ahora veo que no esta solo limitado a eso.
 
Y de ahi para adelante todo es lo mismo, si usted programa en C++, C#, Java, etc.... todo es pasado por Assembly y luego a bits.

Cosas como Java Bytecode y MSIL no las llamaría Assembly. Además muchos otros compiladores JIT, intérpretes o compiladores nativos no hacen uso de una etapa intermedia en la que se traduzca a Asembly.

Ivanzinho dijo:
El ASM no va a morir y nunca morirá, porque se necesita saber como funciona el hardware, y la mejor manera es aprendiendo ASM

Bueno, bueno, tampoco exageremos. La mejor manera para aprender cómo funciona el hardware es aprendiendo sobre circuitos digitales y arquitectura de computadores. Aprender un lenguaje ensamblador te sirve para programar a bajo nivel una CPU o una arquitectura de procesadores determinada.
 
puffffff

Cosas como Java Bytecode y MSIL no las llamaría Assembly. Además muchos otros compiladores JIT, intérpretes o compiladores nativos no hacen uso de una etapa intermedia en la que se traduzca a Asembly.



Bueno, bueno, tampoco exageremos. La mejor manera para aprender cómo funciona el hardware es aprendiendo sobre circuitos digitales y arquitectura de computadores. Aprender un lenguaje ensamblador te sirve para programar a bajo nivel una CPU o una arquitectura de procesadores determinada.

Sea como sea todo tiene que pasar a ser Assembly y luego Bits, sea como sea, muy bonito como lo explicas y hasta hermoso, pero todo pasa a ser Assembly y luego a Bits......

El assembly se sigue usando, como por ejemplo para desarrollar el Google Chrome http://en.wikipedia.org/wiki/Google_Chrome y hacer codigo extremadamente optimo, toca hacerlo en Assembly, entonces si se va a usar y siempre se va a usar hasta que la arquitectura de los procesadores cambie, no estoy exagerando.
 
ASM Legacy

Ah! bros, no se enfrasquen en una discusión sin sentido. Es cierto que la mayoría de los programas escritos en lenguajes compilados pasas primero por una etapa de asm antes de ser ejecutables, y también es cierto que los lenguajes de bytecode o los scripts no lo usan, sin embargo los interpretes de esos lenguajes o sus VM si que pasaron por ese proceso.

Aunque es muy cierto "No hay que ser cocinero, para comer pastel de chocolate!" , la mayoría de los programadores actuales no necesitan echar una sola linea de asm, de echo ni siquiera necesitan conocer que existe y aun así son grandes profesionales.

Ahora bien, mientras existan procesadores, existirán lenguajes ensambladores, incluso si la arquitectura cambia (Ya lo vimos con ARM, AMD64 y el mismo SPARC) en especial porque tendemos al estándar de que un procesador cualesquiera entienda diversos juegos de instrucciones. Por otro lado ASM va mas aya que un lenguaje definido como C o JAVA, hay tantos asm como juegos de instrucciones para procesador o pic. Así que en definitiva, a los que aun nos apasiona esto del bajo nivel tendremos caña para rato, eso es seguro:chino:
 
Sea como sea todo tiene que pasar a ser Assembly y luego Bits, sea como sea, muy bonito como lo explicas y hasta hermoso, pero todo pasa a ser Assembly y luego a Bits......

No, no todos pasan en alguna etapa a Assembly. Mejor dicho, ¿qué entiendes tú por Assembly?

El assembly se sigue usando, como por ejemplo para desarrollar el Google Chrome http://en.wikipedia.org/wiki/Google_Chrome y hacer codigo extremadamente optimo, toca hacerlo en Assembly, entonces si se va a usar y siempre se va a usar hasta que la arquitectura de los procesadores cambie, no estoy exagerando.

Lo usan para V8. Y me refería a que exagerabas cuando decías que aprender Assembly era la mejor manera para saber cómo funciona el hardware. No lo es. Nadie ha dicho que los lenguajes ensambladores están muriendo o se dejarán de usar.
 

Los últimos temas