Расположить неотрицательные элементы в заданном двумерном массиве по возрастанию - 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). Список действий:

  1. Задаем массив 'mas' с неотрицательными элементами.
  2. Инициализируем переменную 'X' значением 0.
  3. Запускаем внешний цикл (cycl1) с числом повторов, равным 7 (длина массива по первому измерению).
  4. В начале каждого прохода внутреннего цикла (cycl2) проверяем, является ли текущий элемент 'mas[si-1]' больше следующего 'mas[si]'. Если это так, меняем их местами.
  5. После завершения внутреннего цикла (cycl2) выводим отсортированный массив.
  6. Запускаем цикл (cycl4) по второму измерению массива (от i=1 до i=8) для вывода отсортированных элементов массива.
  7. Завершаем программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы