01.12.2018, 14:25
общий
это ответ
Здравствуйте, soloveujenya!
Держите программку.
Данные в количестве 10 штук необходимо записать, начиная с адреса 40
Используется пузырьковая сортировка в два цикла.
[code lang=asm]RD #40 ;адрес начала массива
WR R0 ;адресацию во внешнем цикле сортировки будем делать с помощью регистра R0
RD #50 ;адрес ЗА массивом, т.е. в массиве 10 элементов (чтобы работала команда JS)
WR R3 ;в регистре R3, для внутреннего цикла сортировки
SBI #1 ;внешний цикл сортировки до предпоследнего элемента
WR R2 ;в регистре R2
;внешний цикл сортировки
L1:RD R0 ;начальный адрес внутреннего цикла на 1 больше внешнего
ADI #1
WR R1 ;адрес внутреннего цикла
;внутренний цикл сортировки
L2:RD @R1 ;сравниваем текущий элемент внутреннего цикла
SUB @R0 ;с текущим внешнего
JNS NEXT2 ;если больше или равно, то на следующий элемент внутреннего цикла
RD @R1 ;если меньше, то меняем местами текущий элемент внутреннего цикла
WR R4
RD @R0 ;и внешнего
WR @R1
RD R4
WR @R0
NEXT2: ;на следующий элемент внутреннего цикла
RD R1 ;инкремент адреса
ADI #1
WR R1
SUB R3 ;сравниваем, дошли ли до конца массива
JS L2 ;нет - продолжаем
RD R0 ;на следующий элемент внешнего цикла
ADI #1
WR R0
SUB R2 ;сравниваем, дошли ли до предпоследнего элемента массива
JS L1 ;нет - идем на следующий внутренний цикл
HLT ;задача выполнена. По адресу, начиная с 40 - отсортированный массив
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен