0

私はmasm32を学んでおり、ユーザー入力と比較するために0〜9の範囲のランダムな整数を生成するプログラムが必要です。整数がある場合、比較に問題はありません。プログラムが実行されるたびに、上記の範囲から新しいランダムな整数を生成する簡単な方法はありますか?

Irvine32 ライブラリがあることは知っていますが、追加のライブラリをダウンロードせずにそれを行う方法はありますか?

ありがとう。

また、これ:

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

push offset number
call StdOut

数字ではなくスマイリーフェイスが表示されます。それを機能させる方法はありますか?

4

2 に答える 2

1

RTC から結果を選択するか、ユーザーのタイミング/入力からエントロピーを収集し、単純なハッシュを作成し、1 バイトのランダム データを生成してから、mod 10 を計算します

于 2012-12-23T15:21:26.223 に答える
0

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

.data?セクション で lpszNumber は次のように定義されていlpszNumber db 2 dup (?)ます。このコードを使用すると、プログラムを起動するたびに、0 から 9 までの乱数が生成され、ASCII に変換されてコンソールに出力されます。

MASM32 に含まれる関数のドキュメントを含めることに加えて、すべての関数のソースが含まれています。\masm32\m32lib を開くと、コードを見て、すべてがどのように行われるかを確認できます。自分で使用するために変更することもできます。

于 2012-12-23T17:54:14.557 に答える