Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Проверить является ли массив упорядоченным по возрастанию. Результат
- ; проверки записать в регистр.
- ; результат будет записан в A5
- .global _c_int00
- ;///////////////////////////////////////
- ;секция данных
- .data
- ;array: .byte -1, -2, -3, -4, -5 ; массив (ответ будет 0)
- ;array: .byte 5, 4, 3, 2, 1 ; массив (ответ будет 0)
- ;array: .byte 1, 2, 3, 4, 5 ; массив (ответ будет 1)
- array: .byte -5, -4, -3, -2, -1 ; массив (ответ будет 1)
- size .set 5 ; размер мессива
- buf: .byte 0 ; текущее значение массива
- buf_previous: .byte 128 ; предыдущее значение массива
- buf_previous_sub: .byte -128 ;
- ;///////////////////////////////////////
- _c_int00: ; метка с которой будет выполняться программа
- ; основной код программы
- .text
- ; записываем адресс массива в регистр
- MVKL .S1 array, A3 ;загружаем адрес массива1 в A3
- MVKH .S1 array, A3
- MVKL .S2 array, B3 ;загружаем адрес массива1 в B3
- MVKH .S2 array, B3
- MVK .S1 size, A2
- MVK .S2 -1, B2
- MVK .S1 buf, A6
- MVK .S2 buf, B6
- LDB .D1 *A6, A4
- || LDB .D2 *B6, B4
- NOP 4
- ; регистр куда запишется результат в виде 1 или 0 (true или false)
- MVK .S1 1, A5
- ; уферные регисты для хранения предыдущих значения массива
- MVK .S1 128, A7
- MVK .S2 -128, B7
- ; LDW .D1 *A7, A7
- ; || LDW .D2 *B7, B7
- NOP 4
- LOOP:
- ; счетчики
- SUB .L1 A2, 1, A2
- || ADD .L2 B2, 1, B2
- ; достаём элемент массива и записываем его в A4
- LDB .D1 *A3[A2], A4
- || LDB .D2 *B3[B2], B4
- NOP 4
- CMPGT .L1 A7, A4, A0
- || CMPGT .L2 B4, B7, B0
- ; NOT .L1 A0, A0
- ; || NOT .L2 B0, B0
- OR .L1 A0, B0, A0
- [!A0] SUB .L1 A5, 1, A5
- [!A0] B .S1 EXIT
- NOP 5
- SUB .S1 A4, 0, A7
- || SUB .S2 B4, 0, B7
- ; если в массиве больше нет значений, то заканчиваем программу
- SUB .L1 A2, B2, A0
- [!A0] B .S1 EXIT
- NOP 5
- ; следующая итерация
- B .S1 LOOP ;переход если A2 <> 0
- NOP 5
- EXIT:
Advertisement
Add Comment
Please, Sign In to add comment