Como compilo el hello world del tuto de asm en fasm? -.-

Iniciado por Zequez, 20 Enero 2010, 16:36 PM

0 Miembros y 1 Visitante están viendo este tema.

Zequez

Bueno, primero, en el tuto deberían advertir que cada compilador de ASM tiene una sintaxis completamente diferente al resto de los compiladores  :¬¬,

;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:

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

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Zequez

Cita de: 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.

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

Eternal Idol

#3
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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

bizco

CitarQue 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.

B14573R

#5
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 (asm) [Seleccionar]
.model small
.code

hello        segment
             assume      cs:hello, ds:hello, ss:hello

             org   100h


start:       jmp   index


.stack

mensaje    db  'Hello Word$'

index:
mov       ax,hello
mov       ds,ax

mov       dx,offset mensaje
mov       ah,09h
int          21h
mov        ah,10h
int           16h
mov        ax,4ch
int           21h

hello       ends
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
SI SAVES DEFENDERTE SABRAS COMO ATACAR
SI SAVES COMO ATACAR SABRAS DEFENDERTE
.......................

Eternal Idol

B14573R: son BITS no BYTES, y en 64 es rax. Usa el boton modificar, no hagas doble posteo.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón