8086 でアセンブリを使用して乱数を生成するルーチンまたは命令があるかどうかを知りたいです。
3 に答える
最も一般的な方法は、タイムスタンプを使用することです。32ビットモードでは、rdtsc
命令によって、16ビットモードでは、BIOS割り込み1Aの機能0を使用して実行できます。
これはタイムスタンプであるため、頻繁に使用することは避け(適切な分散がないため)、疑似乱数ジェネレーターのシードとして使用してください。ランダムな値が1つだけ必要な場合は、タイムスタンプを直接使用できます。
通常、単純な疑似乱数ジェネレータで十分です。
static int seed = now();
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2;
そしてウィキもあります
Yahoo!でこの正確な質問に対する良い答えがあります。回答:
ここでのポイントは、アセンブリ言語の書き方を学ぶことだと思います。命令セットは次のとおりです(http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html)疑似乱数を生成するために必要な方程式を実行するために必要なすべての命令があります。ただし、「mod」命令は次のとおりです。のサブルーチンを作成する必要があります。MULおよびDIV命令の制限に特に注意してください。「別のファイルに保存する」は、命令セットに暗黙的に含まれていません。ここで何が必要かをよりよく理解する必要があります。「ファイル」と「印刷」は、オペレーティングシステムに関連する概念です。この場合、これらは出力の形式です。
http://answers.yahoo.com/question/index?qid=20081030112909AAmjEspから
Agner Fog の疑似乱数ジェネレーター (アセンブリーで記述されているものもあります) に興味があるかもしれません。