如何在8086组件中生成一个随机数?
-
09-10-2019 - |
题
我想知道是否有例程或指令在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的伪随机数生成器感兴趣(其中一些是在汇编中写的) 这里.
不隶属于 StackOverflow