Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. TITLE МЗЯ МОДУЛЬ 1 ЛАБОРАТОРНАЯ РАБОТА 2
  2.  
  3. SSTACK SEGMENT PARA STACK 'STACK'
  4. DB 64 DUP('СТЕК____')
  5. SSTACK ENDS
  6.  
  7. DSEG SEGMENT PARA PUBLIC 'DATA'
  8. X DB 1,2,3,6,5,4
  9. N DB 6
  10. DSEG ENDS
  11.  
  12. SUBTTL ОСНОВНАЯ ПРОГРАММА
  13. PAGE
  14. CSEG SEGMENT PARA PUBLIC 'CODE'
  15. ASSUME CS:CSEG,DS:DSEG,SS:SSTACK
  16.  
  17. START PROC FAR
  18. MOV AX, DSEG ; Установка регистра сегмента данных
  19. MOV DS, AX
  20.  
  21. VS: DEC N ; Каждый раз сортируемая часть массива в методе пузыря уменьшается на 1
  22. MOV CL, N
  23. MOV SI, 0 ; SI будет указывать на первый сравниваемый элемент
  24. MOV DI, 1 ; DI будет указывать на второй (соседний) сравниваемый элемент
  25. MOV BL, 0 ; В BL будем считать, сколько раз за проходку по массиву мы делали замену элементов
  26. ; Если за проходку не было ни одной замены (BL == 0), то значит массив отсортирован
  27.  
  28. CMP CL, 0 ; Проверка того, чтоб CL не равнялась 0
  29. JZ GB
  30.  
  31. SC: MOV AH, X[SI] ; Начало внутреннего цикла проходки по массиву
  32. MOV AL, X[DI] ; Заносим соседние элементы SI DI в первую и вторую половину регистра АХ
  33. CMP AH, AL ; Производим операцию сравнения
  34.  
  35. JLE NS ; Если операция выявила, что первое меньше или равно второму(по установленным флагам,
  36. ; то перемена не нужна и мы её проскакиваем, переходу к метке NS
  37.  
  38. XCHG AH, AL ; Перемена местами значений внутри регистра
  39. MOV X[SI], AH ; Заночим уже помененные значения в соответсвующие элементы массива
  40. MOV X[DI], AL
  41. INC BL ; Увеличиваем счётчик замен
  42.  
  43. NS:
  44. INC SI ; Передвигаемся к следующей паре
  45. INC DI
  46.  
  47. LOOP SC ; Конец внутреннего цикла проходки по парам
  48.  
  49. GB: CMP BL, 0 ; Сравнение счётчика с 0
  50. JG VS ; Если BL > 0, то возвращаемся в к VS и повторяем проходку по массиву
  51. ; Иначе идём дальше, где прога завершится
  52. MOV AH,4CH
  53. MOV AL,0
  54. INT 21H
  55. START ENDP
  56.  
  57. CSEG ENDS
  58. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement