您的位置:程序门 -> 其他开发语言 -> 汇编语言



这段代码实现了什么功能?谢了


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


这段代码实现了什么功能?谢了
发表于:2007-08-09 17:47:47 楼主
getrand:  
push   ecx  
push   edx  
mov   eax,[offset   rand   +   ebx]  
xor   edx,edx  
mov   ecx,7fffffff  
mul   ecx                   ;乘这个数有什么作用?
inc   eax  
mov   ecx,0fffffffbh  
div   ecx                   ;除这个数呢?
mov   eax,edx  
mov   [offset   rand   +   ebx],eax  
pop   edx  
pop   ecx  
ret  
这段代码大体知道是取一个数,乘以一个7fffffff,然后结果加1,再除一个数,把余数再放到原来那个地方.
是不是这样?可是这样做是为了什么?那位高手看看,谢过!  
发表于:2007-08-09 19:04:451楼 得分:0
就是random,
输入ebx是一个最大范围,生成> =0, <ebx的一个随机数在eax中。
rand是一个事先初始化的随机种子。
发表于:2007-08-09 19:35:082楼 得分:0
喔,学习啦^-^
发表于:2007-08-10 11:29:153楼 得分:0
还是不是很明白,我给rand赋值0ah(10),最后出来时结果是10h(16),好象没有起到随机的作用,
而且ebx是重定位作用的,在这段代码里应该没有用.

请高手再解释一下....
发表于:2007-08-11 17:03:044楼 得分:0
看代码应该就是random。
不过从这句看mov   eax,[offset   rand   +   ebx],
rand应该是一个表,而不是一个整数之类的值,而ebx是作为一个索引传入的。
这样的话,ebx的值应该是受限的,否则表就太大了。
姑且假定ebx限定为0..255,那么rand表有256项。
最终就是应该是生成一个0.255之间的随机数。
你能否把rand的定义和初始化部分贴上来?



快速检索

最新资讯
热门点击