Pregunta

¿Cuál es la forma más corta de obtener un valor de la memoria en el ensamblador x86?

¿Fue útil?

Solución

¿Quiere decir que no sea el registro de mov, [dirección]?

Otros consejos

No hay solución en el ensamblador Haw para hacer eso. Todas las instrucciones del ensamblador son estrictamente dedicadas.

mov AL, 0x12

se cargará inmediato el valor 0x12 para registrar Al

xor  AL,AL

El resultado de la operación en Al Registro es 0

lodsb

Se cargará byte de ds: [esi] (o ds: [si] bajo CPU de 16 bits) dirección de memoria a Al

mov AL,[ESI]

Se cargará byte de ds: [esi] (o ds: [si] bajo CPU de 16 bits) dirección de memoria a Al

mov AL,[0xFFFF]

Cargará byte de ds: [0xffff] dirección de memoria a Al

pop AX

Cargará byte desde SS: [esp] (o SS: [sp] bajo CPU de 16 bits) dirección de memoria a Al

in AL, 0x123

Cargará byte desde la dirección del puerto 0x123

xlatb [EBX + AL]

Cargará byte de ds: [ebx + al] dirección de memoria

...

Ok, la forma más corta es para los registros pop, como pop eax, es una instrucción de byte.
Pero eso solo se puede usar en casos especiales, donde el puntero de pila ESP apuntará a un búfer,
Y probablemente no usará la pila para otro propósito hasta que el código que lo use esté hecho.

La forma estándar es usar el mov instrucción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top