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

有帮助吗?

解决方案

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

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

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

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

还有 维基

其他提示

关于Yahoo!的确切问题有一个很好的答案!答案:

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

http://answers.yahoo.com/question/index?QID=20081030112909AAMJESP

您可能对Agner Fog的伪随机数生成器感兴趣(其中一些是在汇编中写的) 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top