Здравствуйте, у меня вопрос, я написал программу сортировки элементов массива по возрастанию, находящейся во внутренней памяти, код самой программы вот:
| Код | MAX_ITEM EQU 02Eh ; переменная для максимального значения. IN_ADR EQU 030h ; начальный адрес размещения данных во внутренней памяти данных. NUM_ITEM EQU 007h ; количество элементов массива. org 0000h jmp Start ; переход к началу программы. org 0100h ; начало программы. Start: mov SP, 0080h ; установка указателя стека. mov R0, #IN_ADR ; загрузка начальных данных во внутреннюю память данных. mov A, #255 mov @R0, A inc R0 mov A, #128 mov @R0, A inc R0 mov A, #16 mov @R0, A inc R0 mov A, #0 mov @R0, A inc R0 mov A, #40 mov @R0, A inc R0 mov A, #108 mov @R0, A inc R0 mov A, #127 mov @R0, A call SORT_UP ; вызов подпрограммы SORT_UP. SORT_UP: mov R7, #NUM_ITEM ; в R7 загружаем количество прходов N-1. IN_SORT_UP_3: dec R7 push aR7 ; сохраняем в стеке количество проходов. mov R0, #IN_ADR ; в R0 организуем указатель на n-й элемент массива. mov R1, #IN_ADR inc R1 ; в R1 организуем указатель на (n+1)-й элемент массива. IN_SORT_UP_2: mov 02Eh, @R0 ; начинаем проход. В переменную MAX_IYEM загружаем содержимое n элемента массива. mov A, @R1 ; в аккумулятор загружаем содержимое (n+1) элемента массива. cjne A, MAX_ITEM, IN_SORT_UP_1 ; если (n+1)<n то необходимо поменять элементы местами (выполнить IN_SWAP_UP), IN_SORT_UP_1: jc IN_SWAP_UP ; иначе перейтди к IN_SORT_UP_4 jmp IN_SORT_UP_4 IN_SWAP_UP: mov @R0, A ; на место n элемента загружается (n+1) элемент, mov @R1, MAX_ITEM ; ; на место (n+1) элемента загружается n элемент. IN_SORT_UP_4 : inc R0 ; увеличваем указатель на элемент массива inc R1 ; увеличваем указатель на элемент массива djnz R7, IN_SORT_UP_2 ; уменьшаем содержимое R7 и повторяем проход если R7 не достигло нуля. pop aR7 ; восстанавливаем из стека данные о выполненом проходе, djnz R7, IN_SORT_UP_3 ; уменьшаем на 1 количество шагов в следующем проходе, и повторяем если не достигнут конец. ret ; возврат из подпрограммы.
Loop: sjmp Loop
|
Но преподаватель говорит, что она немного не верная, надо сделать так, чтобы он просто мог вносить любые цифры в начале программы, далее шла программа сортировки элементов массива, а в конце программы на миниторе был показан отсортированный массив, и говорит чтобы массив записывался не просто в регистры, а ввиди последовательныости в саой начале программы, подскажите, как можно это исправить.
Заранее благодарен.
|