Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: ferk93 en 31 Mayo 2008, 17:36 pm



Título: Duda MUY BASICA sobre los registros en Ensamblador
Publicado por: ferk93 en 31 Mayo 2008, 17:36 pm
Buenas a to2!

Acabo de empezar a estudiar el lenguaje ensamblador y me ha surgido una duda sobre los registros.

Es lo mismo un registro de tipo EAX que de tipo AX?

Si no es asi, en que se diferencian?

Gracias de antemano y prdon x la duda, que se que es algo muy basico.


Título: Re: Duda MUY BASICA sobre los registros en Ensamblador
Publicado por: euyyn en 1 Junio 2008, 04:48 am
Si no recuerdo mal:

EAX y AX no son "tipos" de registros, sino nombres de registros concretos. EAX es el doble de grande que AX (igual que EBX respecto a BX), y además AX es la parte menos significativa de EAX. Creo que era que EAX son 4 bytes, de los cuales los 2 menos significativos "son" AX.

La necesidad de ser compatible hacia atrás hace que el ensamblador del x86 sea odioso a más no poder. Cuando todas las aplicaciones de usuario sean Java o .Net, al fin podrán en Intel diseñar un repertorio como Dios manda (como ya hicieron al diseñar el Itanium).


Título: Re: Duda MUY BASICA sobre los registros en Ensamblador
Publicado por: Rozor en 1 Junio 2008, 17:46 pm

        --------------
         | AH  |  AL |  <--- 2 x 16bit
         --------------
        |      AX       | <--- 16bit
        ---------------
        |      EAX     | <---- 32 bit
        ---------------
        |      RAX    |  <--- 64 bit
       ----------------


AX = 0x0000

Eso quiere decir que AH vale 0x00 y AL 0x00

si cambiasemos los registros

mov AH, 0x4C
mov AL, 0x69

entonces cambiaria el valor de AX

Al primer movimiento se quedaria en

AX = 0x4C00

Al segundo

AX = 0x4C69

16 DOS r00lz


Título: Re: Duda MUY BASICA sobre los registros en Ensamblador
Publicado por: ferk93 en 2 Junio 2008, 16:51 pm
Gracias a ambos por vuestra ayuda.

Ahora lo tengo claro.

Salu2!