2012-12-23 40 views
0

我在学习masm32,我需要程序生成一个从0-9范围内的随机整数来与用户输入进行比较。如果我有一个整数,我没有问题。每次程序运行时,是否有一种简单的方法可以从上述范围内生成一个新的随机整数?masm32随机整数0-9

我知道有Irvine32库,但有没有办法做到这一点,而无需下载额外的库?

谢谢。

而且,这样的:

invoke GetTickCount 
invoke nseed, eax 
invoke nrandom, 10 
mov number, eax 

push offset number 
call StdOut 

给了我一些笑脸不是数字,是有办法使它工作吗?

+0

请参阅:http://stackoverflow.com/questions/8021772/assembly-language-how-to-do-modulo –

回答

0

由于使用MASM32,它包括文档它在库中的所有功能,所以RTFM!打开\ masm32 \ help并查看帮助文件!

为了在屏幕上显示一个数字,您需要先将该数字转换为其ASCII码等值。 ASCII“2”与2不相同。您可以在MASM32库dwtoa中指定自己的角色或使用DWORD到ASCII函数。

因此,使用该功能时,您的代码将成为:

invoke GetTickCount 
invoke nseed, eax 
invoke nrandom, 10 
invoke dwtoa, eax, offset lpszNumber 
invoke StdOut, offset lpszNumber 

凡lpszNumber在.data?节中定义为:当然 lpszNumber db 2 dup (?),使缓冲区大到足以容纳数和空终止符。 使用该代码,每次启动程序时,它都会生成0到9之间的随机数字,并转换为ASCII并打印到控制台。

除了包含MASM32中包含的功能文档之外,它还包含所有功能的源代码。打开\ masm32 \ m32lib,你可以看看代码,看看如何完成一切......你甚至可以修改自己的用途。

1

挑选结果从RTC或收集来自用户定时/输入熵,做一个简单的散列,产生的1个字节的随机数据,那么计算模10