Расположить неотрицательные элементы в заданном двумерном массиве по возрастанию - Assembler
Формулировка задачи:
Помогите пожалуйста: надо расположить неотрицательные элементы в заданном двумерном массиве по возрастанию; элементы вектора однобайтовые.
Заранее спасибо.
Решение задачи: «Расположить неотрицательные элементы в заданном двумерном массиве по возрастанию»
textual
Листинг программы
#make_COM# include 'emu8086.inc' ; COM file is loaded at CS:0100h ORG 100h .data mas db 44,55,12,42,99,18,35,67 ; задаем массив X db 0 .code ;внешний цикл - по i mov cx, 7 mov si, 1 cycl1: push cx mov cx, 8 sub cx, si ;число повторов внутреннего цикла push si ;временно сохраним i - теперь j=n mov si, 7 ;----- цикл по j с декрементом n-I раз cycl2: mov al, mas[si-1] ; если mas[j-1]<mas[j] то cmp mas[si], al ja m1 mov x,al ;x=mas[j-1] mov al, mas[si[ mov mas[si-1],al ;mas[j-1]=mas[j] mov al,x mov mas[si],al ;mas[j]:=x m1: dec si loop cycl2 pop si inc si pop cx loop cycl1 CALL PTHIS DB 13, 10, 'Отсортированный массив: ', 0 mov cx,8 ;цикл по i от 1 до 8 mov si,0 ;i=1 ; запись результата в AX: cycl4: mov al,mas[si] CALL PTHIS DB 13, 10, 'элемент массива: ', 0 CALL PRINT_NUM_UNS ; вывод значения элемента массива inc si ;i:=i+1 loop cycl4 exit: ret ;завершение программы ;================================= ; здесь определяются функции emu8086.inc ; SCAN_NUM читает число пользователя и сохраняет ; его в регистре CX. DEFINE_SCAN_NUM ; PRINT_NUM выводит число со знаком в AX. ; PRINT_NUM_UNS выводит число без знака в AX (требуется PRINT_NUM). DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS ; PTHIS выводит NULL завершающий строку только после ; CALL PTHIS команды: DEFINE_PTHIS ;================================= END
Объяснение кода листинга программы
Код выполняет сортировку двумерного массива по возрастанию с помощью двух циклов. Первый цикл (cycl1) выполняет сортировку по первому измерению массива (по i), второй цикл (cycl2) - по второму измерению (по j). Список действий:
- Задаем массив 'mas' с неотрицательными элементами.
- Инициализируем переменную 'X' значением 0.
- Запускаем внешний цикл (cycl1) с числом повторов, равным 7 (длина массива по первому измерению).
- В начале каждого прохода внутреннего цикла (cycl2) проверяем, является ли текущий элемент 'mas[si-1]' больше следующего 'mas[si]'. Если это так, меняем их местами.
- После завершения внутреннего цикла (cycl2) выводим отсортированный массив.
- Запускаем цикл (cycl4) по второму измерению массива (от i=1 до i=8) для вывода отсортированных элементов массива.
- Завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д