elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [DUDA]uso del mov en flat assembler
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA]uso del mov en flat assembler  (Leído 5,017 veces)
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
[DUDA]uso del mov en flat assembler
« en: 25 Junio 2011, 20:39 pm »

hola hice mi primer code en FASM:

Código:
include 'c:\fasm\include\win32ax.inc'
.data
lpTextOk db 'notepad encontrado',0
lpTextError db 'no se encontró notepad',0
lpCaption db 'Mi Primer programa',0

lpClassName db 'notepad',0
lpWindowName db 0

NuevoTitulo db 'Modificando un caption',0

lpString db 'hello world',0
nCount dd 11
hWin dd ?
hdc dd ?

.code
start:
push 0               ;linea 19  original: push lpWindowName (no encuentra el notepad)
push lpClassName
call [FindWindowA]
mov [hWin],eax       ;linea 22  original: mov hwin,eax
cmp [hWin],0
jne encontrado
jmp noencontrado
.end start

encontrado:
push 64
push lpCaption
push lpTextOk
push 0
call [MessageBoxA]
push NuevoTitulo
push [hWin]
call [SetWindowTextA]
push [hWin]
call [GetDC]
mov [hdc],eax        ;linea 39  original: mov hdc,eax
push [nCount]
push lpString
push 25
push 25
push [hdc]
call [TextOutA]
push 1
push [hWin]
call [FlashWindow]
push 333
call [Sleep]
push 0
push [hWin]
call [FlashWindow]
push 333
call [Sleep]
push 1
push [hWin]
call [FlashWindow]
jmp salida
ret

noencontrado:
push 16
push lpCaption
push lpTextError
push 0
call [MessageBoxA]
jmp salida
ret

salida:
push 0
call [ExitProcess]
ret

la teoria del "mov destino,origen" dice que mueve info del origen al destino, y en FASM al poner la variable entre "[]" [variable] se refiere al valor que contiene supongo que al poner variable sin nada entonces se refiere a su direccion en memoria, en la linea 19 del codigo al principio puse "mov hWin,eax" lo entiendo de esta manera: "lo que valga eax muevelo a la direccion de hWin", pero me daba error (al igual que la linea 39), asi que le puse [hWin] y funciona , el uso del mov y de pasar las variables entre "[]" y sin nada no me queda muy claro ¿alguien me podria dar una mejor explicacion de esto?


En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: [DUDA]uso del mov en flat assembler
« Respuesta #1 en: 25 Junio 2011, 21:56 pm »

La manera correcta es
mov [hWin], eax

de otra manera no ensambla, no es una operacion valida.

Para que entiendas mejor:

hWin es una label, una etiqueta, equivale a una direccion de memoria.
por ejemplo:
label1 dd 5 ; label1 = 0x4000
label2 dd 4; label2 = 04004 (label1 + 4, porque dd=DWORD=4 en 32 bit)


En si, con esto no hay problema, porque el ensamblador te dirá que hay un error. Pero que pasa si el mov es al reves.
mov eax, [label1] ; eax = 5

si te confundes, y colocas
mov eax, label1; eax=0x4000

ambas intrucciones son validas.

así que acordate:

VARIABLE es direccion de memoria
[VARIABLE] es el contenido de esa direccion de memoria.

Y ojo, a veces, el contenido tambien puede ser una direccion de memoria, variables PUNTERO.

por ejemplo:
Código:
mov eax, label1 ;eax = 0x4000
mov [label2], eax
;label2 = 0x4004
;[label2] = 0x4000 el contenido de label2 apunta a label1
;para llegar al valor al que apunta label2 puedes hacer
mov eax, [label2]; eax = 0x4000
mov eax, [eax]; eax = [contenido 0x4000] = 5

Mucho cuidado con eso, son los errores mas comunes a la hora de pasar parametros a una funcion.


si ves codigo de masm....

FASM [VARIABLE] = MASM VARIABLE
FASM VARIABLE = MASM ADDR VARIABLE , o MASM OFFSET VARIABLE.




Saludos.


« Última modificación: 25 Junio 2011, 22:07 pm por _Enko » En línea

AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: [DUDA]uso del mov en flat assembler
« Respuesta #2 en: 26 Junio 2011, 23:08 pm »

bastante claro gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Como puedo crear una libreria estatica con flat assembler?
ASM
Avoidance25 6 5,913 Último mensaje 8 Noviembre 2009, 23:18 pm
por Eternal Idol
duda en assembler
ASM
mapers 1 3,011 Último mensaje 8 Diciembre 2010, 00:15 am
por Eternal Idol
¿algun tuto y libro sobre flat assembler?
ASM
AlxSpy 4 9,505 Último mensaje 24 Junio 2011, 07:30 am
por d(-_-)b
duda en assembler 8086!
Programación General
manuelmtl 0 1,746 Último mensaje 18 Noviembre 2014, 21:44 pm
por manuelmtl
Proyecto traducción Flat Assembler Programmer's Manual
ASM
Ózar 0 2,289 Último mensaje 1 Junio 2018, 06:46 am
por Ózar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines