能力值:
( LV9,RANK:170 )
2 楼
a=b-c
-----------------
你要区分两种情况:signed 和 unsigned
1. 当是 unsigned 的时候:
mov eax, a
sub eax, c
jc next // a < 0
... // a > 0
next:
...
2. 当 signed 的时候
mov eax, b
sub eax, c
jl next // a < 0
.... // a > 0
next:
...
能力值:
( LV9,RANK:170 )
3 楼
根据你的需求,你不需要做 sub, 只需做 cmp 就行了
能力值:
( LV12,RANK:270 )
4 楼
同上~~直接cmp + js,jns或je就可以了~~
能力值:
( LV9,RANK:170 )
5 楼
这你个 js, jns 和 je 表达不到 >, <, <= 以及 >= 这些逻辑关系
能力值:
( LV12,RANK:270 )
6 楼
讨论这个有意思嘛?只是举个例子而已,需要什么条件自己写就行了,难道我还要把所有可能的情况都罗列一遍?jcc三十多条指令,再与cmp,test组合,你嫌不累的话,可以都讲讲啊~~
能力值:
( LV9,RANK:170 )
7 楼
汗~
你能把 js,jns 顺手写来,作为比较结果,说明你不明白这些条件码的意义!
你要是连这一点都不接受,无话可说,到此为止
能力值:
( LV12,RANK:270 )
8 楼
好吧,我刚口气不太好,对汇编没有深入的研究,仅限于做逆向时接触的内容。
js和je是最好记的,分别根据SF和ZF标志位的值进行跳转。我的回答有问题吗?事实上只要判断大于或者小于0就好了,最后把je随手加上了,是为了将所有情况都考虑到~~
能力值:
( LV2,RANK:10 )
9 楼
c写好 F5 点反汇编 就看到了
能力值:
( LV9,RANK:170 )
10 楼
SF 与 OF 组合可以判断大小(符号数)
SF 与 ZF 组合不能判断大小,只等得到是否等于 的结果
--------------------------------
你的回答恰恰是不当的
能力值:
( LV2,RANK:10 )
11 楼
喔,明白你的意思了~谢谢!
不过,我不只要比较一对数相减的结果,而是好几对数。。。
比如说:
a= b-c
d=e-f
g=h-i
if a>0&&d>0&&g>0
{...}
elseif a>0&&d>0&&g<0
{....}
else
{...}
这样的话cmp怎么用了呢。。
能力值:
( LV12,RANK:270 )
12 楼
好吧~~是有无符号的问题吧~~我确实没有考虑这些~~
能力值:
( LV9,RANK:170 )
13 楼
复合条件,多做几次 cmp
能力值:
( LV2,RANK:10 )
14 楼
明白了,谢谢~
能力值:
( LV2,RANK:10 )
15 楼
有关这个问题我今天在书上找到了,《Windows环境下的32位汇编语言程序设计》的第五章里,讲解对话框程序Control的滚动条部分里面有讲~