引言
我们知道执行算数运算指令的时候,当结果的最高位与进位或者借位时会把状态寄存器FLAGS的CF位置为1,否则置为0,但是为什么INC和DEC这样的指令不影响CF标记位呢?
怀着对这个问题的疑惑,在CSDN查询未果后找到了几个高赞回答,遂记录以帮助后面有同样疑惑的朋友。
答:
- 因为指令系统设计人员考虑该指令主要用于对指针(即地址)进行增加,不存在进位问题,所以没有设计让INC影响进位标志CF。
- INC,DEC指令不影响CF标志位,这个是Intel规定的!其原因是硬件设计造成的,总之,对软件人员来制说不重要!
INC,DEC指令不影响CF标志bai位,这表明执行INC/DEC指令之后,CF不能反映进位情况
INC 0000000011111111
0000000011111111+1当然要进位,但不设置CF为1。
我们的问题就在于,将进位与CF等同
CF被称为进位标志位,在多数情况下,它确实反映进位情况,但不是绝对的,INC/DEC就是其中两例
INC/DEC指令不影响CF标志位,这句话就是明明白白地告诉你,此时,CF与进位无关
参考:
- http://www5.zzu.edu.cn/qwfw/info/1030/1727.htm
- https://zhidao.baidu.com/question/170829942.html?qbl=relate_question_2&srb=1&p_tk=6454AlbyAYtmDnb4rgJrtTNPpiM0uGisdtroH1u8Zoyp9tLfybbmRrlEbrFogL7lhI3gOs9WzaiVr0RiFMbmWYfLAxRlxLy5P%2FgMmBhVQaTnY8Y%3D&p_timestamp=1590929215&p_signature=cb3cf9309374d244b71f81dafdb662b0