【发布时间】:2010-12-07 11:28:04
【问题描述】:
我想知道是否有使用汇编生成随机数的例程或指令 在 8086 上。 任何帮助将不胜感激。
【问题讨论】:
标签: assembly x86-16 microprocessors
我想知道是否有使用汇编生成随机数的例程或指令 在 8086 上。 任何帮助将不胜感激。
【问题讨论】:
标签: assembly x86-16 microprocessors
最常用的方法是使用时间戳。 32位模式下可以通过rdtsc指令完成,16位模式下:使用BIOS中断1A的函数0。
因为它是一个时间戳,请避免频繁使用它(因为缺乏适当的分散性),并将其用作伪随机数生成器的种子。当只需要一个随机值时,可以直接使用时间戳。
通常一个简单的伪随机数生成器就足够了:
static int seed = now();
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2;
还有wiki
【讨论】:
在 Yahoo! 上对这个确切的问题有一个很好的答案!答案:
我怀疑这里的重点是学习 编写汇编语言。这是 指令系统 (http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html) 你有你需要的所有说明 执行你需要的方程 生成伪随机数,除了 'mod' 指令,你将 得写一个子程序。支付 特别注意 MUL 和 DIV 的限制 指示。 “单独存放 文件”并不隐含在 指令系统。你必须做得更好 了解这里想要什么。 “文件” 和“打印”是相关的概念 操作系统;它们是 在这种情况下输出。
来自http://answers.yahoo.com/question/index?qid=20081030112909AAmjEsp
【讨论】:
您可能对 Agner Fog 的伪随机数生成器感兴趣(其中一些是用汇编语言编写的)here。
【讨论】: