ASM16

高低位

img

AX为16位寄存器,AH和AL分别为AX的高八位和低八位

AX=AH+AL

低8位寄存器位AL、BL、CL和DL,高8位为AH、BH、CH和DH,它们只能用来存放8位数据,不能用来存放地址信息

而SP、BP等用于存放地址没有高低位之分

标志寄存器

  • 标志(Flag)用于反映指令执行结果或控制指令执行性形式

  • 8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)

标志的分类

  • 状态标志——用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF
  • 控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF

状态标志:

  • 进位标志CF(Carry Flag)

    • 如果运算结果的最高位产生了一个进位或错位,那么,其值为1,否则其值为0

    image-20240723134201666

  • 奇偶标志PF(Parity Flag)

    • 由于反应运算结果中(转化为二进制),”1”的奇偶性,也就是个数。”1”的个数为偶数,PF为1。个数为奇数,PF为0.
      补充:只包含最低位的一个字节(二进制的后八位)

    image-20240722220048109

  • 辅助进位标志AF(Auxiliary Carry Flag)

    • 在发生下列情况时,AF的值为1,否则其值为0
      (1)、在字操作时,发生低字节向高字节进位或错位时;
      (2)、在字节操作时,发生低4位向高4位进位或错位时;

    image-20240723162346576

  • 零标志ZF(Zero Flag)

    • ZF用来反映运算结果是否为0
      如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可用此标志位

    image-20240723134424947

  • 符号标志SF(Sign Flag)

    • SF用来反映运算结果的符号位,它与运算结果的最高位相同

    image-20240723134545082

  • 溢出OF(Overflow Flag)

    • OF用于反映有符号数加减运算所得结果是否溢出
      如果运算结果超过当前运算所能表示的范围,则为溢出,OF的值为1,否则,OF为0

      image-20240723134930376

控制标志:

  • 方向标志DF(Direction Flag)

    • 用于串操作指令中,控制地址的变化方向:

      设置DF=0,存储器地址自动增加;

      设置DF=1,存储器地址自动减少。

image-20240723162625987

  • 中断允许标志IF(Interrupt-enable Flag)

    • 用于控制外部可屏蔽中断是否可以被处理器响应:

    设置IF=1,则允许中断

    设置IF=0,则禁止中断

    image-20240723163125203

  • 陷阱标志TF(Trap Flag)

    • 用于控制处理器进入单步操作方式:

      设置TF=0,处理器正常工作

      设置TF=1,处理器单步执行指令

      image-20240723163422209

    img

最高位进位与溢出的区别:

进位标志表示无符号数运算结果是否超出范围
溢出标志表示有符号数运算结果是否超出范围

image-20240723135439547

指令指针IP

  • 指令指针寄存器IP,指示代码段中指令的偏移地址

  • 它与代码段寄存器CS联用,确定下一条指令的物理地址

  • 计算机通过CS:IP寄存器来控制指令序列的执行流程

  • IP寄存器是一个专用寄存器