
Лабораторная работа № 6.
Тема: «МЕТОДЫ СОРТИРОВКИ МАССИВОВ И ИХ ИСПОЛЬЗОВАНИЕ В ПРОГРАММАХ НА ЯЗЫКЕ АССЕМБЛЕРА».
Цель:
изучение приемов сортировки элементов в массивах данных в программах на языке Assembler
Ход работы: Листинги программ
Сортировка прямым включением
Последовательно выбираются элементы, начиная со второго (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] : 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