1

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

4

3 回答 3

2

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

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

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

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

还有wiki

于 2010-12-07T11:34:07.373 回答
1

在 Yahoo! 上对这个确切的问题有一个很好的答案!答案:

我怀疑这里的重点是学习编写汇编语言。这是指令集(http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html)您拥有执行生成伪随机数所需的方程式所需的所有指令,除了“mod”指令,您必须写一个子程序。请特别注意 MUL 和 DIV 指令的限制。“存储在单独的文件中”在指令集中并不隐含。你必须更好地理解这里想要什么。“文件”和“打印”是与操作系统相关的概念;在这种情况下,它们是输出形式。

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

于 2010-12-07T11:34:46.193 回答
0

You might be interested in Agner Fog's pseudo random number generators (some of which are written in assembly) here.

于 2010-12-08T07:57:56.230 回答