6502에서 설명서를 읽었을 때 어디에서나이 답변을 찾을 수있었습니다. 상대 주소 지정을 사용할 때 줄 바꿈이 가능합니다. 그러나 양쪽 끝을 감쌀 수 있습니까? 나는 그것이 가능하다고 생각하지만 가능성은 낮다.6502 상대 주소 모드 배치
그리고 양쪽 모두를 의미 할 때 높은 PC에서 낮은 PC로 랩핑 할 수 있다는 것을 알고 있습니다. 하지만 낮은 PC에서 높은 PC로 랩핑 할 수 있습니까?
6502에서 설명서를 읽었을 때 어디에서나이 답변을 찾을 수있었습니다. 상대 주소 지정을 사용할 때 줄 바꿈이 가능합니다. 그러나 양쪽 끝을 감쌀 수 있습니까? 나는 그것이 가능하다고 생각하지만 가능성은 낮다.6502 상대 주소 모드 배치
그리고 양쪽 모두를 의미 할 때 높은 PC에서 낮은 PC로 랩핑 할 수 있다는 것을 알고 있습니다. 하지만 낮은 PC에서 높은 PC로 랩핑 할 수 있습니까?
상대적 분기를 사용하여 페이지 경계를 초과하면 추가주기가 발생하지만 페이지 교차 분기가 순방향 분기인지 아니면 역방향 분기인지에 차이가 없습니다.
Visual6502에서 시도해 볼 수 있습니다. 주소 0000에 프로그램 A9 00 F0 EC
(LDA #00
/BEQ $FFF0
)을 입력하고 코드를 한 단계 씩 실행하여 BEQ
다음에 끝나는 곳을 확인하십시오. 실제 하드웨어 만 믿는다면 Nintendo Entertainment System과 같은 것으로 쉽게 확인할 수 있습니다.
분명히 상대적 분기가있는 FF로 접근하려면 zeropage RAM을 실행해야하며 코드에 ZP RAM을 낭비하고 싶지는 않습니다. 가장 자주 액세스해야하기 때문에 데이터. 그래서 그것은이 특별한 시나리오를 만들지 않을 것입니다.
일반적으로 모듈러스 산술을 사용하여 고유 한 주소 계산을 수행 한 다음 절대 주소 지정에 결과를 사용할 수 있습니다.
예, 역방향으로도 작동합니다. 그러나 많은 어셈블러가이를 지원하지 않습니다. > $ ff80 영역을 주소 지정하는 zeropage 시작 부분에 분기 연산자를 넣으려고하면 어셈블러는 일반적으로 "오프셋이 너무 큼"과 같은 오류를 throw합니다. 하지만 바이트 값이 > 0002 f0 e0
인 opcode를 넣으려고하면 결과가 beq $ffe4
이됩니다. 필자는 Commodore 64를 사용해 보았고 $ 0001을 사용하지 못했기 때문에 0002
을 첫 번째 메모리 주소로 사용했습니다. 다른 6502 기반 컴퓨터의 경우 $ 0000도 괜찮습니다.
저는이 질문이 6502 행동에 관한 것이라고 생각합니다. Op는 아마도 일부 에뮬레이션 등으로 작업하고 있습니다. 나는이 대답이 그를 도와 줄 것이라고 생각하지 않습니다. –