2013-02-17 6 views
-2

저는 어셈블리를 배우기 시작하고이 코드가 작동하는 데 어려움을 겪고 있습니다. 누군가 나를 도와 주면 대단히 감사하겠습니다.이동 및 추가로 13 * x 계산

main: 
ori $5,$0,x 
addu $10,$0,$5 
sll $5,3,shft 
addu $10, $0, $5 
sll $5,2,shft 
addu $10,$0 ,$5 

는 "13 *의 X를 계산하는 프로그램을 작성한다. (X)에 대한 $ 5 레지스터 사용 오라이 지시 프로그램의 시작 부분에로드하여이를 수행. X라고 가정 부호 이진수로 표시되는 양의 정수이다. 시프트와 덧셈을하여 13 * x를 계산하십시오. 명시 적 곱셈 명령어를 사용하지 마십시오. 입력 또는 출력을하지 마십시오. 결과가 프로그램 끝에 $ 10에 저장됩니다. x 값이 쉽게 될 수 있도록 프로그램을 작성하십시오 바뀌어. "

+0

13 * x를 계산하는 프로그램을 작성하십시오. x에 대해 $ 5 레지스터를 사용하고 ori 명령으로 프로그램의 시작 부분에 로드하여이 작업을 수행하십시오. x는 부호없는 2 진수로 표시된 양의 정수라고 가정합니다. 이동 및 추가하여 13 * x를 계산합니다. 명시 적 곱하기 명령어를 사용하지 마십시오. 입력 또는 출력하지 마십시오. 프로그램 끝에 $ 10 레지스터에 결과를 입력하십시오. x 값을 쉽게 변경할 수 있도록 프로그램을 작성하십시오. – user1984103

+2

다음은 13x = 8x + 4x + x입니다. –

답변

2

다음은 기본 단계입니다. 13x(8 + 4 + 1)x으로 동일하기 때문에, 당신은 (의사 코드)를 이동하므로 추가하여이 작업을 수행 할 수 있습니다

move x to accumulator. 

shift x left twice, it is now 4x. 
add x to accumulator. 

shift x left once more, it is now 8x. 
add x to accumulator. 

이제 누적는 13x을 보유하고 있습니다. 그렇게하기 위해서는 올바른 MIPS 지침을 찾아야합니다. 이것이 내가 위에서 지정한 순서대로 수행해야합니다 $5

수정 :-) 숙제처럼 보이는 막연하기 때문에 비록


나는, 당신이 잘못하고있는 몇 가지를 말씀 드리죠 . 왼쪽으로 3 개, 왼쪽으로 두 개 이동하면 2를 곱합니다. 또는 32입니다.

또한 이러한 인수 중 일부의 순서를 확인할 수도 있습니다. 예상대로 젤리처럼 보이지 않습니다.

+0

감사합니다. 이것은 나를 많이 도와 줬다. – user1984103

+0

@ user1984103 -이 게시물이 귀하의 질문에 답변 한 경우 [수락]하십시오 (http://meta.stackexchange.com/a/5235/159676). 당신이 물어 본 다른 질문들도 마찬가지입니다. – MByD