Лабораторная работа №62 / Задание
.docЗадание:
На языке высокого уровня Pascal генерируется массив псевдослучайных целых чисел, изменяющихся в заданном диапазоне и имеющих равномерное или гауссовское (ограниченное интервалом [Mx-3*S, Mx+3*S]) распределение.
Далее должен вызываться ассемблерный модуль(модули) для формирования распределения количества попаданий псевдослучайных целых чисел в заданные интервалы. В общем случае интервалы разбиения диапазона изменения
псевдослучайных чисел могут иметь различную длину.
Результирующий массив частотного распределения чисел по интервалам, сформированный на ассемблерном уровне, возвращается в программу,
реализованную на ЯВУ. Затем сохраняется в файле и выводится на экран средствами ЯВУ.
Уточнение условия:
Для бригад с четным номером: подпрограмма формирования распределения
количества попаданий псевдослучайных целых чисел в заданные
интервалы реализуется в виде двух ассемблерных модулей, первый из ко-
торых формирует распределение исходных чисел по интервалам единичной
длины и возвращает его в вызывающую программу на ЯВУ как промежуточ-
ный результат. Затем вызывается второй ассемблерный модуль, который
по этому промежуточному распределению формирует окончательное распре-
деление псевдослучайных целых чисел по интервалам произвольной длины
(с заданными границами). Это распределение возвращается в головную
программу и выдается как основной результат в виде текстового файла
и, возможно, графика.
Исходные данные:
-
Длина массива псевдослучайных чисел
-
Диапазон изменения псевдослучайных чисел
-
Количество интервалов, на которые разбивается диапазон изменения псевдослучайных чисел.
-
Интервалы заданы своими левыми границами. Значения левых границ содержатся в массиве.
Нужно получить:
Текстовый файл, строка которого содержит:
-
Номер интервала
-
Левую границу интервала
-
Количество псевдослучайных чисел, попавших в интервал.
Ассемблерные модули можно подключить:
-
in-line
-
Подключая объектный модуль
Ниже приведены программы для обоих случаев.
Примечание: Интервалы имеют открытые правые границы.
Например есть интервалы: 1-2, 2-3 то число 1 попадет в 1й интервал, 2- во второй, 3-во второй.
Вывод:
Процедура ассемблера может быть также включена в модуль, написанный на ЯВУ. Но при этом нужно помнить о свойствах вызова процедуры (как Near или Far).
В данной программе этот способ не рассматривается так как код небольшой и позволяет сделать in-line вставку. Что в свою очередь делает программу более наглядной.
При передаче данных через параметры, они передаются через стек, причем в обратном порядке. В нашей программе данные передаются как глобальные.