-
-
[求助]请教一个产生随机数的问题
-
发表于:
2011-12-17 01:39
4613
-
以前一直用VC的rand()函数。但是因为一些需要,要求用VC内嵌汇编的方式用汇编实现一个随机数的产生。网上搜,找到一个
RAND PROC
PUSH CX
PUSH DX
PUSH AX
STI
MOV AH,0 ;读时钟计数器值
INT 1AH
MOV AX,DX ;清高6位
AND AH,3
MOV DL,101 ;除101,产生0~100余数
DIV DL
MOV BL,AH ;余数存BX,作随机数
POP AX
POP DX
POP CX
RET
RAND ENDP
这是汇编的,我写成VC的
DWORD funcRand()
{
DWORD dwRet=0;
__asm
{
PUSH CX
PUSH DX
PUSH AX
STI
MOV AH,0//读时钟计数器值
INT 0x1A
MOV AX,DX//清高6位
AND AH,0x3
MOV DL,0x101//除101,产生0~100余数
DIV DL
MOV BL,0xA//余数除BX,做随机数
MOV dwRet,EBX
POP AX
POP DX
POP CX
}
return dwRet;
}
可是执行到INT 0X1A时就出错了,请问应该怎么改呢?本人新手,望各位高手指点
其实在寻找一个用汇编实现的最快的产生随机数的方法,上面这个方法,我感觉可能比起rand()未必快。
其实我这个帖子的问题准确的说应该是,在VC中,不管是使用汇编的方式还是其他什么方式,有没有取随机数的方式比rand函数快的?
[课程]FART 脱壳王!加量不加价!FART作者讲授!