2

在 X86 汇编器中从内存中获取值的最短方法是什么?

4

3 回答 3

4

你的意思是除了mov寄存器,[地址]?

于 2010-03-30T22:10:48.060 回答
4

汇编程序中没有解决方法可以做到这一点。所有的汇编指令都是严格专用的。

mov AL, 0x12

将立即加载值 0x12 到寄存器 AL

xor  AL,AL

AL寄存器的运算结果为0

lodsb

将从 DS:[ESI](或 16 位 CPU 下的 DS:[SI])内存地址加载字节到 AL

mov AL,[ESI]

将从 DS:[ESI](或 16 位 CPU 下的 DS:[SI])内存地址加载字节到 AL

mov AL,[0xFFFF]

将从 DS:[0xFFFF] 内存地址加载字节到 AL

pop AX

将从 SS:[ESP](或 16 位 CPU 下的 SS:[SP])内存地址加载字节到 AL

in AL, 0x123

将从端口地址 0x123 加载字节

xlatb [EBX + AL]

将从 DS:[EBX + AL] 内存地址加载字节

...

于 2010-03-31T06:20:39.980 回答
2

好的,最短的方法是弹出寄存器,例如pop eax,它是一个字节指令。
但这只能在特殊情况下使用,其中堆栈指针 ESP 将指向一个缓冲区,
并且在使用它的代码完成之前,您可能不会将堆栈用于其他目的。

标准方法是使用mov指令。

于 2010-03-30T22:35:40.147 回答