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

nums 안에 음수가 더 많기 때문에 bpl을 사용한 코드가 더 빠르다

  • .BYTE $87 ,$60, $C2, $AC

사이클 수는 분기가 많으면 늘어난다. 음수가 많을 수록 음수일 때 분기하지 않는 코드가 유리하다!

데이터의 분포를 안다면, 효율적인 코드를 작성할 수 있다.

비교 연산의 상태 플래그

N / 비교 연산 / 레지스터의 값이 입력 값보다 작으면 켜짐

“A < M” 의 경우를 말한다.

Z / 비교 연산 / A 레지스터와 입력이 같으면 켜짐

“A == M” 의 경우를 말한다.

C / 비교 연산 / A 레지스터가 입력보다 크거나 같을 경우 켜짐

“A >= M”의 경우를 말한다.

jmp

절대 주소지정 모드 밖에 없다.

절대 주소지정 모드 로 굉장히 먼 코드까지 점프할 수 있다.

  • 그래서 피연산자로 2바이트 주소값이 들어간다.

PC 는 16비트

jmp 를 제외한 모든 절대 주소지정 모드 를 사용하는 명령어는 4사이클이다.

jmp 는 3사이클인가??

  • 상세 동작표를 보자

상세 동작표: jmp (절대 주소지정 모드)

상세 동작표 를 보면 “Fetch data1” 로 데이터를 읽어 오는데 1 사이클을 낭비한다.

jmp 는 데이터를 읽는 동작이 없기 때문에 바로 절대 주소로 점프한다.

cpx, cpy

그에 따라 주소지정 모드가 줄어듦

cmp 에서는 상대 주소지정 모드 를 사용할 수 있었다.

  • 이 때 색인으로 X 레지스터, Y 레지스터 를 사용했다.

cpx, cpy 는 주소지정 모드와 관계 없이 X 레지스터, Y 레지스터 를 사용하기 때문에 상대 주소지정 모드 를 사용할 수 없다.

반복문의 색인 비교에 적합

6502의 반복문은 거의 X 레지스터, Y 레지스터 를 반복문의 색인으로 사용한다.