fai conto di avere x in $a0, y in $a1 e z in $a2 spero che questi registri esistano tutti in questa architettura
Facciamo però il caso in cui x>=1, y>=1 e z>=1 perchè essendo interi unsigned non serve testarli per >=0 perchè sarebbe sempre verificato
il confronto lo puoi fare cosi:
slti $t0, $a0, 1 #decide se $a0 è minore di 1
slti $t1, $a1, 1 #decide se $a1 è minore di 1
slti $t2, $a2, 1 #decide se $a2 è minore di 1
and $t0, $t0, $t1 #fa la and di $t0 e $t1
and $t0, $t0, $t2 #fa la and del precedente con $t2
nor $t2, $t1, $t1 #preaparo una variabile negata di $t1
and $t1, $t1, $t2 #in $t1 ci sarà il valore FALSE
beq $t0, $t1, base #salta a base nel caso in cui in $t0 ci sia il valore FALSE
I comandi li ho trovati in questa pagina, quindi non so se sono giusti:
http://it.wikiversity.org/wiki/ISA_e_Li ... semby_MIPS
Sicuramente c'è qualche modo più furbo di fare la stessa cosa, ma non conosco l'architettura quindi mi sono arrangiato con quello che ho trovato. Attenzione che lavora in logica negata, quindi fa la and dei negati per far saltare fuori la or negata, secondo la legge di moore. Sapendo come è rappresentato il valore false sicuramente si può fare qualcosa di meglio