能力值:
( LV6,RANK:90 )
|
-
-
2 楼
我又来了
你的实现有问题,当lcmpstrA返回的不为0的时候,按理来说这个函数要返回0,但你的方法就不会返回0吧
|
能力值:
( LV9,RANK:180 )
|
-
-
3 楼
lstrcmp 不是只会传回 0 ' 1
而是 正数 ' 零 ' 负数 三种
上面的写法可使得 只有 EAX=零 时, 才能 ret EAX=1
EAX= 正数 or 负数 时 , ret EAX=0
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
膜拜ls大牛,我不敢要分了
|
能力值:
( LV9,RANK:180 )
|
-
-
5 楼
6 ' 4 分帐
|
能力值:
( LV9,RANK:610 )
|
-
-
6 楼
谁6谁4啊?
晕
我好像懂了
eax作为strcmp的返回值
当eax=0时 要返回1
当eax为其他时 要返回0
我的逻辑是错误的
但是有一点不懂,那个neg是干嘛的 去掉 neg eax这句不也很完美吗?
|
能力值:
( LV9,RANK:180 )
|
-
-
7 楼
neg 是为了要设 CF 旗号
因为 sbb 指令是 A - B - CF
sbb eax, eax => 0 - CF
|
能力值:
( LV9,RANK:610 )
|
-
-
8 楼
懂了 膜拜2位 大牛! 5,5分吧 万一你们俩打架多不好!
|
能力值:
( LV9,RANK:180 )
|
-
-
9 楼
ok
123
|
能力值:
( LV9,RANK:610 )
|
-
-
10 楼
补充点汇编基础知识吧
neg指令详细解释
规则:1. neg reg (对寄存器操作)
2. neg mem(对内存操作)
作用:将目的操作数的所以数据位取反加1
影响的标志:进位标志(CF),零标志(ZF),符合标志(SF),溢出标志(OF),辅助进位标志(AF),奇偶标志(PF)
当操作数为0时,置CF位为0
当操作数不为0时,置CF位为1
sbb指令
sbb a,b => a=a-b-CF
所以对开始那段反汇编的解释就是这样的:
先neg一下,
①如果是eax = 0
则CF=0
sbb eax,eax后 eax=0
inc eax后 eax =1
最后eax=1,返回1
②如果eax !=0,
则CF=1
sbb eax,eax后eax=0xFFFFFFFF
inc eax后eax=0
最后eax=0,返回0
连接: http://hi.baidu.com/blueapple_c/blog/item/e795492bf89db2335243c1f7.html
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
哦。Apple兄这个问题很好,我有些茅塞顿开了
|
能力值:
( LV9,RANK:610 )
|
-
-
12 楼
能对你有帮助,我很开心,哈哈。。。
|
能力值:
( LV9,RANK:180 )
|
-
-
13 楼
你是女生 ?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
大哥眼力不错
|
能力值:
( LV9,RANK:610 )
|
-
-
15 楼
请喊我美女!
ps. S大是我妹妹 ,虽然没我俊。。。
Go on ps:为什么在我的笔记本上看我的头像挺正常的,在公司这个CRT显示器上怎么就这么黑?
|
能力值:
( LV9,RANK:180 )
|
-
-
16 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
哇塞,又发现一个美女~~
|
能力值:
( LV9,RANK:610 )
|
-
-
18 楼
咳咳。。。不能再水了昂
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
1.你的笔记本太亮了。
2.你公司的笔记本太暗了。
3.你不给我加分。
4.人品问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
感谢解答 我也懂了
|
|
|