008. 상대 주소지정 모드 복습 퀴즈 정답

nums 안에 음수가 더 많기 때문에 bpl을 사용한 코드가 더 빠르다
.BYTE $87 ,$60, $C2, $AC
사이클 수는 분기가 많으면 늘어난다. 음수가 많을 수록 음수일 때 분기하지 않는 코드가 유리하다!
데이터의 분포를 안다면, 효율적인 코드를 작성할 수 있다.
비교 연산의 상태 플래그

N / 비교 연산 / 레지스터의 값이 입력 값보다 작으면 켜짐
“A < M” 의 경우를 말한다.
Z / 비교 연산 / A 레지스터와 입력이 같으면 켜짐
“A == M” 의 경우를 말한다.
C / 비교 연산 / A 레지스터가 입력보다 크거나 같을 경우 켜짐
“A >= M”의 경우를 말한다.
jmp

절대 주소지정 모드 밖에 없다.
절대 주소지정 모드 로 굉장히 먼 코드까지 점프할 수 있다.
- 그래서 피연산자로 2바이트 주소값이 들어간다.
PC 는 16비트
- 6502의 주소핀이 16개다.
- 주소 핀
jmp 를 제외한 모든 절대 주소지정 모드 를 사용하는 명령어는 4사이클이다.
왜 jmp 는 3사이클인가??
- 상세 동작표를 보자
상세 동작표: jmp (절대 주소지정 모드)

상세 동작표 를 보면 “Fetch data1” 로 데이터를 읽어 오는데 1 사이클을 낭비한다.
jmp 는 데이터를 읽는 동작이 없기 때문에 바로 절대 주소로 점프한다.
cpx, cpy

그에 따라 주소지정 모드가 줄어듦
cmp 에서는 상대 주소지정 모드 를 사용할 수 있었다.
- 이 때 색인으로 X 레지스터, Y 레지스터 를 사용했다.
cpx, cpy 는 주소지정 모드와 관계 없이 X 레지스터, Y 레지스터 를 사용하기 때문에 상대 주소지정 모드 를 사용할 수 없다.
반복문의 색인 비교에 적합
6502의 반복문은 거의 X 레지스터, Y 레지스터 를 반복문의 색인으로 사용한다.
- 예시 에서 dex