Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 2 Исходный файл программы lab1_part3_DE.s
/* Программа осуществляет поиск максимального числа в списке целых чисел. */
.equ LIST, 0x500 /* Адрес начала списка в памяти. Первый элемент списка будет содержать максимальное число, 2-ой - количество чисел в списке*/ .global _start _start: movia r4, LIST /* В регистр R4 записывается адрес начала списка */ ldw r5, 4(r4) /* Считываем в регистр R5 значение количества чисел в списке */ addi r6, r4, 8 /* Вычисляем адрес памяти, с которого начинают располагаться числа для поиска*/ ldw r7, (r6) /* В регистр R7 из памяти по адресу R6 считывается первое число списка */
LOOP: subi r5, r5, 1 /* Уменьшаем значение количества чисел в списке */ beq r5, r0, DONE /* Если значение регистра R5 равно 0, то выходим из цикла */
addi r6, r6, 4 /*Увеличиваем адрес памяти на 4 (переходим к следующему числу */
ldw r8, (r6) /* Считываем из памяти следующее число */
bge r7, r8, LOOP /* Если текущее максимальное число больше или равно считанному, то возвращаемся в начало цикла*/
add r7, r8, r0 /* Иначе, записываем в R7 новое максимальное число */
br LOOP DONE: stw r7, (r4) /* Записываем максимальное число в память по адресу 0x500 */
STOP: br STOP /* Бесконечный цикл */
.org 0x100 RESULT: .skip 4 /* Выделяем 4 байта для хранения максимального числа */ N: .word 7 /* Количество чисел в списке */ NUMBERS: .word 4, 5, 3, 6, 1, 8, 2 /* Числа из списка */
.end
|