Предполагая, что приведенный выше код правильно отформатирован в файле, а не в одной строке, и игнорируя отсутствие кода в
# Rest of code omitted for brevity
И игнорируя, что вы не сказали, что он должен делать, или что он делает ...
Первое, что я вижу, если вы используете ветку main:
read_numbers: # Rest of code omitted for brevity...
beqz $v0, sort
j read_numbers
Но так как вы не установили v0 на что-либо, для него установлено любое значение, которое было установлено до вашего кода (и когда я запускаю его, не ноль)
Таким образом, он никогда не разветвляется на процедуру сортировки, переходит к read_numbers и выполняет бесконечный цикл.
Если он был в 'sort', он получит первое число из массива, которое равно 0 (если вы не заполнили массив каким-либо образом), увидите, что это было 0, и попытайтесь перейти к 'done', что также не нет в вашем коде.