版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
汇编语言专栏收录该内容
3 篇文章0 订阅
订阅专栏
引言
我们知道执行算数运算指令的时候,当结果的最高位与进位或者借位时会把状态寄存器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与进位无关
参考:
https://zhidao.baidu.com/question/170829942.html?qbl=relate_question_2&srb=1&p_tk=6454AlbyAYtmDnb4rgJrtTNPpiM0uGisdtroH1u8Zoyp9tLfybbmRrlEbrFogL7lhI3gOs9WzaiVr0RiFMbmWYfLAxRlxLy5P%2FgMmBhVQaTnY8Y%3D&p_timestamp=1590929215&p_signature=cb3cf9309374d244b71f81dafdb662b0
收藏
一键三连
扫一扫,分享海报
专栏目录
Why do the x86 instruction INC (increment) andDEC (decrement) not affect theCF (carry flag) in FLAGSREGISTER?解决方案To understand why you probably need to remember the current "x86" CPUs with 32 and 64...
07-14
1万+
加1指令 INC指令功能:目标操作数+1INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数。INC指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位。INC指令的操作数的类型可以是通用寄存器或存储单元,但不可以是段寄存器。字或字节操作均可。对于存储单元,需要用BYTE PTR或者WORD PTR说明是字节还是字操作。 转载于:https://www.cnb...