【问题标题】:x86 register flag abbreviationsx86 寄存器标志缩写
【发布时间】:2018-01-31 14:24:44
【问题描述】:

我目前正在学习汇编语言。

在 Microsoft Visual Studio 2017 中,我想检查注册标志的当前状态。

我想知道每个寄存器标志的缩写代表什么,所以我查看了wiki page on x86 register flags

但如您所见,Visual Studio 中显示的注册标志缩写与 wiki 页面中的缩写不匹配。

对于 Visual Studio 中的寄存器标志,我怎样才能知道它们代表什么?

【问题讨论】:

  • @SamiKuhmonen,非常感谢您提供的链接!这正是我正在寻找的。但在页面顶部,它显示This documentation is archived and is not being maintained.,然后单击recommended version 会生成content retired 页面。所以我想知道,是否有更新版本的文档?
  • 我也注意到了。不确定是否有当前版本,因为这首先提出了搜索并显示了所有 regs
  • 我可以猜到其中的一些来源:溢出、启用中断、ZeRo、Aux..Carry、奇偶校验偶 (1=true)、CarrY。 |相反:UP = 不知道,如果它像“up”,那么它会在 UP=0 时上升,这与许多其他 MS 事物一样有意义。 PL 对我来说是另一个谜,如果它是 PLus,那么 PL=0 是非负值,所以 ... /me 左挠头。
  • GDB 使用与英特尔文档相同的 2 字母代码。例如ZFSF。 (有关将 GDB 用于 asm 的提示,请参阅 x86 tag wiki 的底部。)

标签: assembly x86 masm eflags


【解决方案1】:

微软似乎对标志使用略有不同的缩写,它们可以在older Visual Studio documentation中找到:

OV:溢出
向上:方向
EI:中断
PL:标志
ZR:零
AC:辅助进位
PE:平价
CY:携带

【讨论】:

    【解决方案2】:

    溢出标志(OV):设置为 1,当给定指令为例如 32 位且结果值为 33 位时。

    方向标志(UP):用于对lodsb等字符串的操作。如果设置为 1,则访问是从较高的内存位置到较低的内存位置,否则访问是从较低的内存位置到较高的内存位置。

    中断标志(EI):帮助cpu识别外部中断。如果设置为 1,则微处理器将识别中断请求。否则它将忽略中断请求。

    Sign(PL):设置为1,当最高有效位为1时。

    Zero(ZR):设置为1,如果指令执行后结果为零。

    辅助进位(AE): Bocome 1,如果第 4 位产生进位。

    Parity(PE):如果结果的低字节中1的位数是偶数,则变为1。

    进位 (CY): 设置为 1,如果在操作后生成进位。

    【讨论】:

    • 如果您要发布这个已经回答的问题的第二个答案,解码像this comment does 这样的两个字母的首字母缩写词是有意义的,比如 PE = Parity Even。另请注意,PE 仅根据结果的低字节设置,即使对于像inc eax 这样的更宽操作数大小也是如此。并且 PL 可能是“加号”,即使 SF-set 表示负号。 "UP" 也是向后的,字符串操作清楚时向上。
    • IF (EI) 启用或阻止外部中断。您正在描述 TF,单步标志。
    • 好的,没关系,但至少edit 可以修正 IF 的错误描述。
    • 感谢您指出 IF @Peter Corder 的错误描述。
    • 由于您在我的第一条评论中错过了它,我也修复了PF的不准确描述。
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2014-02-04
    • 2014-11-19
    • 2012-02-26
    • 2022-01-13
    相关资源
    最近更新 更多