汇编学习之二:cf zf 操作标记位

除整数寄存器外,CPU还维护着一组单个位的条件码寄存器

这些寄存器保存着最近算术或者逻辑操作所产生的一些效果 列如:

逻辑操作的1 或者0 

有符号数的结果是否溢出 等

CF(carry flag):进位标志 描述了最近操作是否发生了进位(可以检查无符号操作是否溢出)

ZF(zero flag):零标志 最近操作结果为0(列如 逻辑操作 等)

SF(sign flag):符号标志最近操作结果为负数

OF(overflow flag):溢出标志最近操作导致一个补码溢出 补码溢出通常有两种结果(正溢出或者负溢出)

逻辑操作会将进位标志和溢出标志设置为0  (只是逻辑操作不会发生进位和溢出)

 对于移位操作,进位标志会设置为最后移出的位,而溢出标志会设置为0

INC DEC指令会设置溢出标志和零标志,但是不会改变进位标志

了解条件码之后出现两类指令 仅仅设置条件码不会改变其他的寄存器 (其保存操作数的寄存器都不会改变  仅仅进行测试)

CMP A,B    操作 B-A (除不更新目标寄存器外 CMP和SUB的行为是一样的)

CMPB  A, B

CMPW  A, B

CMPL  A, B 

TEST A,B 操作 B&A (除不更新目标寄存器外 TEST和AND的行为是一样的)

TESTB  A, B

TESTW  A, B

TESTL A, B

例(cmp):

movw $0x0FFF, %ax

movw $1,%bx

cmpw %ax, %bx

这时会设置符号标志 但是%bx中的值还是$1


--------------------- 
作者:河里一只虾 
来源:CSDN 
原文:https://blog.csdn.net/qq_34717555/article/details/77727176 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值