How to generate a random number in 8086 assembly?

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-19 11:27:27

问题


I want to know if there a routine or an instruction to generate a random number using assembly on 8086. any help will be appreciated.


回答1:


The most common way is to use the timestamp. In 32 bit mode it can be done by rdtsc instruction, in 16 bit mode: by using function 0 of BIOS interrupt 1A.

Because it's a timestamp, avoid using it frequently (because of lack of proper dispersion), and use it as seed for an pseudo-random number generator. When you need just one random value, you can use the timestamp directly.

Usually a simple pseudo-random number generator is enough:

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

And there is also wiki




回答2:


There is a good answer to this exact question on Yahoo! Answers:

I suspect the point here is to learn to write assembly language. Here's the instruction set (http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html) You have all the instructions you need to perform the equation you need to generate pseudo-random numbers except the 'mod' instruction, which you'll have to write a subroutine for. Pay particular attention to the limitations on the MUL and DIV instructions. "store in a separate file" isn't implicit in the instruction set. You'll have to better understand what's wanted here. "File" and "Print" are concepts related to operating system; they're forms of output in this case.

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




回答3:


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



来源:https://stackoverflow.com/questions/4376102/how-to-generate-a-random-number-in-8086-assembly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!