2013-03-28 1 views
4

6502에서 설명서를 읽었을 때 어디에서나이 답변을 찾을 수있었습니다. 상대 주소 지정을 사용할 때 줄 바꿈이 가능합니다. 그러나 양쪽 끝을 감쌀 수 있습니까? 나는 그것이 가능하다고 생각하지만 가능성은 낮다.6502 상대 주소 모드 배치

그리고 양쪽 모두를 의미 할 때 높은 PC에서 낮은 PC로 랩핑 할 수 있다는 것을 알고 있습니다. 하지만 낮은 PC에서 높은 PC로 랩핑 할 수 있습니까?

답변

7

상대적 분기를 사용하여 페이지 경계를 초과하면 추가주기가 발생하지만 페이지 교차 분기가 순방향 분기인지 아니면 역방향 분기인지에 차이가 없습니다.

Visual6502에서 시도해 볼 수 있습니다. 주소 0000에 프로그램 A9 00 F0 EC (LDA #00/BEQ $FFF0)을 입력하고 코드를 한 단계 씩 실행하여 BEQ 다음에 끝나는 곳을 확인하십시오. 실제 하드웨어 만 믿는다면 Nintendo Entertainment System과 같은 것으로 쉽게 확인할 수 있습니다.

분명히 상대적 분기가있는 FF로 접근하려면 zeropage RAM을 실행해야하며 코드에 ZP RAM을 낭비하고 싶지는 않습니다. 가장 자주 액세스해야하기 때문에 데이터. 그래서 그것은이 특별한 시나리오를 만들지 않을 것입니다.

0

일반적으로 모듈러스 산술을 사용하여 고유 한 주소 계산을 수행 한 다음 절대 주소 지정에 결과를 사용할 수 있습니다.

+2

저는이 질문이 6502 행동에 관한 것이라고 생각합니다. Op는 아마도 일부 에뮬레이션 등으로 작업하고 있습니다. 나는이 대답이 그를 도와 줄 것이라고 생각하지 않습니다. –

3

예, 역방향으로도 작동합니다. 그러나 많은 어셈블러가이를 지원하지 않습니다. > $ ff80 영역을 주소 지정하는 zeropage 시작 부분에 분기 연산자를 넣으려고하면 어셈블러는 일반적으로 "오프셋이 너무 큼"과 같은 오류를 throw합니다. 하지만 바이트 값이 > 0002 f0 e0 인 opcode를 넣으려고하면 결과가 beq $ffe4이됩니다. 필자는 Commodore 64를 사용해 보았고 $ 0001을 사용하지 못했기 때문에 0002을 첫 번째 메모리 주소로 사용했습니다. 다른 6502 기반 컴퓨터의 경우 $ 0000도 괜찮습니다.