注册 登录
编程论坛 汇编论坛

汇编sub a, b是a>b,有进位还是b>a有进位?

szchina 发布于 2012-08-17 18:26, 1296 次点击
求助:汇编sub a, b是a>b,有进位还是b>a有进位?JC在那种情况跳转?
20 回复
#2
zklhp2012-08-17 19:01
看手册罢

sub a,b 是a-b

JC是进位罢
#3
爱末流2012-08-17 20:22
SUB A,B
A-B 如果A<B 则CF=1 A的最高位有借位,如果A是8位的变量则是第7位从0开始数如果是16位,则是第15位有借位
 ,A>B CF=0    在ZF=0 的情况下  ZF=0表示结果不为0    SUB 和 CMP 的原理大致相同。只是CMP修改任何操作数,只是根据结果来置状态标志位
#4
爱末流2012-08-17 20:24
SUB A,B
JC 跳转,CF=1 的时候跳转。 也就是A-B的时候,A最高有借位的时候跳转
#5
szchina2012-08-17 20:29
回复 3楼 爱末流
A-B 如果A<B ,CF不是应该等于0吗?
#6
有容就大2012-08-17 20:29
B DA JIU TIAO
#7
szchina2012-08-17 20:29
回复 4楼 爱末流
A-B 如果A》B ,CF不是应该等于1吗?
#8
szchina2012-08-17 20:30
回复 6楼 有容就大
A-B 如果A>B ,CF不是应该等于1吗?
#9
有容就大2012-08-17 20:36
以下是引用szchina在2012-8-17 20:30:12的发言:

A-B 如果A>B ,CF不是应该等于1吗?

书上有说吧 CF标志位当做加法产生进位时置1,否则置0.做减法需要借位也就是不够减(a < b)时置1,否则置0.
没看书吗 书上说的很清楚啊 推荐你看王爽的那本16位汇编 嘿嘿 和俺一起学习。
#10
szchina2012-08-17 20:37
回复 3楼 爱末流
SUB A,B
A-B  如果A<B   假设A=0110,B=1100。0110-1100在计算机里的操作是0110+0011+1=1010,根本没有进位,CF应该为0呀?

A-B  如果A>B   假设A=1100,B=0110。1100-0110在计算机里的操作是1100+1001+1=10110,最高位的1就应该是进位。CF应该为1呀?
#11
szchina2012-08-17 20:38
回复 9楼 有容就大
看什么书,来实践操作。

SUB A,B
A-B  如果A<B   假设A=0110,B=1100。0110-1100在计算机里的操作是0110+0011+1=1010,根本没有进位,CF应该为0呀?

A-B  如果A>B   假设A=1100,B=0110。1100-0110在计算机里的操作是1100+1001+1=10110,最高位的1就应该是进位。CF应该为1呀?
#12
zklhp2012-08-17 20:39
sub不是减么
#13
szchina2012-08-17 20:44
回复 12楼 zklhp
是减呀! 经常看到你,呵呵。
看我举的例子:

SUB A,B
A-B  如果A<B   假设A=0110,B=1100。0110-1100在计算机里的操作是0110+0011+1=1010,根本没有进位,CF应该为0呀?

A-B  如果A>B   假设A=1100,B=0110。1100-0110在计算机里的操作是1100+1001+1=10110,最高位的1就应该是进位。CF应该为1呀?
#14
pangding2012-08-17 20:47
不查书不知道,我早忘光了。除了 CF 还有 OF 之类的呢吧,减法好像挺复杂的。
#15
szchina2012-08-17 21:03
回复 14楼 pangding
你大几?
#16
爱末流2012-08-17 21:12
回复 7楼 szchina
A>B cf=0 为什么CF=0呢?
比如 A=0111  B=1111
     0111      ;A的最高位为0 不够减  则必须像它的更高位借1当2(这个更高的位就是在0的前面的位,假想的更高位)  这时候CF=1 反应A的最高位有借位   
     1111      ;1111=0f  
     -----
     1000      
     ;这只是一个比喻的例子。
#17
爱末流2012-08-17 21:25
回复 13楼 szchina
貌似sub 不是使用add 来实现减法操作的吧。虽然计算机硬件系统 里面有多是使用add实现减法的操作的。
#18
pangding2012-08-17 22:00
以下是引用szchina在2012-8-17 21:03:59的发言:

你大几?

都毕业了。我就是和 zklhp 一起扳砖的。

我试试了一下,反正是不够减的就借位了,cf 就会等于 1。
sub 即使是用 add 实现的,作完加法之后,芯片也有可能会再去调整标识位。只要记住结论就行了。
#19
pangding2012-08-17 22:01
单纯比大小的话不是还有 cmp 这个指令吗?
#20
信箱有效2012-08-17 22:02
楼主你是哥哥还是妹妹,你大几了呀,你在哪儿上学呀,你今年多大了呀,如果是妹妹,那你有男朋友了没呀,晚上还在看书学习呀
#21
有容就大2012-08-17 22:04
回复 11楼 szchina
建议美女去看下 王爽汇编第2版 第11章 第4小节 CF标志
嘿嘿 注意CF标志是针对无符号数操作有效的。
1