• Jueves 28 de Marzo de 2024, 12:41

Autor Tema:  Aprender Ensamblador  (Leído 5723 veces)

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Aprender Ensamblador
« en: Lunes 19 de Marzo de 2007, 12:19 »
0
Hola, quiero aprender ASM y me surgieron algunas dudas. El cidigo escrito es como en otros lenguajes de programacion, o sea, con esto me refiero a que para cualquier ensamblador el codigo es el mismo o varia segun el caso?. Que herramientas se usan habitualmente?, IDE, algun conversonr de bases, editor hexadecimal, etc. Lei el post it de los ensambladores que postearon pero queria saber cual me recomiendan ustedes. Otra cosa, no tengo ni idea de este lenguaje, siempre programe en C/C++ y otros lenguajes que no viene al caso mencionar, es posible que puede aprender las bases por mi cuenta, en forma autodidacta?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #1 en: Lunes 19 de Marzo de 2007, 12:43 »
0
El codigo varia, las instrucciones son las mismas para un procesador pero tenes que conocer la sintaxis de cada assembler (programa que ensamblar) para definir cosas como macros o constantes ya que son diferentes.

Yo personalmente uso MASM/32 ya que casi siempre trabajo con Microsoft pero sino podes usar NASM o FASM que son multiplataforma. No es tan enorme la diferencia, lo basico es exactamente igual.

Si con "por mi cuenta" te referis a usando material de libros e Internet la respuesta es: si, por supuesto.

http://foros.solocodigo.com/index.php?showtopic=24005
http://foros.solocodigo.com/index.php?showtopic=24291

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #2 en: Lunes 19 de Marzo de 2007, 14:02 »
0
Muchas Gracias. Voy a conseguir el ensamblador y a leer un rato larrgo. :D

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #3 en: Lunes 19 de Marzo de 2007, 14:13 »
0
De nadas y perseverancia es lo mas importante  ;)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #4 en: Martes 20 de Marzo de 2007, 20:54 »
0
:D  :D  :D


Pues no se que opine Eternal pero en mi particular punto de vista , para comprender bien el ensamblador tambien es necesario saber un poco de hardware desde como son llamadas las interrupciones por el procesador o como es que trabaja la memoria ...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #5 en: Martes 20 de Marzo de 2007, 21:37 »
0
Cita de: "Bicholey"
Pues no se que opine Eternal pero en mi particular punto de vista , para comprender bien el ensamblador tambien es necesario saber un poco de hardware desde como son llamadas las interrupciones por el procesador o como es que trabaja la memoria ...
Eso viene en cualquier libro basico sobre el tema.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #6 en: Miércoles 21 de Marzo de 2007, 00:46 »
0
Tambien se podria usar Gas (o as, GNU Assembler) que usa sintaxis de AT&T pero puedes enssamblar en BeOS, GNU/Linux, Mac OS X, BSD, QNX y Windows.

http://www.gnu.org/software/binutils/
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #7 en: Miércoles 21 de Marzo de 2007, 08:15 »
0
Cita de: "su -"
Tambien se podria usar Gas (o as, GNU Assembler) que usa sintaxis de AT&T pero puedes enssamblar en BeOS, GNU/Linux, Mac OS X, BSD, QNX y Windows.

http://www.gnu.org/software/binutils/
¿De verdad alguien usa eso? NASM ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #8 en: Miércoles 21 de Marzo de 2007, 20:51 »
0
Cita de: "Eternal Idol"
Cita de: "su -"
Tambien se podria usar Gas (o as, GNU Assembler) que usa sintaxis de AT&T pero puedes enssamblar en BeOS, GNU/Linux, Mac OS X, BSD, QNX y Windows.

http://www.gnu.org/software/binutils/
¿De verdad alguien usa eso? NASM ...
Si, muuy pocos... esta el "proyecto" Gemini, pero no son muchos lo que lo usan desde C/C++ y todos los demas lenguajes de un nivel mas alto.

Aun asi, se puede usar "as" como con sitaxis (segun veo) de Intel, supongo que seria basicamente lo mismo.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #9 en: Miércoles 21 de Marzo de 2007, 22:07 »
0
Cita de: "su -"
Si, muuy pocos... esta el "proyecto" Gemini, pero no son muchos lo que lo usan desde C/C++ y todos los demas lenguajes de un nivel mas alto.
No solo por los lenguajes de alto nivel sino que los que programan en ensamblador para Linux lo hacen en su amplisima mayoria con NASM.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #10 en: Miércoles 21 de Marzo de 2007, 22:17 »
0
Cita de: "Eternal Idol"
No solo por los lenguajes de alto nivel sino que los que programan en ensamblador para Linux lo hacen en su amplisima mayoria con NASM.
No solo en Linux sino en todo (por general) pero eso no quiere decir mucho, solo que es menos popular, pero como ves se puede usar en precticamente cualquier OS.

Aunque (pudo estar mal en esto) ahora no tiene mucho sentido programar en ASM, teniendo en cuenta que hay BIOS hechas 100% en C/C++ :blink:  o tlavez si, bueno no se creo que depende del trabajo o no?

[EDIT]

PD: as se usa (o esta diseñado) para ensamblar con mas facilidad (modificando algunas cosas, si es necesario) codigos viejos creados en Unix.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #11 en: Miércoles 21 de Marzo de 2007, 22:24 »
0
Cita de: "su -"
Aunque (pudo estar mal en esto) ahora no tiene mucho sentido programar en ASM, teniendo en cuenta que hay BIOS hechas 100% en C/C++ :blink:  o tlavez si, bueno no se creo que depende del trabajo o no?
En S.O.s modernos como Windows o Linux la BIOS es obsoleta y apenas se usa para que cargue el sector de arranque o como mucho durante el mismo arranque del S.O. pero durante la ejecucion normal ya en modo protegido/long (32/64 bits) no se usa en lo absoluto.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #12 en: Miércoles 21 de Marzo de 2007, 23:47 »
0
Citar
Aunque (pudo estar mal en esto) ahora no tiene mucho sentido programar en ASM, teniendo en cuenta que hay BIOS hechas 100% en C/C++ blink.gif o tlavez si, bueno no se creo que depende del trabajo o no?
profesionalmente creo que casi no tiene sentido pero:
1)Te ayuda a entender la arquitectura del procesador sea de la familia que sea
2)Te permite optimizar ciertos algoritmos y pedazos de codigo a un nivel crítico sin depender de la optimizacion del compilador de alto nivel (es muy buena, pero en asm puede ser excelente)
3)Que hay de ingeniería inversa? Pero es es para gente groxa

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #13 en: Jueves 22 de Marzo de 2007, 00:05 »
0
Y te salva la vida cuando tenes que depurar ... a ver que haces para depurar un problema en un ejecutable de terceros o mucho peor, ya que es mas que factible, una incompatibilidad con software de terceros. Ahi no tenemos el codigo fuente  :P

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #14 en: Jueves 22 de Marzo de 2007, 00:14 »
0
Si y les falto lo de los virus... para ver su codigo y saber que hace para arreglar y... uds saben,

Hmmm, diria que hay cosas que nunca cambian o mejor dicho, nunca dejan de ser inutiles.

Pero, que dicen, es mejor syntax de AT&T o de Intel?
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #15 en: Jueves 22 de Marzo de 2007, 15:05 »
0
Citar
Pero, que dicen, es mejor syntax de AT&T o de Intel?
A mi me gusta más la de Intel, prefiero los corchetes [] y no los parentesis ().
Código: Text
  1.  
  2. GAS memory operand    NASM memory operand
  3. ------------------    -------------------
  4.  
  5. 100      [100]
  6. %es:100      [es:100]
  7. (%eax)      [eax]
  8. (%eax,%ebx)    [eax+ebx]
  9. (%ecx,%ebx,2)    [ecx+ebx*2]
  10. (,%ebx,2)    [ebx*2]
  11. -10(%eax)    [eax-10]
  12. %ds:-10(%ebp)    [ds:ebp-10]
  13.  
  14.  

Código: Text
  1.  
  2. GAS syntax    NASM syntax
  3. ==========    ===========
  4.  
  5. jmp  *100    jmp  near [100]
  6. call  *100    call near [100]
  7. jmp  *%eax    jmp  near eax
  8. jmp  *%ecx    call near ecx
  9. jmp  *(%eax)    jmp  near [eax]
  10. call  *(%ebx)    call near [ebx]
  11. ljmp  *100    jmp  far  [100]
  12. lcall  *100    call far  [100]
  13. ljmp  *(%eax)    jmp  far  [eax]
  14. lcall  *(%ebx)    call far  [ebx]
  15. ret    retn
  16. lret    retf
  17. lret $0x100    retf 0x100
  18.  
  19.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #16 en: Jueves 22 de Marzo de 2007, 15:09 »
0
Si, Intel toda la vida.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #17 en: Jueves 22 de Marzo de 2007, 18:06 »
0
:P  :P  :P  :P


Pues yo no se uds, pero yo comprendi mucho mejor le funcionamiento de las pc's su arquitectura y sus debilidades a partir de que estudie un rato el asm no solo comprendes mejor los procesos, sino que hasta te imaginas el flujo de bits atraves del bus de datos...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #18 en: Jueves 22 de Marzo de 2007, 18:08 »
0
Cita de: "Bicholey"
Pues yo no se uds, pero yo comprendi mucho mejor le funcionamiento de las pc's su arquitectura y sus debilidades a partir de que estudie un rato el asm no solo comprendes mejor los procesos, sino que hasta te imaginas el flujo de bits atraves del bus de datos...
Si, conectenme el CPU a las venas!

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #19 en: Viernes 4 de Mayo de 2007, 15:23 »
0
que libro impreso me recomiendan que empiece con ASM desde -1?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Aprender Ensamblador
« Respuesta #20 en: Viernes 4 de Mayo de 2007, 16:00 »
0
Cita de: "AnioN"
que libro impreso me recomiendan que empiece con ASM desde -1?
Programación en ensamblador para DOS, Linux y Windows de Francisco Charte Ojeda. Editorial Anaya Multimedia.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.