Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试查询位于进程环境块中的值,该值由 FS 段寄存器指向。尝试编译包含 fs:[0] 段的代码会导致错误(错误 A2108:使用寄存器假定为错误)。
你如何查询段寄存器?!
谢谢
MASM 默认假定对段寄存器的任何访问都是错误的(通常是错误的)。您需要使用 重新定义 FS 寄存器的假设ASSUME FS:NOTHING。您可以将此指令放在文件的顶部,或者您可以暂时“重新假定”FS 寄存器。例子:
ASSUME FS:NOTHING
ASSUME FS:NOTHING MOV EAX, FS:[0] ASSUME FS:ERROR
这样你就只为这条指令关闭错误检查。ASSUME 指令仅告知汇编器要做什么,它们不会导致发出任何代码。
根据错误 A2108的 MSDN 文档,您需要在代码中添加一个假设指令。
假设 文件顶部的任何内容都不应删除注册错误检查。
我认为这是因为对于大多数代码,使用段寄存器会导致不正确的行为。