문제

참고로, 코드는 Motorola 68008입니다.

다음과 같은 코드가 있다고 가정합니다.

org 200
sequenceO: ds.b 5
sequenceN: ds.b 5

move.w #sequenceO, A0
move.w #sequenceN, A1
  1. A0이 값 200과 A1을 값 205로 유지할 것이라고 생각하는 것이 맞습니까?

  2. 과거 논문의 시험 질문 중 하나는 "시퀀스 0과 시퀀싱의 물리적 주소는 무엇입니까?", 대답은 "200 및 205"일까요, 아니면 "200-204 및 205-209"일까요?

  3. 여러 조직 지시문이있는 몇 가지 코드를 보았습니다.

    org 100

    Array1 : Ds.B 4

    org 300

마지막 조직 지시문이 따랐다 고 생각하는 것이 옳습니다. 예를 들어이 경우 Array1은 300을 가리 킵니다.

도움이 되었습니까?

해결책

  1. 예, 제대로 들립니다. 주소 sequenceN 5 바이트 이상입니다 sequence0.
  2. "그다지 의존한다", 나는 ... 복수의 "주소"이기 때문에, 나는 그들이 전체 범위를 원한다고 생각한다.
  3. 아니요, 여러 가지를 기대할 것입니다 orgs는 다음과 같은 코드에 적용하기 만하면 array1 100 달러입니다. 후자 후에 코드 나 데이터 생성이 발생하지 않기 때문에 org, 그것은 기본적으로 어셈블러에 의해 무시됩니다.

다른 팁

"org"는 "Origin"을 의미한다고 가정합니다. 첫 번째 주소는 방출되는 코드 또는 데이터 세그먼트에 할당됩니다.

  1. 예, 200과 205

  2. Sequence0은 200에서 시작하여 5 바이트에서 204로 연장됩니다.

  3. 아니요, Array1은 100에서 시작합니다. 조직 300이 300에서 시작됩니다.

당신은 사용하고 있습니다 : MOVE.W #sequenceO, A0

따라서 주소의 하부 단어 (16 비트) 만로드하고 있습니다. A0. 그것은 매우 낮은 메모리에서만 작동합니다 ( A0 아래에 $00010000)

일반적으로 a를 사용합니다 MOVE.W 주소 레지스터에서는 까다로워집니다.

노력하다: LEA #sequence0, A0 (32 비트 주소를로드합니다 A0)

대부분의 어셈블러도 다음을 수행합니다.

MOVEA.L #sequence0, A0

감사합니다, Dave Small

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top