在X86汇编程序中从内存中获取值的最短方法是什么?
答案 0 :(得分:4)
你的意思是除了mov寄存器,[地址]?
答案 1 :(得分:4)
汇编程序haw没有解决方法。 所有汇编程序指令都是严格专用的。
mov AL, 0x12
将立即加载值0x12以注册AL
xor AL,AL
AL寄存器中的操作结果为0
lodsb
将从DS加载字节:[ESI](或DS:[SI]在16位CPU下)内存地址到AL
mov AL,[ESI]
将从DS加载字节:[ESI](或DS:[SI]在16位CPU下)内存地址到AL
mov AL,[0xFFFF]
将从DS加载字节:[0xFFFF]存储器地址到AL
pop AX
将从SS加载字节:[ESP](或SS:[SP]在16位CPU下)内存地址到AL
in AL, 0x123
将从端口地址0x123
加载字节xlatb [EBX + AL]
将从DS加载字节:[EBX + AL]内存地址
...
答案 2 :(得分:2)
好的,最简单的方法是弹出寄存器,如pop eax
,这是一个字节的指令
但是这只能在特殊情况下使用,其中堆栈指针ESP将指向缓冲区,
并且在完成使用它的代码之前,您可能不会将堆栈用于其他目的。
标准方法是使用mov
指令。