Прикреплённый файл «Sort.asm»
Загрузка 1 .data
2 Arr: .space 100
3
4 .globl main
5 .text
6 main: # ввод и вывод
7 la t0 Arr
8 inloop: li a7 5
9 ecall
10 blez a0 indone
11 sw a0 (t0)
12 addi t0 t0 4
13 b inloop
14 indone: la a1 Arr
15 sub a0 t0 a1
16 jal sort
17 mv t0 a0
18 mv t1 a1
19 ouloop: lw a0 (t1)
20 li a7 1
21 ecall
22 li a7 11
23 li a0 '\n'
24 ecall
25 addi t1 t1 4
26 addi t0 t0 -4
27 bgtz t0 ouloop
28 oudone: li a7 10
29 ecall
30
31 sort: nop # общая подпрограмма
32 # a0 — размер массива
33 # a1 — начало массива
34 # a0 — размер выходного массива (того же самого :)
35 # a1 — начало выходного массива
36 .eqv FP -4(sp) # Смещения в кадре
37 .eqv .RA -8(fp) # для сохраняемых регистров
38 .eqv .S1 -12(fp)
39 .eqv .S2 -16(fp)
40 .eqv .ARR -20(fp) # Смещения в кадре
41 .eqv .SIZE -24(fp) # для локальных переменных
42 .eqv FSIZE -24 # Размер кадра
43 sw fp FP # Сохраняем кадр
44 mv fp sp # Создаём новый кадр
45 addi sp sp FSIZE # Переставляем стек
46 sw ra .RA # Сохраняем регистры
47 sw s2 .S2
48 sw s1 .S1
49
50 sw a0 .SIZE # Размер массива
51 sw a1 .ARR # Адрес массива
52
53 mv s2 a0 # Регистры типа $s* не меняются
54 mv s1 a1 # при вызовах функций
55 fnext: mv a0 s2
56 mv a1 s1
57 jal getmin
58 lw t0 (a0)
59 lw t1 (s1)
60 sw t0 (s1)
61 sw t1 (a0)
62 addi s1 s1 4
63 addi s2 s2 -4
64 bgtz s2 fnext
65
66 lw a0 .SIZE # Обращаемся к локальным переменным
67 lw a1 .ARR
68
69 lw ra .RA # Восстанавливаем регистры
70 lw s2 .S2
71 lw s1 .S1
72 mv sp fp # Восстанавливаем стек
73 lw fp FP # Восстанавливаем предыдущий кадр
74 ret
75
76 getmin: nop # концевая подпрограмма
77 # a0 — размер массива
78 # a1 — начало массива
79 # a0 — адрес минимального элемента
80 lw t0 (a1)
81 mv t2 a1
82 gmnext: addi a0 a0 -4
83 addi a1 a1 4
84 blez a0 gmfin
85 lw t1 (a1)
86 bge t1 t0 gmnext
87 mv t0 t1
88 mv t2 a1
89 j gmnext
90 gmfin: mv a0 t2
91 ret
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.Вам нельзя прикреплять файлы к этой странице.