Duda con resultado de las siguientes instrucciones

Iniciado por .:UND3R:., 22 Noviembre 2011, 20:32 PM

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

.:UND3R:.

Hola tengo los siguientes datos:

Código (asm) [Seleccionar]
misBytes     BYTE   10h,20h,30h,40h
misPalabras WORD 8Ah,3Bh,72h,44h,66h


y la siguiente instrucción:
Código (asm) [Seleccionar]
mov esi, OFFSET misBytes
mov ax,WORD PTR [esi]                      ; a.AX =
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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

#1
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.

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)


.:UND3R:.


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)