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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Problemas al instalar masm32
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas al instalar masm32  (Leído 10,522 veces)
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Problemas al instalar masm32
« Respuesta #10 en: 25 Mayo 2015, 15:17 pm »

Si claro, me explique mal, yo te entendi de que no se podia poner instrucciones en 16 bits, se utiliza el prefijo 66 con los 16 bits, no son los opcodes originales de 80x86, es como un x86 pero con el prefijo, pense de que Windows x64 no toleraba ese tipo de cosas, me extrañaba por eso pregunte.

Un saludo.


En línea

luisferfago

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Problemas al instalar masm32
« Respuesta #11 en: 25 Mayo 2015, 17:58 pm »

El S.O. no cambia a modo real una vez iniciado asi que el procesador no ejecuta instrucciones de 16 bits. No se para que uno lo podria querer igualmente  :silbar:

mov    ax, 1234h
xor     bx, ax
...

¿Así que estas instrucciones de 16 bits no se ejecutan en el procesador (de 32, de 64)?
Vaya, vaya, ... no me digas.

Por poner un ejemplo: Windows Home 64 bits con procesador Intel 64 bits:
Depura el Notepad.exe (un ejecutable de 64 bits) y poco muy poco, pero verás algunas intrucciones, como esta:

xor    al, al
ret



« Última modificación: 25 Mayo 2015, 18:02 pm por luisferfago » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Problemas al instalar masm32
« Respuesta #12 en: 25 Mayo 2015, 19:16 pm »

mov    ax, 1234h
xor     bx, ax
...

¿Así que estas instrucciones de 16 bits no se ejecutan en el procesador (de 32, de 64)?
Vaya, vaya, ... no me digas.


Hola, creo que es como C y C++, algunas instrucciones de C se ejecutan en C++ :)
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problemas al instalar masm32
« Respuesta #13 en: 25 Mayo 2015, 20:05 pm »

mov    ax, 1234h
xor     bx, ax
...

¿Así que estas instrucciones de 16 bits no se ejecutan en el procesador (de 32, de 64)?
Vaya, vaya, ... no me digas.

Por poner un ejemplo: Windows Home 64 bits con procesador Intel 64 bits:
Depura el Notepad.exe (un ejecutable de 64 bits) y poco muy poco, pero verás algunas intrucciones, como esta:

xor    al, al
ret

¿Queres decir que esas instrucciones que trabajan con registros de 16 u 8 bits son de 16 bits? Las instrucciones dependen del modo de ejecucion.

Abro el WinDbg de 32 bits y el notepad idem.

!dh notepad
eb notepad+address of entry point 0x1f
g

Repetir con el WinDbg de 64 bits y notepad idem.

Edito con otro ejemplo el opcode 048h en 16 bits es DEC AX, en 32 bits DEC EAX (como decia el amigo cpu2 si queres hacer DEC AX le antepones el operand-size prefix 066h) y en 64 bits es invalido.
« Última modificación: 25 Mayo 2015, 20:33 pm por Eternal Idol » En línea

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
luisferfago

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Problemas al instalar masm32
« Respuesta #14 en: 26 Mayo 2015, 19:41 pm »

sí: quiero decir exactamente eso: que esas instrucciones son de 16 bits en toda regla.

otra cosa es que el procesador no conmute a modo real para ejecutarlas, claro.
pero no digas que esas instrucciones no son de 16 bits porque están operando con registros de 16 bits.

¿el prefijo 66h es invalido en 64 bits? te vuelvo a decir: ¿no me digas?

foto: notepad.exe de 64 bits, depurado con el WinDbg, en Windows Home 64 bits con procesador Intel 64 bits:

http://postimg.org/image/p3o3xva3j/
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problemas al instalar masm32
« Respuesta #15 en: 26 Mayo 2015, 20:52 pm »

sí: quiero decir exactamente eso: que esas instrucciones son de 16 bits en toda regla.

El S.O. no cambia a modo real una vez iniciado asi que el procesador no ejecuta instrucciones de 16 bits. No se para que uno lo podria querer igualmente  :silbar:

Bien, el procesador en modo long no es capaz de ejecutar el DEC E/AX (opcode 048h) o POP DS (opcode 0x1F). Por lo tanto el procesador en modo long ejecuta instrucciones de 64 bits (si, aunque sea capaz de acceder a los registros legacy).

otra cosa es que el procesador no conmute a modo real para ejecutarlas, claro.
pero no digas que esas instrucciones no son de 16 bits porque están operando con registros de 16 bits.

Siguiendo tu logica AL es un registro de 8 bits y por lo tanto la instruccion xor al, al es de 8 bits.
 
¿el prefijo 66h es invalido en 64 bits? te vuelvo a decir: ¿no me digas?

Y yo te voy a decir lo que tendria que haberte dicho en tu primer mensaje: BAJATE DEL CABALLO, NO HAY MUCHA DISTANCIA. Ahora si, aprende a leer con atencion, nadie dijo que el prefijo fuera invalido, el opcode si lo es por lo explicado anteriormente. Tu ejemplo solo demuestra mi punto, la instruccion de 16 bits es 085h, 0C0h y es TEST AX, AX, el prefijo se necesita en 32 bits ya que de otra manera esa MISMA e IDENTICA instruccion seria TEST EAX, EAX. Las instrucciones dependen del modo de ejecucion y seria bueno que lo entendieras antes de volvera responder.

PD. Estrictamente hablando las instrucciones de 16 bits son las que constan de dos bytes.
En línea

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
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Problemas al instalar masm32
« Respuesta #16 en: 26 Mayo 2015, 21:10 pm »

Creo que este tema se esta desviando y hay un malentendido.

Si las instrucciones trabajan con 16 bits, si las son, pero en realidad no son las originales de un 80x86, como dije anteriormente. Eso es lo que intento decir @EI y se malinterpreto, por eso le pregute para que pudiera aclarar el tema.

El prefijo 66h esta reservado, simplemente para que se sepa de que se esta trabajando con 16 bits, y el prefijo 48h para 64 bits pero no dejan de ser iguales todas simplemente que con prefijos:

Código
  1. mov rbx, rax      48 89 c3
  2. mov ebx, eax      -- 89 c3
  3. mov bx, ax        66 89 c3
  4.  
  5. test rbx, rax     48 85 d8
  6. test ebx, eax     -- 85 d8
  7. test bx, ax       66 85 d8

Supongo que esto ayudara, los opcodes no coinciden con los originales de un 80x86 puro, modo real.

Citar
PD. Estrictamente hablando las instrucciones de 16 bits son las que constan de dos bytes.

Hay excepciones como por ejemplo xchg, tambien serian dos bytes en 64 bits pero con el prefijo indicado, con 16 igual con su prefijo, y por ultimo el 32 bits pues con el byte solo.

Fue un malentendido no se ofusquen de esa manera xD.

Un saludo.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problemas al instalar masm32
« Respuesta #17 en: 26 Mayo 2015, 21:31 pm »

Si las instrucciones trabajan con 16 bits, si las son, pero en realidad no son las originales de un 80x86, como dije anteriormente. Eso es lo que intento decir @EI y se malinterpreto, por eso le pregute para que pudiera aclarar el tema.

Claro, no son las mismas por lo que ya mencione anteriormente: las instrucciones dependen del modo de ejecucion, el procesador las interpreta de acuerdo al modo de ejecucion.

Supongo que esto ayudara, los opcodes no coinciden con los originales de un 80x86 puro, modo real.

Hay mas excepciones como la que mostre del opcode DEC de un byte o la instruccion AAA (037h), esas son instrucciones de 16 bits y 32 bits (segun el modo de ejecucion), no son de 64 bits.

Hay excepciones como por ejemplo xchg, tambien serian dos bytes en 64 bits pero con el prefijo indicado, con 16 igual con su prefijo, y por ultimo el 32 bits pues con el byte solo.

Me referia a que una instruccion de un byte seria de 8 bits ;)

Fue un malentendido no se ofusquen de esa manera xD.

Uno puede tener un mal dia, dos veces seguidas en dias consecutivos vomitando esa pedanteria indica que estamos ante un pobre individuo. Hasta aca llegamos con el tema.
En línea

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
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Inyeccion dll: [ Delphi ] - [ C++ ] - [ VB ] - [ Masm32 ] - [ C# ??? ] « 1 2 »
.NET (C#, VB.NET, ASP)
XSaMuXPH *-* Traigo uno encima! =D! 10 11,240 Último mensaje 10 Noviembre 2010, 18:41 pm
por luigymax
Colores en codigo ASM (MASM32)
ASM
Riki_89D 2 7,257 Último mensaje 18 Octubre 2009, 18:47 pm
por Riki_89D
Bajar Masm32
ASM
тαптяα 7 6,895 Último mensaje 16 Octubre 2010, 19:02 pm
por Eternal Idol
Masm32
ASM
Stuxnet 3 4,999 Último mensaje 16 Noviembre 2012, 23:20 pm
por x64core
PlaySound en masm32
ASM
Nop+ 3 3,959 Último mensaje 18 Noviembre 2012, 18:54 pm
por Nop+
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines