How do you generate a random number in Assembly language using the FASM compiler?
Solution 1
You could use a Linear-Congruential Algorithm. Its the most common psuedo-random number algorithm.
Basically, you have a seed value. And then once you start generating random numbers each number becomes the seed for the new request.
The numbers are generated by
x = (a * s + b) MOD m
Where m, a and b are picked for the algorithm. There are some popular sets of these values used. Its a lot easier if you make m a power of 2, especially 2^32 for 32 bit machines. Then the mod step is done automatically by the machine.
Check out the wikipedia, they have popular sets of a, b and M and a lot more information.
There are more complicated things can be done with seeds as well (setting the seed based on the current time, for instance)
Solution 2
I'm a big fan of R250, being much faster to execute than LCG. http://www.ddj.com/184408549?pgno=7
Shows a significant increase in speed in the old assembly code I used to write back in the day.
Solution 3
Take a look at this Wikipedia page, pick an algorithm, and implement it.
Edit: Or you could take the easy route. Use your OS's C runtime and call their rand functions.
Admin
Updated on June 04, 2022Comments
-
Admin almost 2 years
I am really new to assembly and I'm trying to create a simple program. For this I need to generate a random number.
Anybody know how I can do this with the FASM compiler?