参考了《汇编语言 基于x86处理器》第七版
转载请注明出处
如果有错误的地方请指正,谢谢。
- 有符号:
两数相加,如果超过有符号数最大取值范围时(如8位有符号数大于127),OF置位。 - 无符号:
两数相加,如果超过无符号数最大取值范围时(如8位无符号数最大取255)CF置位。
根据目标操作数修改:OF/CF/ZF/SF/AF/PF
示例:-128-1执行后,CF标志位与OF标志位分别是多少? CF=0 OF=1
- 有符号:
两数相减,如果超过有符号数最小取值范围时(如8位有符号数小于-128),OF置位。 - 无符号:
两数相减,如果被减数小于减数,CF置位。
根据目标操作数修改:OF/CF/ZF/SF/AF/PF
示例:-128+1执行后,CF标志位与OF标志位分别是多少? CF=0 OF=0
- NEG是汇编指令中的求补指令,NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1。
- 对任何非0的操作数使用NEG指令都将CF置位。
- 根据目标操作数修改:CF/OF/ZF/SF/AF/PF
- 不影响进位标志位,根据目标操作数修改溢出标志位、符号标志位、奇偶标志位、零标志位,辅助进位标志位。 OF/SF/PF/ZF/AF
- 不影响进位标志位,根据目标操作数修改溢出标志位、符号标志位、奇偶标志位、零标志位,辅助进位标志位。 OF/SF/PF/ZF/AF
布尔指令:AND/OR/NOT/XOR/TEST
- 清除进位标志位和溢出标志位,根据目标操作数修改符号标志位、奇偶标志位、零标志位,辅助进位标志位无定义。 SF/PF/ZF
- 清除进位标志位和溢出标志位,根据目标操作数修改符号标志位、奇偶标志位、零标志位,辅助进位标志位无定义。 SF/PF/ZF
- 不修改标志位
- 清除进位标志位和溢出标志位,根据目标操作数修改符号标志位、奇偶标志位、零标志位,辅助进位标志位无定义。 SF/PF/ZF
- 清除进位标志位和溢出标志位,根据目标操作数修改符号标志位、奇偶标志位、零标志位,辅助进位标志位无定义。 SF/PF/ZF
移位指令:逻辑移位(SHL/SHR)、算术移位(SAL/SAR)、循环移位(ROL/ROR)、带进位的循环移位(RCL/RCR)、双精度移位(SHLD/SHRD)
- 进位标志位为移入CF的位
- 根据目标操作数修改溢出标志位、符号标志位、零标志位、奇偶标志位,辅助进位标志位无定义。 CF/OF/SF/ZF/PF
- 进位标志位为移入CF的位
- 根据目标操作数修改溢出标志位、符号标志位、零标志位、奇偶标志位,辅助进位标志位无定义。 CF/OF/SF/ZF/PF
- 进位标志位为移入CF的位
- 移位次数等于1时:
如果移位后的符号与移位前的符号相反,溢出标志位置位。 - 移位次数大于1时:
溢出标志位无定义。
- 不修改符号标志位、零标志位、奇偶标志位、辅助进位标志位。
- 进位标志位为移入CF的位
- 移位次数等于1时:
如果移位后的符号与移位前的符号相反,溢出标志位置位。 - 移位次数大于1时:
溢出标志位无定义。
- 不修改符号标志位、零标志位、奇偶标志位、辅助进位标志位。
- 进位标志位为移入CF的位
- 根据目标操作数修改溢出标志位、符号标志位、零标志位、奇偶标志位,辅助进位标志位无定义。
CF/OF/SF/ZF/PF
包括无符号乘法(MUL)、有符号乘法(IMUL)、无符号除法(DIV)、有符号除法(IDIV)
- 如果乘积的高半部分不为0则进位标志位、溢出标志位置位。
也就是说运算结果超过无符号数最大取值范围(如8位无符号数大于255),则进位标志位、溢出标志位置位。 - 符号标志位、零标志位、辅助进位标志位、奇偶标志位无定义。
单操作数
- 如果乘积的高半部分不是低半部分符号位的扩展,那么进位标志位、溢出标志位置位。
- 也就是说运算结果不在8位有符号数取值范围内(如8位有符号数取值:-27 ~ 27-1),进位标志位、溢出标志位置位。
- 符号标志位、零标志位、辅助进位标志位、奇偶标志位无定义。
双操作数
- 按照目标操作数的大小来截取乘积,如果被丢弃的是有效位,那么进位标志位、溢出标志位置位。
- 也就是说运算结果不在8位有符号数取值范围内(如8位有符号数取值:-27 ~ 27-1),进位标志位、溢出标志位置位。
- 符号标志位、零标志位、辅助进位标志位、奇偶标志位无定义。
三操作数
同双操作数
执行DIV或IDIV后,所有算术运算状态标志位的值都不确定。
执行DIV或IDIV后,所有算术运算状态标志位的值都不确定。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/11814.html