Я отвечаю сам.
Прежде чем читать ключ, вы должны выбрать строку. Следующая последовательность проверяет три строки (и это работает):
sub $0,$0,$0
lui $2,0xffff # Base address IO
main:
addi $ 3, $ 0,0x01 # бит 0 = 1 для строки 1 sb $ 3,0x0012 ($ 2) # Выбор строка 1 (запись в порт 0xFFFF 0012) lb $ 4,0x0014 ($ 2) # $ 4 = код нажатой клавиши строки 1 ($ 4 = 0, если не нажата) bne $ 4, $ 0, строка 1 #, если была нажата какая-то клавиша строки 1 - > go row1 # тест строки 2 и $ 3, $ 0,0x02 # бит 1 = 1 для строки 2 sb $ 3,0x0012 ($ 2)
фунт $ 4,0x0014 ($ 2)
bne $ 4, $ 0, row2 # тест строки 3 и $ 3, $ 0,0x04 # бит 2 = 1 для строки 3 sb $ 3,0x0012 ($ 2)
фунт $ 4,0x0014 ($ 2)
bne $ 4, $ 0, строка 3 # тест строки 4 addi $ 3, $ 0,0x08 # бит 3 = 1 для строки 4 sb $ 3,0x0012 ($ 2)
фунт $ 4,0x0014 ($ 2)
bne $ 4, $ 0, строка 4 j основная строка 1: # $ 4 имеет код: нажатая клавиша этой строки row2: # $ 4 содержит код нажатой клавиши этой строки row3: # $ 4 содержит код нажатой клавиши этой строки row4: # $ 4 содержит код нажатой клавиши этой строки