Wie eine Zufallszahl in 8086 Assembly generieren?
-
09-10-2019 - |
Frage
Ich möchte wissen, ob es eine Routine oder eine Anweisung, eine Zufallszahl zu erzeugen Montage mit auf 8086. jede mögliche Hilfe wird geschätzt.
Lösung
Die gängigste Methode ist die Zeitmarke zu verwenden. In 32-Bit-Modus kann es durch rdtsc
Anweisung erfolgen, in 16-Bit-Modus: durch die Funktion 0 von BIOS Interrupt-1A mit
Weil es ein Zeitstempel ist, vermeiden Sie es häufig mit (wegen Mangels an geeigneter Dispersion), und verwenden Sie es als Samen für einen Pseudo-Zufallszahlengenerator. Wenn Sie brauchen nur einen zufälligen Wert, können Sie den Zeitstempel direkt verwenden.
In der Regel ein einfacher Pseudo-Zufallszahlengenerator ist genug:
static int seed = now();
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2;
Und es gibt auch Wiki
Andere Tipps
Es gibt eine gute Antwort auf diese Frage genau auf Yahoo! Antworten:
Ich vermute, dass hier der Punkt ist, zu lernen, zu schreiben Assemblersprache. Hier ist die Befehlssatz ( http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html ) Sie haben alle Anweisungen, die Sie brauchen auszuführen, um die Gleichung Sie müssen Erzeugen von Pseudozufallszahlen mit Ausnahme die ‚mod‘ Anweisung, wo Du muß ein Unterprogramm zum schreiben. Zahlen besonderes Augenmerk auf die Beschränkungen für die MUL und DIV Anleitung. „Store in einem separaten Datei“nicht implizit in dem Befehlssatz. Sie werden besser haben verstehen, was hier gesucht wird. "Datei" und „Drucken“ sind Konzepte im Zusammenhang mit Betriebssystem; Sie sind Formen der Ausgang in diesem Fall.
http://answers.yahoo.com/question/index?qid=20081030112909AAmjEsp
Sie können in Agner Fog Pseudo-Zufallszahlen-Generatoren interessiert sein (von denen einige in Assembler geschrieben werden) hier .