2016-11-28 3 views
-1

"srl"명령어로 만든 나눗셈의 나머지를 레지스터에 유지하여 이진 값을 정수로 출력하는 방법을 알아내는 데 어려움이 있습니다.어셈블리 MIPS : 시프트로 10 진수를 2 진수로 변환

f.e. T1 우리 변환 할 수 있으면, 우리는 루프 내부를 분할하는 2 우측의 논리 시프트를 사용 나머지는 SRL 명령 후에 유지하고의 비트가 되감기 할 수있는 방법

loop: 
    srl  $t2, $t1, 2 #number/2 

    beq $t2, '0', exit  #if the quotient is 0, exit the loop 

j loop 

exit: 

남은 이진수를 출력 하시겠습니까?

+1

비트 '와'를 사용하십시오. 추신 :'2'에 의한'srl'은'2'로 나누지 않고'4'로 나눕니다. – Jester

+1

인쇄 방법? 정확히 어떤 종류의 결과를 원하십니까? 10 진수는 어떻게 나오나요? (저는 정수에 10 진수 문자열이 아닌 정수가 이미 있다고 생각했습니다)? –

+0

이미 t1에 정수가 있으므로 바이너리로 보이는 정수를 인쇄하고 싶습니다. f.e. 입력이 9이면 출력은 1001이어야합니다. – Coursal

답변

0

$ t1을 29 (31-2)만큼 왼쪽으로 이동 한 다음 오른쪽으로 다시 이동할 수 있습니다. 원래 $ t1에서 가장 낮은 두 비트를 남겨 둡니다.

물론 이것은 32 비트 정수 크기라고 가정합니다. 예를 들어

, 당신은 왼쪽 (29)에 의해 산출 그런 1000 0000 0000 0000 0000 0000 0000 0000 0000

에 쉬프트 값 5 그런 다음 당신이 0000 0000 0000 0000 0000 0000 0000 0101

시작 가정, 다시 이동 : 0000 0000 0000 0000 0000 0000 0000 0001 을 인 나머지.