Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.