开发者

How to generate a random number in 8086 assembly? [duplicate]

开发者 https://www.devze.com 2023-01-29 19:55 出处:网络
This question already has answers here: 8086 random number generator (not just using the system time)?
This question already has answers here: 8086 random number generator (not just using the system time)? (2 answers) 开发者_Go百科 Closed 9 months ago.

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.


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


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


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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号