c - x86 - 获取方向标志 (DF) 的当前状态

标签 c windows debugging assembly x86

我正在尝试从 EFLAGS 寄存器中获取 DF 的值。 我尝试使用 LAHF 指令,但根据 Intel X86 文档,该指令仅加载 SF、ZF、AF、PF、CF 标志。但是,我正试图找到一条指令,它会给我 DF 寄存器的值。

提前致谢。

最佳答案

使用以下代码:

pushf                ;Maybe you'll need pushfd
pop  eax
bt   eax, 10

如果设置了 CF,则设置了 DF!


如果你不想破坏任何寄存器,你可以使用下一个方法(受@fuz 启发):

pushf
test byte [esp+1],4
lea  esp, [esp+4]      ;The LEA instruction doesn't change any flags

这次如果设置了ZF,就说明DF被清除了!

关于c - x86 - 获取方向标志 (DF) 的当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611055/

相关文章:

c# - 时间旅行调试 : how to install it without the store?

创建n个随机点并创建四边形(卡住)C

windows - 我可以修改 Windows 7 预览 Pane ,以便 HTML 文件在预览中仅显示文本而不是呈现 html 吗?

c# - 如何在 C# 中阻止键盘和鼠标输入?

c++ - 是否有用于 Visual C++ 或其他 IDE 的工具,允许超过 1 个程序员(在线)同时处理同一个项目?

java - 如何调试 JavaFX

java - jstack: "JNI global references"是什么意思?

c - 在 C 中用等效的 HTML 实体替换字符/符号

c - 尝试使用指针将数组元素从一个数组传递到另一个数组......没有得到?

c - 如何将 64 位操作数相乘并可移植地得到 128 位结果?