在 X86 汇编器中从内存中获取值的最短方法是什么?
问问题
948 次
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 回答