我正在尝试查询FS段寄存器指向的Process Enviornment Block中的值。尝试使用fs:[0]段编译代码会导致错误(错误A2108:假定使用寄存器为ERROR)。
如何查询段寄存器?!
由于
答案 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 在文件的顶部应该删除寄存器错误检查。
我认为这是因为对于大多数代码而言,使用段寄存器会导致错误的行为。