Advertisement
dxvmxnd

Untitled

Apr 28th, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. org 100h
  2.  
  3. section .data
  4. array db 5, 10, 15, 20, 25 ; Пример массива
  5. array_size equ $ - array ; Размер массива (количество элементов)
  6.  
  7. section .code
  8. mov bx, 0 ; Индекс минимального элемента
  9. mov dx, 0 ; Индекс максимального элемента
  10.  
  11. ; Находим индексы минимального и максимального элементов
  12. mov cx, array_size
  13. mov al, byte [array + bx] ; Загружаем первый элемент в AL
  14. mov ah, al ; Загружаем первый элемент в AH
  15.  
  16. .loop:
  17. cmp byte [array + cx], al ; Сравниваем текущий элемент с минимальным
  18. jl .update_min ; Если текущий элемент меньше минимального, обновляем индекс минимального
  19. cmp byte [array + cx], ah ; Сравниваем текущий элемент с максимальным
  20. jg .update_max ; Если текущий элемент больше максимального, обновляем индекс максимального
  21. dec cx ; Уменьшаем счетчик
  22. jnz .loop ; Пока не просмотрим все элементы, продолжаем цикл
  23. jmp .swap_elements ; Если мы дошли до этой точки, значит нашли минимальный и максимальный элементы
  24.  
  25. .update_min:
  26. mov bx, cx ; Обновляем индекс минимального элемента
  27. mov al, byte [array + bx] ; Загружаем новый минимальный элемент в AL
  28. jmp .loop
  29.  
  30. .update_max:
  31. mov dx, cx ; Обновляем индекс максимального элемента
  32. mov ah, byte [array + dx] ; Загружаем новый максимальный элемент в AH
  33. jmp .loop
  34.  
  35. .swap_elements:
  36. mov al, byte [array + bx] ; Загружаем минимальный элемент в AL
  37. mov byte [array + bx], ah ; Заменяем минимальный элемент на максимальный
  38. mov byte [array + dx], al ; Заменяем максимальный элемент на минимальный
  39.  
  40. ; Выводим измененный массив
  41. mov cx, array_size
  42. mov si, array
  43. .print_loop:
  44. mov dl, byte [si]
  45. add dl, 30h ; Конвертируем число в ASCII-код цифры
  46. mov ah, 02h ; Функция вывода символа
  47. int 21h ; Вызов прерывания 21h для вывода символа
  48. inc si ; Увеличиваем указатель на массив
  49. loop .print_loop ; Пока не выведем все элементы
  50.  
  51. mov ah, 4Ch ; Функция завершения программы
  52. int 21h ; Вызов прерывания 21h
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement