assembly - 来自 FS (MASM) 的 LODS

标签 assembly x86 masm opcodes

我希望使用 LODS 操作码将双字节从 FS 加载到 eax。 LODS 使用的默认段是 DS,我希望用 FS 覆盖它。 如何使用 MASM 操作码来完成此操作?

00000000 (02) 6a30                     PUSH 0×30
00000002 (01) 5e                       POP ESI
00000003 (02) 64ad                     LODS EAX, [FS:ESI]

来源自这里http://www.ragestorm.net/blogs/?p=369

非常感谢, 迈克尔·恩斯特勒

最佳答案

1)以后,如果可能的话,请记得发布代码片段。它总是有帮助的:)

2) 16 位实模式 LODS* 指令始终采用 DS 、 ES 和 AX。您无法更改此设置。

3) 如果您希望使用 FS,您可能还需要“ASSUME NOTHING”指令。例如:

ASSUME FS:NOTHING
MOV EAX, FS:[0]
ASSUME FS:ERROR

'希望有帮助..PSM

PS: 如果您只是想学习汇编程序,我强烈建议您尝试 32 位保护模式。如果您有兴趣,这里有一个很好的资源:

关于assembly - 来自 FS (MASM) 的 LODS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485583/

相关文章:

algorithm - 没有除法运算符的处理器上的汇编 mod 算法

x86 - IB读、IB写、OB读、OB写是什么意思。它们作为英特尔® PCM 的输出,同时监控 PCIe 带宽

assembly - 如何用汇编语言编写 "Hello World"应用程序?

c - 了解有关 C 'bomb' 的 x86 语法

assembly - 获取数据段中初始化的变量的地址

assembly - 汇编中的源代码索引

c++ - masm 指令集资源

assembly - x86,BYTE 和 BYTE PTR 的区别

assembly - 浮点程序给出无效结果

assembly - 为什么我在 AT&T 汇编中尝试使用 `*...(%rip)` 进行 RIP 相关直接跳转时会得到一个奇怪的长操作码?