2 maoxunxing maoxunxing 于 2014.12.10 22:44 提问

关于汇编条件码设置问题

书中写到,逻辑操作xorl,进位标志和溢出标志会设置为0.对于移位操作,进位标志设置为
最后一个被移除的位,而溢出标志设置为0.

这个设置是约定的?

3个回答

eagleyan
eagleyan   Rxr 2014.12.11 05:08
已采纳

是的,是约定的,但是约定的合理
xorl本来就是二进制操作,不应该有溢出和进位标志位。
而移位操作,最后移除的位表示最高位,当然合理作为进位标志。

caozhy
caozhy   Ds   Rxr 2014.12.11 01:13

指令的作用,这个在手册上写的很明确。这当然是约定。

关于每个指令的权威说明,参考Intel的开发者手册:http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-manual-325462.html

caozhy
caozhy   Ds   Rxr 2014.12.11 00:01

你说的是汇编,不是C语言,C语言哪里有“进位标志”

maoxunxing
maoxunxing 没注意 谢谢提醒
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
32位汇编语言学习笔记(6)--设置条件码
 条件码保存在条件码寄存器中,用于描述算术和最近逻辑操作的属性。最常用的条件码有: CF:进位标志。 ZF:零标志。 SF:符号标志。 OF:溢出标志。   算术和逻辑操作指令都会修改条件码的值,但是leal指令不会修改条件码的值。 此外,cmp指令和test指令也会修改条件码。 cmp S2, S1 将S1-S2的结果与0进行比较,分别
汇编语言——访问条件码
条件码的三种使用方法 条件码通常不会直接读取,有三种使用方法: (1)根据条件码的某个有意义的组合或者逻辑操作后的结果将某个字节设置为0或者1 (2)跳转指令可以以条件码为条件进行跳转 (3)可以有条件的传送数据 第一种情况有一类指令为set指令:这类指令的区别在于条件码的逻辑操作的不同 指令 同义名 效果 设置条件 sete D setz D 相等/零 se
arm汇编条件码
操作码  条件码助记符  标志  含义  0000  EQ  Z=1  相等  0001  NE(Not Equal)  Z=0  不相等  0010  CS/HS(Carry Set/High or Same)  C=1  无符号数大于或等于  0011  CC/LO(Carry Clear/LOwer)  C=0  无符号数
汇编语言——条件码 CF ZF SF OF
除整数寄存器外,CPU还维护着一组单个位的条件码寄存器 这些寄存器保存着最近算术或者逻辑操作所产生的一些效果 列如: 逻辑操作的1 或者0  有符号数的结果是否溢出 等 CF(carry flag):进位标志 描述了最近操作是否发生了进位(可以检查无符号操作是否溢出) ZF(zero flag):零标志 最近操作结果为0(列如 逻辑操作 等) SF(sign flag):符号标
8086汇编中的条件码,控制标志位
转自:看雪论坛 条件码: ①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。 ②SF(Sign Flag)符号标志。结果为负时置1,否则置0. ③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0. ④CF(Carry Flag)进位标志,进位时置1,否则置0. ⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位
汇编里的条件编译问题
原程序里包含c 程序和汇编程序,,如何利用c程序的变量值实现汇编文件的条件汇编????
ARM条件码与CPSR标志位的关系——cmp MOVLS与MOVHI 指令
今天看到CMP,代码如下 MOV R0, #5 MOV R1, #6 CMP R0, R1 MOVLS R2, R0 ; if R0 有个MOVLS与MOVHI 很是不解,经过查资料,原来是ARM条件码与CPSR标志位的关系。   CPSR中的Z, C, N, V标志位:          l          0000 = EQ - Z set (equal) l
ARM指令-条件执行及标志位
ARM指令-条件执行及标志位
ARM 汇编指令学习:[0]编码格式与条件码域
ARM 汇编指令学习[0]:编码格式与条件码域一、ARM指令的编码格式 31 28 27 21 20 19 16 15 12 11     0 cond opcode S Rn Rd shifter_operand 其中: cond [31-28] 4-bit 指令执行的条件编码 opcode [27-21] 4-bit 指令操作符编码 S [20]
testl指令的问题
testl指令,这个指令说是将两个操作数做与来设置零标志位和负数标识,常用的方法是testl %eax,%eax来检查%eax是正数负数还是0; 标志位通过结果值来设置.%eax = %eax & %eax; 不改变%eax通过testl %eax,%eax却可以设置或者清除一些标志,以便实现分支结构 总结:test语句是根据上次计算结果的性质设置相应的状态码(condition code)