访问段寄存器MASM

时间:2009-07-02 12:25:25

标签: winapi masm masm32

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

如何查询段寄存器?!

由于

2 个答案:

答案 0 :(得分:5)

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

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

这样您只关闭此单条指令的错误检查。 ASSUME指令只通知汇编程序要做什么,它们不会导致发出任何代码。

答案 1 :(得分:3)

根据error A2108的MSDN文档,您需要在代码中添加一个假定指令。

ASSUME NOTHING  在文件的顶部应该删除寄存器错误检查。

我认为这是因为对于大多数代码而言,使用段寄存器会导致错误的行为。