2014-10-03 1 views

답변

1

해당 숫자가 하한보다 낮 으면 하나의 레지스터를 설정하고 상한보다 위에 있으면 다른 레지스터를 설정하십시오. 두 레지스터의 논리적 AND를 취합니다 (더 이상 필요하지 않으므로 방금 사용했던 레지스터 중 하나에 들어갈 수 있음). 결과에 분기하십시오.

테스트 할 숫자에 대해 인수 레지스터 $a0을 사용하고, 하한에는 $a1을, 상한에는 $a2을 사용합니다. 임시 레지스터 $t1$t2. 당신이 원하는대로 분기하는 beq 또는 bne을 사용할 수 있도록

slte $t0, $a1, $a0 # Sets $t0=1 if $a1 < $a0, otherwise $t0=0 
slte $t1, $a0, $a2 # Sets $t1=1 if $a0 < $a2, otherwise $t1=0 

and $t0, $t1, $t0 # Sets $t0=1 if $a1 < $a0 < $a2, otherwise $t0=0 

지금 $t0는 변수가 필요한 범위 내에서의 경우에만 1과 같다. 경계에 대해 신중히 생각하십시오. slte 대신 slt을 입력하십시오.

+0

조건부에 따라 레지스터를 설정하는 방법에 대해 혼란 스럽습니다. – ajkey94

+0

'sle $ rd, $ rs, $ rt' '$ rs'가'$ rt'보다 작 으면'$ rd'를 1로 설정합니다 – Daniel