[masm][pregunta]problema con variables

Iniciado por daryo, 2 Agosto 2014, 23:35 PM

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

MCKSys Argentina

Cita de: daryo en  2 Agosto 2014, 23:35 PM
hola estoy leyendo un libro de masm y dentro de los codigos de ejemplo hay uno que no me funciona:

Código (asm) [Seleccionar]
.386
.model flat, stdcall
option casemap:none
assume fs:nothing

.code
mivariable dd  0
codigo:
mov   [offset mivariable], eax
retn
nuevo dd ?

end codigo


el error es :
asi me funciona:

Código (asm) [Seleccionar]

.386
.model flat, stdcall
option casemap:none
assume fs:nothing

.data?
mivariable dd 0

.code
codigo:
mov   [mivariable], 0
retn
nuevo dd ?

end codigo

en ese caso funciona perfectamente
porque no funciona esto?
gracias de antemano

Probaste definir la variable como LOCAL ?
Código (asm) [Seleccionar]
.386
.model flat, stdcall
option casemap:none
assume fs:nothing

.code
local mivariable:DWORD
codigo:
mov   mivariable, eax
retn
nuevo dd ?

end codigo
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Eternal Idol

Vaagish: con MASM32 me da LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not run y efectivamente en Windows 8.1 x64 no me funciona. Fijate con dumpbin si .text tiene permisos de escritura en tu caso ...

MCKSys Argentina: no ensambla, tiene que estar dentro de un PROC (o MACRO), en principio deberia funcionar (usando la pila) pero no explica el problema en cuestion.
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

Vaagish

#12
CitarVaagish: con MASM32 me da LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not run y efectivamente en Windows 8.1 x64 no me funciona. Fijate con dumpbin si .text tiene permisos de escritura en tu caso ...

Tnks por la prueba.. en xp y 7 de 32 bits me funciona.. creo que el problema es en x64 de cualquier versión..

Trate con esto que pusiste ahi:
Citar/subsystem:console /section:.text,RW

CitarLINK.EXE /SECTION:.text,rw /SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3

Desde RadASM, no importa el orden que le de..
Pero me dice:

Citarfatal error LNK1104: cannot open file "rw /SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:C:\Masm32\Lib /OUT:$5.obj"

EDIT: Ta, problema de RadASM.. funciona perfecto..

Saludos!

Eternal Idol

Te falta el archivo objeto de input  ;D Igual RadASM no es mas que un IDE, para probar algo asi usa la linea de comandos, ya despues cuando lo tengas funcionando lo integraras en la configuracion del IDE.

PD. Asumo que cambiaste el nombre a la sección de codigo por defecto.
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

Vaagish

CitarTe falta el archivo objeto de input  ;D Igual RadASM no es mas que un IDE, para probar algo asi usa la linea de comandos, ya despues cuando lo tengas funcionando lo integraras en la configuracion del IDE.

PD. Asumo que cambiaste el nombre a la sección de codigo por defecto.

Jeje si, había puesto mal el nombre.. ademas el IDE no funciona donde hay una coma

Saludos!  ;D

MCKSys Argentina

Esto me compila y funciona bien (WinAsm):

Código (asm) [Seleccionar]

.386
.model flat, stdcall
option casemap:none

.code
codigo:
jmp codigo1
mivariable dd  0
codigo1:
mov mivariable, eax
ret
end codigo


Assemble:/c /coff /Cp /nologo

Link: /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /SECTION:.text,ERW

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Eternal Idol

Logico, la sección es RW, esta esa la razon para que funcione o no, tener o no permisos de escritura en la sección donde se pone la variable. Aunque esto ya estaba demostrado y sin el salto, simplemente haciendo que el entry point sea posterior ...
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