2016-09-27 3 views
0

Mac-1 어셈블리 아키텍처의 시퀀스에서 피보나치 수를 N 번째 항까지 계산하는 비 재귀 프로그램을 작성했습니다. 내가 누적기에로드 한 N 값이 < = 2인지 비교할 필 요가있는 함수에 이르기까지는 모두 잘 돌아갑니다. 그러나 JUMP 실행은 JNEG (점프 값이 음수 인 경우) 및 JZER (값이 0 인 경우 점프). 기능에어 큐뮤 레이터 값을 어셈블리의 특정 양의 정수와 어떻게 비교합니까?

0001 One: 1  // Constant definition 
000A N: 10  // N 

내가 말할 수 있습니다 :

800y LODL y  // Loading N after its already been placed in the stack by offset y 
C0xx JNEG Finished // If the number is negative, we are finished 
50xx JZER Finished // If the number is zero, we are finished 

을하지만 N 만약 < =이 어떻게 말을 내가 가지고있는 경우

그래서 제 질문은? 나는 음수 또는 0에 대한 옵션 만 주어진다. 그러나 루프 내 기본 케이스에 N < = 2를 비교해야한다.

답변

1

참고

                                                 < 0 ∨ A = 0

- 2 ≤ 0 ⇒ - 5,583,210                                                    는 ≤ 2, A는 ⇒

두 조건 모두를 사용하여 테스트 할 수 있습니다. 그는 지시 사항을 사용할 수 있습니다. 당신이 if (a0 <= a1) ... else ...을 구현하려면


당신은 몇 가지 예 here도 있습니다

LODD a0    /Accumulator = a0 
SUBD a1    /Accumulator = a0 - a1 
jzer _THEN_branch /Jump to "then branch" if a0 == a1 
jneg _THEN_branch /Jump to "then branch" if a0 < a1 

/Put "else branch" code here 

jump _IF_end 

_THEN_branch: 

/Put "then branch" code here 

_IF_end: 

를 사용할 수 있습니다.

관련 문제