Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: .:UND3R:. en 22 Noviembre 2011, 20:32 pm



Título: Duda con resultado de las siguientes instrucciones
Publicado por: .:UND3R:. en 22 Noviembre 2011, 20:32 pm
Hola tengo los siguientes datos:

Código
  1. misBytes     BYTE   10h,20h,30h,40h
  2. misPalabras WORD 8Ah,3Bh,72h,44h,66h

y la siguiente instrucción:
Código
  1. mov esi, OFFSET misBytes
  2. mov ax,WORD PTR [esi]                      ; a.AX =
  3. mov eax,DWORD PTR misPalabras       ; b.EAX =

Cuales son los valores de AX y EAX en sus respectivas líneas?
en la pregunta a yo creo que AX = 4030h debido que el procesador trabaja en little endian, por eso los dos valores finales del arreglo misBytes
en la b creo que EAX = 6644723B8Ah

a ver si me pueden aclarar, que dudo de las respuesta de la tapa de mi libro

Saludos


Título: Re: Duda con resultado de las siguientes instrucciones
Publicado por: _Enko en 22 Noviembre 2011, 21:26 pm
Citar
mov esi, OFFSET misBytes
mov ax,WORD PTR [esi]                      ; a.AX =
mov eax,DWORD PTR misPalabras       ; b.EAX =

Insisto, lo  puedes resolver  ensamblando en masm y depurando.

little endian no significa eso, por lo menos no de esa manera.
Se guarda el byte  menos significativo en el slot inferior: SI.
(http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Endianessmap.svg/250px-Endianessmap.svg.png)
por en tu ejemplo ESI no apunta al fina del arreglo, sino al principio.

Es decir, ESI apunta a donde esta 10h. Como es WORD, toma los dos primeros BYTES, al ser little endian queda: 2010h.

Acordate que los humanos escribimos bigendian los numeros. El ensamblador luego los tiene que transformar. (la mayoria de humanos)
Saludos.


PD: Dato curioso, los alemanes pronuncion los numeros LittleEndian pero los escriben BigEngian.
Ej castellanizado:
nro:125
se pronuncia como: cinco veinte y cien (little endian :D)



Título: Re: Duda con resultado de las siguientes instrucciones
Publicado por: .:UND3R:. en 23 Noviembre 2011, 00:53 am
aclarado, gracias :D