• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2021-05-13 13:37 Aet 隐藏边栏 |   抢沙发  7 
文章评分 4 次,平均分 5.0

标志寄存器

  1. CPU内部的寄存器中,有一种特殊的寄存器具有以下3种作用
    1. 用来存储相关指令的某些执行结果
    2. 用来为CPU执行相关指令提供行为依据
    3. 用来控制CPU的相关工作方式
  2. 这种特殊的寄存器在8086CPU种,被称为标志寄存器
  3. 8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。
  4. 其他寄存器是用来存放数据的,整个寄存器有一个含义。而flag寄存器是按位起作用的。
    1. flag寄存器的1,3,5,12,13,14,15位在8086CPU中没有使用,不具有任何含义。
    2. 0,2,4,6,7,8,9,10,11位都具有特殊的含义。

ZF

  1. 第6位ZF,零标志位。
  2. 它记录相关指令执行后,其结果是否为0。
  3. 其结果为0,ZF为1,其结果不为0,ZF为0。

PF

  1. 第2位是PF,奇偶标志位。
  2. 它记录相关指令执行后,其结果的所有bit位中1 的个数是否为偶数。
  3. 如果1的个数为偶数,PF为1,否则为奇数,PF为0。

SF

  1. 第7位是SF,符号标志位。
  2. 它记录相关指令执行后,其结果是否为负。
  3. 如果结果为负,SF为1,否则为0。

CF

  1. 第0位是CF,进位标志位。
  2. 它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

OF

  1. 在进行有符号数运算的时候,如结果超过了机器所能表示的范围称为溢出。
  2. 第11位是OF,溢出标志位。
  3. 记录了有符号数运算的结果是否发生了溢出。
  4. 如果发生溢出,OF为1。如果没有,OF为0。

adc

  1. 带进位加法指令,它利用了CF位上记录的进位值。

sbb

  1. 带位减法指令,它利用了CF位上记录的借位值。

cmp

  1. 比较指令
  2. 相当于减法指令,但是不保存结果

条件转移

je

  1. 等于则转移
  2. 检测相关标志位:ZF = 1

jne

  1. 不等于则转移
  2. 检测相关标志位:ZF = 0

jb

  1. 低于则转移
  2. 检测相关标志位:CF = 1

jnb

  1. 不低于则转移
  2. 检测相关标志位:CF = 0

ja

  1. 高于则转移
  2. 检测相关标志位:CF = 0 且 ZF = 0

jna

  1. 不高于则转移
  2. 检测相关标志位:CF = 1 或 ZF = 1

DF

  1. 第10位是DF,方向标志位。
  2. 在串处理指令中,控制每次操作后SI,DI的增减。
  3. DF = 0,每次操作后SI,DI递增。
  4. DF = 1,每次操作后SI,DI递减。

pushf

  1. 将标志寄存器的值压栈

popf

  1. 从栈中弹出数据

shl

  1. 逻辑左移指令
  2. 将一个寄存器或内存单元中的数据向左移位
  3. 最低位用0补充

shr

  1. 逻辑右移指令
  2. 将一个寄存器或内存单元中的数据向右移位
  3. 最高位用0补充

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享