我正在学习masm32,我需要程序生成0-9范围内的随机整数,以便与用户输入进行比较。如果我有一个整数,我对比较没有问题。是否有一种简单的方法可以在每次运行程序时从所述范围生成一个新的随机整数?
我知道有Irvine32库,但有没有办法在不必下载额外库的情况下完成它?
感谢。
另外,这个:
invoke GetTickCount
invoke nseed, eax
invoke nrandom, 10
mov number, eax
push offset number
call StdOut
给我一些笑脸而不是数字,是否有办法让它发挥作用?
答案 0 :(得分:1)
从RTC中选择结果或从用户时序/输入中收集熵,做一个简单的哈希,产生1字节的随机数据,然后计算mod 10
答案 1 :(得分:0)
由于您使用的是MASM32,它包含了库中所有功能的文档,因此RTFM!打开\ masm32 \ help并查看帮助文件!
要在屏幕上显示数字,您需要先将数字转换为ASCII等效值。 ASCII“2”与2不同。您可以自己角色或在名为dwtoa的MASM32库中使用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 (?)
当然,使缓冲区大到足以容纳数字和NULL终止符。
使用该代码,每次启动程序时,它将生成0到9之间的随机数,转换为ASCII并打印到控制台。
除了包含MASM32中包含的功能的文档之外,它还包括所有功能的源代码。打开\ masm32 \ m32lib,您可以查看代码,了解所有内容是如何完成的......您甚至可以修改以供自己使用。