Научная статья на тему 'Разработка учебной программы на ассемблере для демонстрации скорости реализации программных и быстрых сортировок массивов'

Разработка учебной программы на ассемблере для демонстрации скорости реализации программных и быстрых сортировок массивов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
370
39
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММА / АССЕМБЛЕР / СОРТИРОВКА / МОДЕЛИРОВАНИЕ / МАКРОС / ПРОЦЕДУРА / СКОРОСТЬ ОБМЕНА / ДЕРЕВО ДАННЫХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Витиска Николай Иванович, Попов Роман Анатольевич

В статье рассмотрены авторские методы создания учебной программы на ассемблере, которая отличается компактностью реализации за счет использования макросов и процедур. Предложена методика оценки различных алгоритмов сортировки по скорости их реализации. Приведены результаты моделирования сортировок массивов различной длины с возможностью изменения количества элементов в массиве.I

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

n this article the author’s method of creating educational program on assembler. It differs compactness of realization due to using of macros and procedures. The methods of evaluation different sorting algorithms by the velocity of its realization. The results of modeling array’s sorting different length with opportunity changing quantity of elements in array.

Текст научной работы на тему «Разработка учебной программы на ассемблере для демонстрации скорости реализации программных и быстрых сортировок массивов»

УДК 37.02 ББК 74.202

Н. И. Витиска, Р. А. Попов

РАЗРАБОТКА УЧЕБНОЙ ПРОГРАММЫ НА АССЕМБЛЕРЕ ДЛЯ ДЕМОНСТРАЦИИ СКОРОСТИ РЕАЛИЗАЦИИ ПРОГРАММНЫХ И БЫСТРЫХ СОРТИРОВОК МАССИВОВ

Аннотация. В статье рассмотрены авторские методы создания учебной программы на ассемблере, которая отличается компактностью реализации за счет использования макросов и процедур. Предложена методика оценки различных алгоритмов сортировки по скорости их реализации. Приведены результаты моделирования сортировок массивов различной длины с возможностью изменения количества элементов в массиве.

Ключевые слова: программа, ассемблер, сортировка, моделирование, макрос, процедура, скорость обмена, дерево данных.

N. I. Vitiska, R. A. Popov

DEVELOPMENT OF THE EDUCATIONAL PROGRAM ON THE PROGRAMMING LANGUAGE ASSEMBLER FOR PRESENTATION OF THE VELOCITY OF IMPLEMENTATION OF PROGRAMMING AND QUICK ARRAY'S SORTS

Abstract. In this article the author's method of creating educational program on assembler. It differs compactness of realization due to using of macros and procedures. The methods of evaluation different sorting algorithms by the velocity of its realization. The results of modeling array's sorting different length with opportunity changing quantity of elements in array.

Key words: program, assembler, sorting, modeling, macro, procedure, exchange velocity, tree of

data.

Программирование алгоритмов сортировки на ассемблере или в командах микропроцессора позволяет исключить этап трансляции с языков высокого уровня и максимально адаптировать управление к реально протекающим процессам. Особенно это важно, когда мы работаем в заданном временном интервале, или когда выделяется минимальное значение времени на сортировку. Из известных самых быстрых алгоритмов сортировки особо следует выделить аппаратные сортировки, например, на специализированных сетях [1-3], или на матрице процессоров [4, 5] или на дереве контроллеров [6], количество которых зависит от числа N элементов в сортирующих массивах. Данное обстоятельство приводит к необоснованным аппаратным затратам. Поэтому в работе исследуются программные сортировки [7, 8, 9], не связанные с дополнительными аппаратными затратами. Разработанная учебная программа максимально реализует все возможности ассемблерной программы и программно объединяет следующие сортировки:

1. Сортировка прямым обменом (пузырьковая сортировка) [7, 8].

2. Сортировка массива, представленного в виде дерева в памяти [7].

3. Сортировка Хора (быстрая сортировка) [9].

Ниже приводится разработанная программа на ассемблере:

;сортировка массива различными методами

model small

stack 150h

include tree.inc

include piramid.inc

include obmen.inc

.data

infile db 'mas.txt',0h

outfile db 'outmas.txt',0h

mass db 65000 dup (?) ;сортируемый массив

n dw 0 ;количество элементов в сортируемом массиве

m dw 0 ;n/2

n1 dw 0

i dw 1

r dw 0

mess db 0ah,0dh,'выбрана сортировка обменом! ','$'

mess1 db 0ah,0dh,'выбрана сортировка деревом! ','$'

mess2 db 0ah,0dh,'выбрана быстрая сортировка! ','$'

x db 0

.code

main:

mov ax,@data

mov ds,ax

xor ax,ax

mov ah,09h

;заполнение массива из файла

;открываем описатель файла

mov ax,3d00h

mov dx,offset infile

int 21h

mov bx,ax

;вычисляем длину файла

mov ax,4202h

xor cx,cx

xor dx,dx

int 21h

mov n,ax ;длина файла

;устанавливаем указатель на начало фала

xor cx,cx

xor dx,dx

mov ax,4200h

int 21h

;записываем файл в массив

mov cx,n

mov ah,3fh

lea dx,mass+1

int 21h

;закрываем описатель файла

mov ah,3eh

int 21h

; Сортировка массива

cmp n,100

jae jmp1

mov ah,09h ;выбран метод прямого обмена

mov dx,offset mess

int 21h

obmen

jmp jmpe

jmp1:

cmp n,32001

jae jm2

mov ah,09h ;выбрана быстрая сортировка

mov dx,offset mess2

int 21h

mov ax,n

mov r,ax

call hor

jmp jmpe

jm2:

mov ah,09h ;выбрана сортировка деревом

mov dx,offset mess1

int 21h

piramid

jmpe:

Запись массива в файл

;извлечь атрибут файла

mov cx,9

mov ax,3500h

mov dx,offset outfile

int 21h

cmp ax,2

je j mp2 ;если файл не существует то jmp1

mov ah,41h ;иначе удаляем файл

mov dx,offset outfile

int 21h jmp2: ;создаем фал

mov ah,5bh

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

mov dx,offset outfile

xor cx,cx

int 21h ;записываем в файл

mov bx,ax ;описатель в bx

mov ah,40h

mov cx,n

mov dx,offset mass+1

int 21h

;закрываем описатель файла

mov ah,3eh

int 21h

mov ax,4c00h

int 21h

include horl.inc end main

Ниже приведенный листинг программы позволяет определить количество обменов и сравнений. Это позволяет оценить скорость работы предложенных методов сортировки.

cicl4:

mov bl,mass[si]

mov dl,mass[si-1]

inc j

cmp dl,bl

jb jmp1

inc g

mov mass[si],dl

mov mass[si-1],bl

dec si

loop cicl4

jmpl:

Разработанная программа заполняет массив данными из файла, затем сортирует их и записывает в другой файл, в качестве чисел используются коды символов ASCI. Так как каждый символ представляет собой код ASCI размером 1 байт, то можно этот символ поместить в массив и отсортировать как массив элементов. После того, как сортировка будет закончена, символы будут упорядочены и записаны в другой файл. В данном случае размерностью массива элементов выступает размер файла в байтах, зная этот размер можно выбрать оптимальный алгоритм сортировки для данного массива. Для обработки небольших массивов в программе используется сортировка прямым обменом. Сортировка Хора оказывается самой быстрой из представленных сортировок при обработке больших массивов, однако данный метод использует много памяти и не эффекти-

вен при обработке массивов более 32000 элементов. Сортировка деревом работает немного медленнее сортировки Хора, но данный метод не требователен к используемой памяти, поэтому используется для обработки массивов более 32000 элементов. Использование макросов и процедуры в разработанной программе, позволяет программно объединить 3 алгоритма сортировки . В разработанной программе используется 3 макроса:

1. Макрос сортировки с помощью дерева:

; макрос

; Сортировка массива

; с помощью дерева!

; Создаем древовидную структуру

piramid macro

local tree

local sort

mov cx,n ;запись числа элементов в переменную n

mov n1,cx

; dec n1 ;n1 граница просмотра

mov si,n

shr si,1

mov cx,si ;число повторов

; dec si ;si=n-1 начальный просмотр

tree:

tree1 ;макрос создает древовидную структуру массива

dec si

loop tree

; Сортируем дерево

mov cx,n

;dec cx

mov di,cx

sort:

mov si,1 ;начальный индекс для tree1

mov bl,mass[si] ;;;;;;;;;

mov al,mass[di] ;меняем местами элементы

mov mass[si],al ;массива

mov mass[di],bl ;;;;;;;;;

mov n1,di

dec n1 ;задает границу для tree1

tree1 ;макрос создает дерево

dec di

loop sort

endm

2. Макрос приведение к древовидному виду:

макрос приведение массива к древовидному виду

использует параметры si и п1

si-номер элемента в последовательности

mass-массив элементов

^-правая граница просмотра массива

m=n1/2 - используется в задании условия конца просмотра

tree1 macro a1

local cicll

local ecicll

local jmpl

local quit

push si

push di

push bx

mov al,mass[si]

mov x,al ;сохраняем элемент массива в x

mov di,si ;di=si

cicll:

mov ax,n1

mov m,ax

shr m,1 ;m=nl/2

cmp si,m

ja ecicll ;если si>m то ecicll

mov di,si ;иначе di=si

shl di,1 ;si=si*2

cmp di,n1

jae jmpl ;если di>=n1 то переход на jmp1

cmp si,n1 ;иначе сравниваем si и n1

jae jmpl ;если si>=n1 то переход на jmp1

mov bl,mass[di] ;иначе

cmp bl,mass[di+1] ;сравниваем mass[di] и mass[di+1]

jae jmpl ;если mass[di]>=mass[di+l] то jmpl

inc di ;иначе di=di+l

jmpl:

mov al,x

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

cmp al,mass[di] сравниваем x и mass[di]

jae ecicll ;если x>mass[di] то mass[si]=x

mov al,mass[di] ;иначе

mov mass[si],al ;mass[si]=mass[di]

mov si,di ;si=di

jmp cicll

ecicll:

mov al,x

mov mass[si],al ;записываем x в mass[si] и выходим

quit:

pop bx

pop di

pop si

endm

3. Макрос сортировки прямым обменом.

;макрос сортировка массива

;методом прямого обмена

obmen macro

local cicl3

local cicl4

local jmpl

mov cx,n

mov si,l

; dec cx

cicl3:

push si

push cx

mov cx,si

cid4:

mov bl,mass[si]

mov dl,mass[si-1]

cmp Ш,Ы

]Ь jmp1

mov mass[si],dl

mov mass[si-1],bl

dec si

loop cid4

PoP cx

PoP si

inc si

loop tid3

endm

Также в разработанной программе используется одна процедура сортировки Хора (быстрая сортировка):

;процедура быстрой сортировки

;в качестве параметров использует

;значения переменных i и г:

^ - начальный индекс массива;

;г - конечный индекс массива.

^г proc ;;;;;;;;;;;;;;;

inc x

@hor:

mov si,i

add si,r

shr si,1

mov cl,mass[si]

mov si,i

mov di,r

@rep:

@wh1:

cmp mass[si],cl

jae @wh2

те si

jmP @wh1

@wh2:

cmp cl,mass[di]

jae

dec di

№ @wh2

cmp si,di

ja @unt1

mov al,mass[si]

xchg mass[di],al

mov mass[si],al

inc si

dec

@unt1:

cmp si,di

jle @rep

cmp

jae @if2

push r

mov r,di

call hor

pop r

@if2:

cmp si,r

jae @if3

push i

mov i,si

call hor

pop i

@if3:

ret

hor endp

Использование макросов и процедуры в разработанной программе даёт возможность программно объединить несколько алгоритмов сортировки, что в результате позволило обеспечить оптимальную скорость работы программы при обработке массивов различной длины и значительно уменьшить аппаратные затраты. Оптимальная скорость работы программы обеспечивается благодаря динамическому выбору алгоритма сортировки в зависимости от размера обрабатываемого массива.

Вывод. Применение языка ассемблера при программировании алгоритмов сортировки позволяет максимально увеличить скорость выполнения программы на ЭВМ и уменьшить аппаратные затраты. Введение макросов и процедур при программировании на языке ассемблера позволяет сократить временные затраты, связанные с отладкой программы и ее разработкой, а в тех случаях, когда уже имеется отлаженный код в виде макроса или процедуры, уменьшается количество ошибок в процессе разработки программы.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Batcher, K. E. Sorting Networks and their applications // Proc. AFIPS SPRING JOINT conf. Afips Press. - New Jersey, 1968. - Vol 32. - P. 307-314.

2. Batcher, K. E. The flip network in staran. New York // Proc Int. Conf. On Parallel Processing. - 1976. - Aug. -P. 65-71.

3. Kautz, W. H. Cellular Interconnection Arrays. IEEE Transactions on Computers // Proc Int. Conf. On Parallel Processing. - 1968. - Vol. 17. - P. 443-451.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Ромм, Я. Е. Сортировка слиянием по матрицам сравнений. I // Кибернетика и системный анализ. - 1994. -№ 5. - С. 3-23.

5. Ромм, Я. Е. Сортировка слиянием по матрицам сравнений. II // Кибернетика и системный анализ. - 1995. - № 4. - С. 13-27.

6. Ульман, Д. Д. Вычислительные аспекты СБИС / Д. Д. Ульман. - М.: Радио и связь, 1990.

7. Иванова, Г. С. Основы программирования: учебник для вузов / Г. С. Иванова. - М.: Изд-во МГТУ имени Н.Э. Баумана, 2001. - С. 319.

8. Кнут, Д. Э. Искусство программирования для ЭВМ / Д. Э. Кнут. - М.: Мир, 1978. - Т. 3. Сортировка и Поиск. - С. 844.

9. Режим доступа: http://netsoftware.ucoz.ru/news/bystraja_sortirovka_metodom_khora_1992_god/2012-05-14-63

УДК 53.08: 621.38: 378.164 ББК 74.58

В. М. Глушань

ВИРТУАЛЬНЫЕ ЛАБОРАТОРИИ В ОБРАЗОВАТЕЛЬНОМ ПРОЦЕССЕ

Аннотация. Дается представление о виртуальной лаборатории по электронике, которая в условиях дефицита соответствующего оборудования в педагогическом вузе является удачным решением вопроса с организацией лабораторных работ по курсу «Разработка и создание учебных приборов и оборудования».

Ключевые слова: виртуальная лаборатория, информационные технологии, эффективность, облачные вычисления.

i Надоели баннеры? Вы всегда можете отключить рекламу.