Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Zequez en 20 Enero 2010, 16:36 pm



Título: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: Zequez en 20 Enero 2010, 16:36 pm
Bueno, primero, en el tuto deberían advertir que cada compilador de ASM tiene una sintaxis completamente diferente al resto de los compiladores  :¬¬,

Código:
;Programa HOLA MUNDO
DATOS   SEGMENT
       MENSAJE DB "HOLA MUNDO$"
DATOS   ENDS 

PILA   SEGMENT STACK "STACK"
       DB 200 DUP(0)
PILA   ENDS

CODIGO   SEGMENT
       ASSUME CS:CODIGO,DS:DATOS,SS:PILA
PRINCIPAL   PROC
      MOV AX,DATOS
      MOV DS,AX
      MOV AH,9
      MOV DX,OFFSET MENSAJE
      INT 21H
      MOV AH,4CH
      INT 21H
PRINCIPAL   ENDP
CODIGO       ENDS
      END PRINCIPAL


Además, por mas que lo "minimize", por ejemplo, haciendo esto:

Código:
msg db 'Hello, world!$'

start:
      mov ax,msg
      mov ds,ax
      mov ah,9
      mov dx,msg
      int 21h
      mov ah, 4ch
      int 21h

Compila, pero cuando lo abro con ollydebug no me deja abrirlo :S


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: Eternal Idol en 20 Enero 2010, 16:48 pm
Primero son ensambladores, ensamblan. Segundo no se a que tutorial te referis, deja enlace la proxima vez.

¿Cual es la pregunta entonces? El titulo habla de compilar pero al final decis que lo lograste y no podes depurarlo con Ollydbg. Eso no lo vas a poder hacer nunca con un codigo de 16 bits, el Ollydbg es un depurador de 32 bits.

PD. La sintaxis es diferente, pero ni de lejos completamente.


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: Zequez en 20 Enero 2010, 16:57 pm
Primero son ensambladores, ensamblan. Segundo no se a que tutorial te referis, deja enlace la proxima vez.

¿Cual es la pregunta entonces? El titulo habla de compilar pero al final decis que lo lograste y no podes depurarlo con Ollydbg. Eso no lo vas a poder hacer nunca con un codigo de 16 bits, el Ollydbg es un depurador de 32 bits.

PD. La sintaxis es diferente, pero ni de lejos completamente.

El tutorial es el que está primero en la sección ASM xD
http://foro.elhacker.net/asm/tutorial_asm_basico_ejemplos-t102701.0.html

Si, bueno, logré compilarlo, pero, por ejemplo, le saqué la parte del stack, y todo lo de los segmentos xD.

Ahora estoy probando con nasm.
Por otro lado, estoy con un OS de 64 bits, se supone que no puedo ejecutar aplicaciones de 16 bits no? :S

Que diferencia de sintaxis hay entre 16 y 32 bits? Y 64? :S Porque no veo nada que haga referencia a la cantidad de bits xD.

El tema de los segmentos... Es distinto en cada ensamblador... Pero... para que sirven? Es decir, al programa no le aportan nada :S


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: Eternal Idol en 20 Enero 2010, 17:41 pm
Windows en 64 bits solo soporta aplicaciones de 64 bits y de 32 bits (son emuladas). Ese codigo es pura y exclusivamente para MS-DOS, podes ejecutarlo en Windows (de 32 bits) pero es emulado.

Te aconsejo conseguir un libro sobre el tema.

PD. En ese tutorial, que es antiguo y se basa en MS-DOS, explica lo que es un segmento.


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: bizco en 20 Enero 2010, 23:15 pm
Citar
Que diferencia de sintaxis hay entre 16 y 32 bits? Y 64? :S Porque no veo nada que haga referencia a la cantidad de bits xD.

Nombre/Tamaño de los registros tendria que decirte mucho. yo te recomiendo leer un tutorial basico.


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: B14573R en 24 Enero 2010, 20:13 pm
hola Zequez  mira si recien empiesas en esto de la programacion de Asm  te recomiendo que programes en TASM es mejor y facil de utilisar  el Fasm lo utilise pero es mas complejo como consejo  dale con TASM es el mejor y facil de utilisar lla que  no tienes que usar librerias  y  solo tiene dos archivos el compilador y linkiador   ademas lo creas en el block de notas y le das la extensión .asm   para correr el compilador y el linkiador lo ases en la CMD  de windows y listo

te dejo un ejemplo si te sirve de algo

Código
  1. .model small
  2. .code
  3.  
  4. hello        segment
  5.              assume      cs:hello, ds:hello, ss:hello
  6.  
  7.              org   100h
  8.  
  9.  
  10. start:       jmp   index
  11.  
  12.  
  13. .stack
  14.  
  15. mensaje    db  'Hello Word$'
  16.  
  17. index:
  18. mov       ax,hello
  19. mov       ds,ax
  20.  
  21. mov       dx,offset mensaje
  22. mov       ah,09h
  23. int          21h
  24. mov        ah,10h
  25. int           16h
  26. mov        ax,4ch
  27. int           21h
  28.  
  29. hello       ends
  30. end        start



espero averte alludado   y sige en este en este facinante mundo de la programacion  ya que programando en asm controlas no solo software sino tambien hardware   :D

EI: juntando mensajes.

y la diferencia esta en  que los registros de 16byts son asi  
---------------------------------------------------------------------

ah   =  8 bits
ax   = 16 bits
eax =  32 bits
rax = 64 bits
----------------------------------------------------------------------

no se cual es de 64 bytes pero ese es el cuento empiesa programando en 16 bytes y despues que entiendas todo te bas por  32 bytes
espero aberte alludado


Título: Re: Como compilo el hello world del tuto de asm en fasm? -.-
Publicado por: Eternal Idol en 24 Enero 2010, 21:08 pm
B14573R: son BITS no BYTES, y en 64 es rax. Usa el boton modificar, no hagas doble posteo.