访问段寄存器 MASM
我正在尝试查询 FS 段寄存器指向的进程环境块中的值。 尝试编译包含 fs:[0] 段的代码会导致错误(错误 A2108:使用假定为错误的寄存器)。
如何查询段寄存器?!
谢谢
I'm trying to query the value located in the Process Enviornment Block, pointed to by the FS segment register. Attempting to compile code with the fs:[0] segment included results in an error (error A2108: use of register assumed to ERROR).
How do you query the segment registers?!
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
默认情况下,MASM 假定对段寄存器的任何访问都是错误(通常是这样)。 您需要使用 ASSUME FS:NOTHING 重新定义 FS 寄存器的假设。
您可以将此指令放在文件的顶部,或者您可以暂时“重新使用”FS 寄存器。 示例:
通过这种方式,您可以仅关闭针对该单个指令的错误检查。 ASSUME 指令仅通知汇编器要做什么,它们不会导致发出任何代码。
MASM by default assumes that any access to the segment registers is an error (which usually it is). You need to redefine the assumptions for the FS register using
ASSUME FS:NOTHING
.You can place this directive at the top of your file, OR you could "reassume" the FS register temporarily. Example:
This way you turn off the error checking only for this single instruction. The ASSUME directives only inform the assembler what to do, they don't cause any code to be emitted.
根据 错误 A2108 的 MSDN 文档,您需要在代码中添加假设指令。
什么都不做
文件顶部应删除寄存器错误检查。
我认为这是因为对于大多数代码来说,使用段寄存器会导致不正确的行为。
According to the MSDN documentation for error A2108, you need to add an assume directive to your code.
ASSUME NOTHING
at the top of your file should remove register error checking.
I presume this is because for most code, using the segment registers results in incorrect behavior.