lda는 A 주소지정 모드가 아니라서 다음에 배운다.

1 사이클

Fetch 에서는 읽을 뿐이다. 아직 명령어 해석은 못했다.

2사이클

Decode로 0A를 해석한다.

  • ASL A로 이해했다.

동시에 다음 값 4a를 Fetch 한다.

3사이클

ASL A는 피연산자가 필요하지 않다. 따라서 2사이클에서 Fetch한 4A가 피연산자가 아님이 결정된다.

필요없기 때문에 2사이클에 Fetch한 4A는 버린다.

새로 Fetch해서 4A를 읽는다.

  • 이렇기 때문에 중복이 발생하는 구나

4 사이클

4A를 Decode 한다.

3사이클에서 Fetch 로 4A를 읽어온 것은 전 명령어 과정에서 수행한 것이라 사이클로 치지 않는다. 따라서 지금부터 4A는 1 사이클

동시에 다음 값 6A를 Fetch한다.

5 사이클

4A(lsr A)은 2 사이클 만에 실행됬다.

4 사이클에서 읽은 6A값은 버린다. lsr A는 피연산자가 없기 때문이다.

그리고 6A를 또 Fetch한다.

  • Fetch는 공짠데?

6 사이클, 7 사이클, 8사이클, 9사이클

표로 정리하자

단순화된 버젼이다.

완벽하게 6502 실제 하드웨어와 일치X

“PC++”: 그 다음 주소를 읽어야 하는지를 의미한다. Decode 해서 피연산자가 없으면 이것이 적용되지 않는다. 다음 사이클에 버린다.

회색 값들은 버리는 값을 의미한다.

하드웨어 핀에서 읽은 값과 비교

3사이클 상황

“Fetch 4A”는 공짜

“Decode” + “Execute” >> 이렇게만 카운트하기 때문에 2사이클

상세 동작표: A 주소지정 모드