Random masm32随机整数0-9

Random masm32随机整数0-9,random,integer,masm32,Random,Integer,Masm32,我正在学习masm32,我需要程序生成一个范围为0-9的随机整数,与用户输入进行比较。若我有一个整数,我在比较上并没有问题。是否有一种简单的方法可以在每次程序运行时从所述范围生成一个新的随机整数 我知道有Irvine32库,但是有没有一种不用下载额外库的方法呢 谢谢 此外,这: invoke GetTickCount invoke nseed, eax invoke nrandom, 10 mov number, eax push offset number call StdOut 给我一些

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

我知道有Irvine32库,但是有没有一种不用下载额外库的方法呢

谢谢

此外,这:

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

push offset number
call StdOut

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

从RTC中选择结果或从用户计时/输入中收集熵,做一个简单的散列,生成1字节的随机数据,然后计算mod 10

,因为您使用的是MASM32,它在库中包含所有函数的文档,所以RTFM!!!打开\masm32\help并查看帮助文件

为了在屏幕上显示一个数字,您需要首先将该数字转换为其ASCII等效值。ASCII“2”与2不同。您可以自己扮演角色,也可以在名为dwtoa的MASM32库中使用DWORD to 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,您可以查看代码以了解所有操作是如何完成的。。。您甚至可以修改以供自己使用。

请参阅: