Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .align 2
- .globl main
- main:
- li $v0, 5
- syscall
- addi $s0, $v0, 0 #в s0 -- количество элементов массивов
- li $t0, 0 #счетчик"
- l0: #заполнение первого массива
- li $v0, 5 #считать с клавиатуры элемент массива arr1
- syscall
- sb $v0, arr1 + 0($t0) #записать его в память
- addi $t0, $t0, 1 #увеличить счетчик
- bne $t0, $s0, l0 #если счетчик не равен $s0, продолжить
- li $t0, 0 #обнуление счетчика
- l01: #заполнение второго массива
- li $v0, 5 #считать с клавиатуры элемент массива arr2
- syscall
- sb $v0, arr2 + 0($t0) #записать его в память
- addi $t0, $t0, 1 #увеличить счетчик
- bne $t0, $s0, l01 #если счетчик не равен $s0, продолжить
- li $t0, 0 #обнуление счетчика
- li $v0, 1 #записать в v0 единицу -- номер сикролла для последующего вывода массивов
- #подготовка регистров, в которые будут записаны минимумы массивов (t1 и t2)
- lb $t1, arr1 + 0($t0) #читать из памяти первый элемент arr1, записать его в t1
- lb $t2, arr2 + 0($t0) #читать из памяти первый элемент arr2, записать его в t2
- li $t0, 1 #в t0 поместить 1, чтобы начинать счетчик не с нуля. Нулевые элементы уже в v1 и v2
- l02: #поиск минимального элемента в массиве arr1
- lb $a0, arr1 + 0($t0) #читать из памяти элемент arr1
- bltu $a0, $t1, if1 #перейти к метке if1 если найден элемент меньше минимума
- branch1: ##метка безусловного перехода из ветки условного оператора, в которой меняется минимум
- addi $t0, $t0, 1 #увеличить счетчик
- bne $t0, $s0, l02 #пока не дойдем до конца массива arr1
- l03: #поиск минимального элемента в массиве arr2
- lb $a0, arr2 + 0($t0) #читать из памяти элемент arr2
- bltu $a0, $t2, if2 #перейти к метке if2 если найден элемент меньше минимума
- branch2: #метка безусловного перехода из ветки условного оператора, в которой меняется минимум
- addi $t0, $t0, 1 #увеличить счетчик
- bne $t0, $s0, l03 #пока не дойдем до конца массива arr2
- addu $s1, $t1, $t2 #сумма минимумов
- sra $s1, $s2, 1 #деление пополам
- addi $a0, $t1, 0 #вывод минимума arr1
- syscall
- addi $a0, $t2, 0 #вывод минимума arr2
- syscall
- jr $ra #конец
- .data
- .align 4
- arr1:
- .space 120
- arr2:
- .space 120
- if1:
- addi $t1, $a0, 0 #делаем минимумом arr1 то, что в a0
- b branch1
- if2:
- addi $t2, $a0, 0 #делаем минимумом arr2 то, что в a0
- b branch2
Add Comment
Please, Sign In to add comment