プログラムを再起動するには「Y」(メインに戻る分岐) または「N」(プログラムを終了する分岐) のいずれかをユーザーに入力させようとしています。syscall opcode 12 を使用して単一の文字を読み取っています
endCheck:
la $a0, newLine # Print the newLine
li $v0, 4
syscall
la $a0, endPrompt # print the Start over message
li $v0, 4
syscall
li $v0, 12 # take in char input
syscall
move $t0, $v0
lb $t1, ($t0) # Load the char byte into t1
beq $t1, 89, main # Go back to start if they entered 'Y'
bne $t1, 78, endCheck # Ask the user again because input was not 'N' or 'Y'
li $v0, 10
syscall
lb 行でエラーが発生しています。また、データ セグメントに 1 バイトのスペースを割り当て、入力を 1 文字の文字列として読み取った場合でも、無限ループが発生します (コンパイルが正しく行われると、常に endCheck に分岐します)。