Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА6.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
23.7 Кб
Скачать

Лабораторная работа № 6.

Тема: «МЕТОДЫ СОРТИРОВКИ МАССИВОВ И ИХ ИСПОЛЬЗОВАНИЕ В ПРОГРАММАХ НА ЯЗЫКЕ АССЕМБЛЕРА».

Цель:

  • изучение приемов сортировки элементов в массивах данных в программах на языке Assembler

Ход работы: Листинги программ

  1. Сортировка прямым включением

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

[ 1] : data segment

[ 2] 0000: 2C 37 0C 2A 5E 12 06 43 mas db 44,55,12,42,94,18,06,67

[ 3] 0008: n=$-mas

[ 4] 0008: 00 x db 0

[ 5] :

[ 6] : data ends

[ 7] :

[ 8] : code segment

[ 9] 0010: start:

[ 10] :

[ 11] 0010: B9 07 00 mov cx,n-1

[ 12] 0013: BE 01 00 mov si,1

[ 13] :

[ 14] 0016: 8A 04 cycl3: mov al,mas[si]

[ 15] 0018: A2 08 00 mov x,al

[ 16] 001B: 56 push si

[ 17] :

[ 18] :

[ 19] 001C: 8A 44 FF cycl2: mov al,mas[si-1]

[ 20] 001F: 38 06 08 00 cmp x,al

[ 21] 0023: 77 08 ja m1

[ 22] :

[ 23] 0025: 8A 44 FF mov al,mas[si-1]

[ 24] 0028: 88 04 mov mas[si],al

[ 25] 002A: 4E dec si

[ 26] :

[ 27] :

[ 28] :

[ 29] 002B: 75 EF jnz cycl2

[ 30] :

[ 31] 002D: A0 08 00 m1: mov al,x

[ 32] 0030: 88 04 mov mas[si],al

[ 33] 0032: 5E pop si

[ 34] 0033: 46 inc si

[ 35] :

[ 36] 0034: E2 E0 loop cycl3

[ 37] :

[ 38] 0036: B8 00 4C mov ax,4c00h

[ 39] 0039: CD 21 int 21h

[ 40] : end start

  1. Сортировка прямым выбором

Ищется очередной минимальный элемент. Если он найден, то производится его перемещение на место крайнего левого элемента несортированной правой части массива.

[ 1] : data segment

[ 2] 0000: 2C 37 0C 2A 5E 12 06 43 mas db 44,55,12,42,94,18,06,67

[ 3] 0008: n=$-mas

[ 4] 0008: 00 x db 0

[ 5] 0009: 00 00 k dw 0

[ 6] : data ends

[ 7] :

[ 8] : code segment

[ 9] 0010: start:

[ 10] :

[ 11] :

[ 12] 0010: B9 07 00 mov cx,n-1

[ 13] 0013: BE 00 00 mov si,0

[ 14] :

[ 15] 0016: cycl1:

[ 16] 0016: 51 push cx

[ 17] :

[ 18] 0017: 89 36 09 00 mov k,si

[ 19] 001B: 8A 04 mov al,mas[si]

[ 20] 001D: A2 08 00 mov x,al

[ 21] 0020: 56 push si

[ 22] 0021: 46 inc si

[ 23] :

[ 24] 0022: B0 08 mov al,n

[ 25] 0024: 2B C6 sub ax,si

[ 26] 0026: 8B C8 mov cx,ax

[ 27] :

[ 28] 0028: cycl2:

[ 29] :

[ 30] 0028: 8A 04 mov al,mas[si]

[ 31] 002A: 3A 06 08 00 cmp al,x

[ 32] 002E: 77 09 ja m1

[ 33] :

[ 34] 0030: 89 36 09 00 mov k,si

[ 35] :

[ 36] 0034: 8A 04 mov al,mas[si]

[ 37] 0036: A2 08 00 mov x,al

[ 38] :

[ 39] :

[ 40] :

[ 41] 0039: 46 m1: inc si

[ 42] 003A: E2 EC loop cycl2

[ 43] :

[ 44] 003C: 5E pop si

[ 45] 003D: 8A 04 mov al,mas[si]

[ 46] 003F: 8B 3E 09 00 mov di,k

[ 47] 0043: 88 05 mov mas[di],al

[ 48] 0045: A0 08 00 mov al,x

[ 49] 0048: 88 04 mov mas[si],al

[ 50] 004A: 46 inc si

[ 51] 004B: 59 pop cx

[ 52] :

[ 53] :

[ 54] :

[ 55] 004C: E2 C8 loop cycl1

[ 56] :

[ 57] 004E: B8 00 4C mov ax,4c00h

[ 58] 0051: CD 21 int 21h

[ 59] :

[ 60] : end start