Как сгенерировать случайное число в сборке 8086? - PullRequest
1 голос
/ 07 декабря 2010

Я хочу знать, есть ли подпрограмма или инструкция для генерации случайного числа с использованием сборки на 8086. Любая помощь будет оценена.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010

Самый распространенный способ - использовать метку времени.В 32-битном режиме это можно сделать с помощью инструкции rdtsc, в 16-битном режиме: с помощью функции 0 прерывания BIOS 1A.

Поскольку это временная метка, избегайте ее частого использования (из-за отсутствия надлежащего дисперсии) и использовать его в качестве начального числа для генератора псевдослучайных чисел.Когда вам нужно только одно случайное значение, вы можете использовать временную метку напрямую.

Обычно достаточно простого генератора псевдослучайных чисел:

static int seed = now();
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2;

И есть также вики

1 голос
/ 07 декабря 2010

На этот точный вопрос есть хороший ответ на Yahoo!Ответы:

Я подозреваю, что смысл в том, чтобы научиться писать на ассемблере.Вот набор инструкций (http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html). У вас есть все инструкции, необходимые для выполнения уравнения, необходимого для генерации псевдослучайных чисел, кроме инструкции 'mod', для которой вам нужно написать подпрограмму.Внимание к ограничениям на инструкции MUL и DIV. «Хранить в отдельном файле» не подразумевается в наборе команд. Вам нужно лучше понять, что здесь требуется. «Файл» и «Печать» - это понятия, связанные с эксплуатацией.система, в данном случае это формы вывода.

из http://answers.yahoo.com/question/index?qid=20081030112909AAmjEsp

0 голосов
/ 08 декабря 2010

Вас могут заинтересовать генераторы псевдослучайных чисел Агнера Фога (некоторые из которых написаны на ассемблере) здесь .

...