如何在8086汇编中生成一个随机数?

时间:2010-12-07 11:28:04

标签: assembly x86-16 microprocessors

我想知道是否存在使用汇编生成随机数的例程或指令 在8086年。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

最常用的方法是使用时间戳。在32位模式下,可以通过rdtsc指令在16位模式下完成:使用BIOS中断1A的功能0。

因为它是时间戳,所以请避免经常使用它(因为缺乏适当的色散),并将其用作伪随机数发生器的种子。当您只需要一个随机值时,可以直接使用时间戳。

通常一个简单的伪随机数生成器就足够了:

static int seed = now();
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2;

还有wiki

答案 1 :(得分:1)

对雅虎这个确切的问题有一个很好的答案!回答:

  

我怀疑这里的重点是要学习   编写汇编语言。这是   指令系统   (http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html)   您拥有所需的所有说明   执行你需要的等式   生成伪随机数,除了   'mod'指令,你会   必须写一个子程序。工资   特别注意   对MUL和DIV的限制   说明。 “分开存放   文件“不隐含在   指令系统。你必须做得更好   了解这里想要什么。 “文件”   和“打印”是与之相关的概念   操作系统;他们是形式的   在这种情况下输出。

     

来自http://answers.yahoo.com/question/index?qid=20081030112909AAmjEsp

答案 2 :(得分:0)

您可能对Agner Fog的伪随机数生成器(其中一些是用汇编语言编写)here感兴趣。