阅读:10156回复:5
汇编指令JB和JL有什么区别?
两条指令不都是小于就跳转么?为什么非要设两条相同的?
|
|
沙发#
发布于:2007-10-15 11:33
刚刚查了下,JB用于无符号计算,JL用于有符号计算. JB的测试条件CF=1 ; JL的测试条件是SF不等于OF??? 这个又如何理解?
|
|
板凳#
发布于:2007-10-16 10:35
举个例子
对于-1 = 0xffffffff, 1=0x01 如果-1和1比较那么是jl,显然1大 如果0xffffffff和0x1比较那么是0x1使用jb,显然0xffffffff大 c语言描述 int a = -1; int b = 1; if(a > b) printf("a > b\n"); esle 显然 a < b // unsigned int a = (unsigned int) -1; un |
|
地板#
发布于:2007-10-16 10:38
int a = -1;
int b = 1; if(a < b) // jl printf("a < b\n"); esle printf("a > b\n"); 打印结果a < b unsigned int a = (unsigned int) -1; unsigned int b = (unsigned int) 1; if(a < b) // jb printf("a < b\n"); esle printf("a > b\n"); 打印结果a > b |
|
地下室#
发布于:2007-10-16 10:43
-1 - 1 = -2
上面的计算式在计算机内部表现为 0xffffffff - 0x00000001 = 0xfffffffe 那么没有进(借)位,但是符号位1 也就是jb判断大于零,jl判断小于零 也就是0xffffffff > 0x00000001但是-1 < 1 |
|
5楼#
发布于:2007-10-16 13:24
非常感谢楼上的回答。
|
|