访问段寄存器MASM

3 winapi masm masm32

我正在尝试查询FS段寄存器指向的Process Enviornment Block中的值.尝试使用fs:[0]段编译代码会导致错误(错误A2108:使用假定为ERROR的寄存器).

你如何查询段寄存器?!

谢谢

sto*_*oul 5

默认情况下,MASM假定对段寄存器的任何访问都是错误(通常是这样).您需要使用重新定义FS寄存器的假设ASSUME FS:NOTHING.您可以将此指令放在文件的顶部,也可以暂时"重新设置"FS寄存器.例:

ASSUME FS:NOTHING
MOV EAX, FS:[0]
ASSUME FS:ERROR
Run Code Online (Sandbox Code Playgroud)

这样,您只关闭此单条指令的错误检查.ASSUME指令仅通知汇编程序要执行的操作,它们不会导致发出任何代码.


Mic*_*ael 4

根据错误 A2108的 MSDN 文档,您需要在代码中添加假设指令。

假设 文件顶部的任何内容都不应删除寄存器错误检查。

我认为这是因为对于大多数代码来说,使用段寄存器会导致不正确的行为。