How to generate a random number in 8086 assembly?

后端 未结 3 975
误落风尘
误落风尘 2021-01-15 23:01

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.

相关标签:
3条回答
  • 2021-01-15 23:24

    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

    0 讨论(0)
  • 2021-01-15 23:32

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

    0 讨论(0)
  • 2021-01-15 23:36

    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

    0 讨论(0)
提交回复
热议问题