Hola tengo los siguientes datos:
misBytes BYTE 10h,20h,30h,40h
misPalabras WORD 8Ah,3Bh,72h,44h,66h
y la siguiente instrucción:
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
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)
aclarado, gracias :D