2011-11-21 3 views
0

PCspim을 사용하는 사용자로부터 입력 된 정수가 1-15의 숫자 만 입력되고 오류 메시지가 표시되지 않도록하려면 어떤 지시를해야하는지 궁금합니다.MIPS 어셈블리 - 1과 15 사이의 정수만 허용하는 방법?

나는 SLT와 같은 지시 사항을 읽었지만 정의를 이해하지 못했습니다. - ""$ s가 $ t보다 작 으면 $ d가 1로 설정됩니다. 그렇지 않으면 0이됩니다. ""제로를 인쇄하고 싶지 않습니다. ...

효율적으로 1보다 크지 만 15보다 작게하는 방법은 있습니까?

내가

beq $t0, 1, add_num  #if content in $t0 = 1, branch to add numbers 
    beq $t0, 2, add_num 
    beq $t0, 3, add_num 
    beq $t0, 4, add_num 
    beq $t0, 5, add_num etc...right up to 15. but this is soo inefficient 

답변

0

MIPS 프로세서는 기존의 조건 코드가없는 할 것입니다. 조건부 테스트는 지정한대로 레지스터의 내용을 1 또는 0으로 설정합니다. 그런 다음 0 레지스터에 대해 beq를 사용하여 결과 레지스터를 테스트 할 수 있습니다.

slt $t5, $t3, $t4    set $t5 = 1 if $t3 < $t4 
beq $t5, $zero, done    branch if $t5 = 0 

if here, $t3 < $t4 
1

가능한 모든 값에 대해 beq이 필요하지 않습니다. 범위 검사를 다음과 같이 사용할 수 있습니다 (약간의 수정이 필요할 수 있음) :

blez $t0, error_msg  ; disallow antyhing less than 1. 

addi $t0, $t0, -15   ; subtract 15 from t0, now 
          ; valid values are <= 0. 

bgtz $t0, error_msg  ; disallow anything greater than 15. 

addi $t0, $t0, 15   ; re-adjust 

...      ; add the numbers here