Assembly 8086设置时忽略陷阱标志的指令

Assembly 8086设置时忽略陷阱标志的指令,assembly,x86,x86-16,x86-emulation,Assembly,X86,X86 16,X86 Emulation,当设置8086陷阱标志(TF)时,几乎每一条指令后都会自动生成1型中断。我正在寻找8086/8088仿真器的完整异常列表。我是否遗漏了以下列表中的任何内容或写了任何错误的内容 REPxx、锁和代码段前缀 MOV到段和POP段寄存器 如果TF在标志弹出后设置,但在标志之前重置,则IRET和POPF 注释 前缀后不立即识别任何类型的中断 仅限后期处理器上的MOV SS、xxxx和POP SS 单步执行从下一条指令的末尾开始 rep和lock是前缀,而不是指令。它们是其他说明的一部分。当然,中断不能触

当设置8086陷阱标志(TF)时,几乎每一条指令后都会自动生成1型中断。我正在寻找8086/8088仿真器的完整异常列表。我是否遗漏了以下列表中的任何内容或写了任何错误的内容

  • REPxx、锁和代码段前缀
  • MOV到段和POP段寄存器
  • 如果TF在标志弹出后设置,但在标志之前重置,则IRET和POPF
  • 注释

  • 前缀后不立即识别任何类型的中断
  • 仅限后期处理器上的MOV SS、xxxx和POP SS
  • 单步执行从下一条指令的末尾开始

  • rep和lock是前缀,而不是指令。它们是其他说明的一部分。当然,中断不能触发mid指令。(也就是说,实际的8086/88有一个本质上的缺陷:在可恢复指令(如
    rep cs movsb
    )期间的中断将保存最后一个前缀的地址,而不是第一个,因此当它重新启动时,
    rep
    前缀将不可见。或者更糟的是,如果将rep放在最后,
    cs
    将不可见。如果您想使用
    movsb
    使用rep和段覆盖,您必须将其放入
    测试cx,cx
    /
    jnz
    循环中,以确保它完成,首先使用rep前缀。因此,忠实的仿真器可能应该模拟此设计缺陷(后来x86 CPU修复了此缺陷)。来源:@MichaelPetch的评论。他还联系了收集了这一点和其他8086怪癖/勘误表的人。再看看@PeterCordes,这是一个哲学问题,REP和LOCK是否是“指令”,使处理器处于一种影响后续(非前缀)执行的临时修改状态指令,或它们是否是单个指令的一部分。英特尔的文档将操作码称为0F0h或0F2h前缀,而V20文档中的NEC将前缀描述为独立指令。