汇编语言标志寄存器CF标志

 
  对于位数为 N 的无符号数来说,其对应的二进制信息的最高位,即第 N-1 位,就是它的最高有效位,而假想存在的第 N 位,就是相对于最高有效位的更高位。如图11.2所示

511遇见

我们知道,当两个数据相加的时候,有可能产生从最高有效位向更高位的进位。比如,两个8位数据:98H十98H,将产生进位。由于这个进位值在8位数中无法保存,我们在前面的课程中,就只是简单地说这个进位值丢失了。其实CPU在运算的时候,并不丢弃这个进位值,而是记录在一个特殊的寄存器的某一位上。8086CPU就用flag的CF位来记录这个进位值。比如,下面的指令:

  mov al,98h
  add al,al  ;执行后:(al)=30h,CF=1,CF 记录了从最高有效位向更高有效位的进位置
  add al,al  ;执行后:(al)=60h,CF=0,CF 记录了从最高有效位向更高有效位的进位置

而当两个数据做减法的时候,有可能向更高位借位。比如,两个8位数据:97H-98H,将产生借位,借位后,相当于计算197H-98H。而flag的CF位也可以用来记录这个借位值。比如,下面的指令:

  mov al,97h
  sub al,98h  ;执行后,(al)=ffh,CF=1,CF 记录了向更高位的借位值。
  sub al,al  ;执行后,(al)=0,CF=0,CF 记录了向更高位的借位值。

发布日期:

所属分类: 编程 标签:  


没有相关文章!