Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №62 / lr61
.txt DATA SEGMENT WORD PUBLIC ;сегмент данных
ASSUME DS:DATA
; данные, которые передаются в модуль
extrn dlint ;длина интервала
extrn nchsl:word ; количество псевдослучайных чисел
extrn nint:word ; количество интервалов
extrn rand_array:dword ; массив псевдослучайных чисел
extrn rez1:dword ; выходной массив
extrn lgr:dword ; массив левых границ интервалов
DATA ENDS
CODE SEGMENT BYTE PUBLIC
ASSUME CS:CODE
count proc ; процедура формирования распределения чисел
Public count
Push bp
@init: ; инициализация
xor di,di
mov dx,ds:dlint ; в BX количество интервалов
mov cx,ds:nchsl ; в CX количество псевдослучайных чисел
@chislo ; для текущего числа найти интервал, в который он
; попадет
xor si,si
xor ax,ax
mov al,00
mov ah,byte ptr rand_array[di] ; в AH указатель на текущее число
@interval: ; поиск по интервалам
cmp si,dx ; проверка, не последний ли интервал
jg @out ; если да, то на метку @out
cmp ah,al ; иначе сравниваем число со границей интервала
inc al
inc si
ja @interval ; если число больше, то на следующий интервал
@out:
inc byte ptr out_r[si-2] ; число попало в последний интервал
inc di
loop @chislo ; переход к следующему числу
@quit_search: ; конец поиска
pop bp
ret
Count endp
code ends
end
ASSUME DS:DATA
; данные, которые передаются в модуль
extrn dlint ;длина интервала
extrn nchsl:word ; количество псевдослучайных чисел
extrn nint:word ; количество интервалов
extrn rand_array:dword ; массив псевдослучайных чисел
extrn rez1:dword ; выходной массив
extrn lgr:dword ; массив левых границ интервалов
DATA ENDS
CODE SEGMENT BYTE PUBLIC
ASSUME CS:CODE
count proc ; процедура формирования распределения чисел
Public count
Push bp
@init: ; инициализация
xor di,di
mov dx,ds:dlint ; в BX количество интервалов
mov cx,ds:nchsl ; в CX количество псевдослучайных чисел
@chislo ; для текущего числа найти интервал, в который он
; попадет
xor si,si
xor ax,ax
mov al,00
mov ah,byte ptr rand_array[di] ; в AH указатель на текущее число
@interval: ; поиск по интервалам
cmp si,dx ; проверка, не последний ли интервал
jg @out ; если да, то на метку @out
cmp ah,al ; иначе сравниваем число со границей интервала
inc al
inc si
ja @interval ; если число больше, то на следующий интервал
@out:
inc byte ptr out_r[si-2] ; число попало в последний интервал
inc di
loop @chislo ; переход к следующему числу
@quit_search: ; конец поиска
pop bp
ret
Count endp
code ends
end