Guest User

Untitled

a guest
Jan 4th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. .model small
  2. .stack 100h
  3. .data
  4. massiv dw 80 dup(?)
  5. msg db "Vvodite chisla cherez probel, okonchanie vvoda - ENTER",0ah,0dh,'$'
  6. c10 dw 10
  7. .code
  8. start:
  9. mov ax,@data
  10. mov ds,ax
  11. mov ah,09h ; вывод msg
  12. lea dx,msg
  13. int 21h
  14. xor bx,bx ; bx - смещение в массиве вводимого числа
  15. xor dx,dx ; dx - вводимое число
  16. input_loop:
  17. mov ah,01h ; считваем очередной символ
  18. int 21h
  19. cmp al,0dh ; если это enter
  20. je chislo
  21. cmp al,20h ; или пробел
  22. je chislo
  23. sub al,30h ; иначе - получаем цифру
  24. mov cl,al ; сохраняем ее в cl
  25. mov ax,dx ; в ax - вводимое число
  26. mul c10 ; умножаем на 10
  27. xor ch,ch
  28. add ax,cx ; добавляем к результату последнюю цифру
  29. mov dx,ax ; в dx - полученное число
  30. jmp input_loop
  31. chislo: ; если окончен ввод числа
  32. mov massiv[bx],dx ; запись этого числа в массив
  33. add bx,2 ; смещаемся к следующему элементу
  34. cmp bx,160 ; если массив заполнен
  35. je end_input ;
  36. cmp al,0dh ; или последнее число
  37. je end_input ; то конец ввода
  38. xor dx,dx ; обнуляем dx для ввода следующего числа
  39. jmp input_loop
  40. end_input:
  41. mov cx,bx ; в cx - (количество введенных чисел + 1) * 2
  42. shr cx,1 ; cx = cx \ 2
  43. dec cx ; теперь в cx - количество введенных чисел
  44. call sort ; сортировка
  45. mov ah,4ch
  46. int 21h
  47. sort proc
  48. loop1:
  49. xor bx,bx ; bx - смещение в массиве
  50. push cx ; сохраняем cx в стеке
  51. loop2:
  52. mov ax,massiv[bx]
  53. cmp ax,massiv[bx][2] ; сравниваем два соседних элемента
  54. jl cont_loop2 ; если правый больше левого, то продолжить цикл
  55. mov dx,massiv[bx][2] ; иначе - перестановка
  56. push massiv[bx][2]
  57. push massiv[bx]
  58. pop massiv[bx][2]
  59. pop massiv[bx]
  60. cont_loop2:
  61. add bx,2 ; смещаемся к следующему элементу в массиве
  62. loop loop2
  63. pop cx ; восстанавливаем cx
  64. loop loop1
  65. ret
  66. sort endp
  67. end start
Add Comment
Please, Sign In to add comment