汇编网首页登录博客注册
lsmss的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
文章收藏
友情链接

[2009-09-03 21:05] 标志寄存器

标志寄存器FR(Flag Register)

  8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
    按顺序是:CF PF AF ZF SF TF IF DF OF 

  OF(Overflow Flag): 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被置为0。

  DF(Direction Flag):方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。控制每次操作后si,di的增减,0增1减
 
  SF(Sign Flag):符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
 
  ZF(Zero Flag):零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
 

  PF(Parity Flag):奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
 
  CF(Carry Flag):进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。)

    CF和OF的区别: CF对无符号数运算有意义,而OF对有符号数运算有意义。

  AF:下列情况下,辅助进位标志AF的值被置为1,否则其值为0: 
  (1)、在字操作时,发生低字节向高字节进位或借位时; 
  (2)、在字节操作时,发生低4位向高4位进位或借位时。

    IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下: 
  (1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求; 
  (2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
 
  TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清楚。
  (1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。
  (2)如果TF=0,则处于连续工作模式。

 Debug中标志位的表示:
 
 标志位   值为1    值为0 
 OF         OV       NV 
 SF         NG       PL 
 ZF         ZR       NZ 
 PF         PE       PO 
 CF         CY       NC 
 DF         DN       UP  

提示:
adc (c - carry)  带进位加法指令。它利用了CF位上记录的进位值。 

sbb (b - borrow)  带借位减法指令。它利用了CF位上记录的借位值。
 
cmp (compare)  比较指令。它的功能相当于减法指令,只是不保存结果。
 
je (e - equal)  ZF=1则转移 

jne (ne - not equal) ZF=0则转移 

jb (b - below)  CF=1则转移
 
jnb (nb - not below) CF=0则转移 

ja (a - above)  CF=0且ZF=0则转移
 
jna (na - not above) CF=1或ZF=1则转移 

将cmp指令和je等条件转移指令配合使用,可以实现根据比较结果进行转移的功能。

movesb (b - byte)  传送一个字节。
 
movesw (w - word) 传送一个字。 

rep movesb (rep - repeat) 循环执行字节串传送指令。
 
rep movesw (rep - repeat) 循环执行字串传送指令。
 
cld (clear DF)  将DF置0。 

std (set DF)  将DF置1。
 
pushf (push flag)  将标志寄存器的值压栈。
 
popf (pop flag)  从栈中弹出数据送入标志寄存器。
评论次数(0)  |  浏览次数(502)  |  类型(默认类型) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码