CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

如何用汇编程序实现随机数的产生?

楼主uglystone(丑石)2004-12-01 22:35:24 在 其他开发语言 / 汇编语言 提问

要求简单,给出原代码 问题点数:20、回复次数:6Top

1 楼wangziz(zi)回复于 2004-12-01 23:01:30 得分 4

Random:    
      push   eax    
      db   0Fh,   031h   ;EAX=随机数    
      xor   edx,   edx    
      div   dword   ptr   [esp+8];EAX/种子    
      pop   eax    
      ret   4    
   
  Top

2 楼wangziz(zi)回复于 2004-12-01 23:06:33 得分 6

Random   PROC     Seed:   DWORD         ;返回值在eax中。                                        
      mov       eax   ,   12345678h    
      _GetTickCount     =   dword   ptr   $-4    
      call     eax                    
      xor       edx   ,   edx  
      div       Seed  
      xchg     edx   ,   eax         ;需要的是余数,在edx中。                    
      ret       4  
  Random       ENDPTop

3 楼uglystone(丑石)回复于 2004-12-02 21:40:44 得分 0

大哥  
  解释一下好吧!  
  Top

4 楼wangziz(zi)回复于 2004-12-03 11:23:59 得分 2

利用时间除以种子得到的余数作为随机数  
  Top

5 楼sunrui(sunrui)回复于 2004-12-03 15:31:09 得分 2

关于伪随机数算法有现成的公式,可以到网上搜搜。可以对C运行库中的随机数生成函数进行反汇编分析。Top

6 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-04 20:10:34 得分 6

Random32     PROC  
  .data  
  seed     DWORD   1  
  .code  
      push     edx  
      mov       eax,   343FDh  
      imul     seed  
      add       eax,   269EC3h  
      mov       seed,   eax         ;   save   the   seed   for   the   next   call  
      ror       eax,8                 ;   rotate   out   the   lowest   digit   (10/22/00)  
      pop       edx  
   
      ret  
  Random32     ENDP  
   
  ;--------------------------------------------------------  
  Randomize   PROC  
      pushad  
   
      INVOKE   GetSystemTime,OFFSET   sysTime  
      movzx   eax,sysTime.wMilliseconds  
      mov       seed,eax  
   
      popad  
      ret  
  Randomize   ENDP  
  ;--------------------------------------------------------  
   
  第二个子程序调用系统时间初始化种子,第一个子程序产生随机数!当然伪随机数算法可以多种多样的!反正我们不是要求非常严格的随机数。Top

相关问题

  • 如何实现读懂汇编程序(简单的)到写汇编程序的转变!?
  • #########急需一个汇编程序实现关机的功能############
  • 汇编程序
  • 请问oracle中怎样实现产生随机数(300分)
  • 如何实现随机数
  • 如何产生随机数?
  • 如何产生随机数???
  • 怎样产生随机数?
  • 怎么产生随机数?
  • 要产生以某些数据开始的随机数,怎么可以实现?

关键词

  • 随机数
  • edx
  • eax
  • seed
  • endp
  • randomize
  • proc
  • mov
  • dword

得分解答快速导航

  • 帖主:uglystone
  • wangziz
  • wangziz
  • wangziz
  • sunrui
  • jk88811

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo