피연산자를 따로 적지 않아도, 내부적으로 어떤 피연산자를 사용하는지 알고 있다.

007. A 주소지정 모드와 비슷한데?

  • A 주소지정 모드가 묵시적 주소지정 모드의 특수한 경우라고 생각하면 되요
  • 그래서 두 주소지정 모드가 명령어를 완전히 이해하는데 걸리는 사이클이 비슷해요

nop

아무런 연산을 하지 않는 것이 왜 필요하지?

  • 딜레이

  • nop으로 빈 공간을 넣어두고, 나중에 교체할 수 있다. 코드의 크기를 유지하면서 코드를 바꾸는 효과?! 코드가 있는 메모리의 주소가 바뀌지 않을 수 있다.

  • 나머지 3, 4번 이유는 PPT 그대로

  • 번외로 내 컴퓨터가 바이러스가 걸렸는지 확인하는 방법에도 사용한다.

예 1: 딜레이를 넣고 싶을 때

하드웨어 제약 때문에 4사이클을 기다려야하면? nop 2번 사용

예 2 : 메모리 공간을 reserve 하고 싶을 때

”…”은 생략된 코드

nop0xEA기 때문에 .ORG $9000, $EA에서 0xEA로 채운다!

예 3: 디버깅 중 짜증 나는 코드를 지워버릴 때

ASSERT에 int 3 (interrupt 3)을 사용하는 경우가 많다.

어썰트에 실패하면 break point 걸린다.

디버깅 중 이 코드를 넘어가고 싶으면? 브레이크 포인트 안 걸리고 넘어가고 싶다는 거지

int 3(0xcc)를 nop(0x90)으로 바꾼다.

  • 0x90은 x86 기준입니다. 6502는 위에서 봤듯이 0xEA

그러면 브레이크 포인트에 걸리지 않고 넘어간다.

  • 실행 도중에 명령어를 지우는 개념

예 4: 프로그램의 끝을 표기할 때

근데 이건 권장 방식이 아니다!!